delete m_program; // addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShaderSource);
m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShaderSource);
m_program->link();
// Create a VAO. Not strictly required for ES 3, but it is for plain OpenGL.
delete m_vao; // create())
m_vao->bind();
m_program->bind();
delete m_vbo; // create();
m_vbo->bind();
В чем смысл этой практики? Почему перед созданием объекта необходимо удалить nullptr? Обратите внимание, что в коде эти объекты еще не созданы на момент вызова метода delete.
Я изучаю OpenGL с Qt6 и наткнулся на некоторые примеры. С точки зрения C++ мое внимание привлекает следующий фрагмент кода. [code]delete m_program; // addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShaderSource); m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShaderSource); m_program->link();
// Create a VAO. Not strictly required for ES 3, but it is for plain OpenGL. delete m_vao; // create()) m_vao->bind();
m_program->bind(); delete m_vbo; // create(); m_vbo->bind(); [/code] где [code]QOpenGLShaderProgram *m_program = nullptr; QOpenGLBuffer *m_vbo = nullptr; QOpenGLVertexArrayObject *m_vao = nullptr; [/code] В чем смысл этой практики? Почему перед созданием объекта необходимо удалить nullptr? Обратите внимание, что в коде эти объекты еще не созданы на момент вызова метода delete.