После поиска и чтения о Modern OpenGL, чтобы обновить мой существующий проект, я немного запутался, так как мой 3D фреймворк основан на OpenGL 2.1.
Итак, насколько я понял...
нам нужно сгенерировать наш Vertex-Buffer-Objects из вершин, индексов, нормалей, цветов, uvs и т.д.
затем мы можем использовать GLM для матричного преобразования, и мы используем VBO только для создания или манипулирования сетками, наконец, мы передаем все в GLSL вершинный шейдер следующим образом...
glm::mat4 MVP = проекция * вид * модель;
glUniformMatrix4fv(glGetUniformLocation(shaderProgramID, "MVP"), 1, GL_FALSE, glm::value_ptr(MVP)); //or &MVP[0][0]
// uniform mat4 MVP;
// in vec3 Vertex;
// void main(void)
// {
// gl_Position = MVP * vec4(Vertex, 1.0); // вместо ftransform();
// }
ВОПРОС: Как сделать иерархические преобразования без pushMatrix/popMatrix? (или мы можем делать иерархические преобразования, используя наши VBO, возможно ли это?)
Если нет, то как достичь того же результата, что и pushMatrix/popMatrix, используя GLM и библиотеку C++ < stack >?
Допустим, мне нужно что-то вроде этого:
> Set identity
> Translate to X, Y, Z
> Draw Mesh 1
> Rotate 0.5 by X axis
> Draw Mesh 2
> Scale down to 0.1
> Draw Mesh 3