После поиска и чтения о Modern OpenGL, чтобы обновить мой существующий проект, я немного смущен, поскольку моя 3D-платформа основана на OpenGL 2.1.Современные OpenGL: VBO, GLM и Matrix Stacks
так, насколько я узнаю ...
Мы должны генерировать наши Vertex-буфера объектов из вершин, индексов, нормалей, цветов, УВС и т.д.
затем мы можем использовать GLM для преобразования матрицы, и мы используем только VBO для создания или манипулирования сетках, в конце концов мы передаем все в GLSL вершинного шейдера, как это ...
glm::mat4 MVP = projection * view * model; 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); //instead of ftransform(); // }
ВОПРОС: Как мы осуществляем иерархические преобразования без pushMatrix/popMatrix? (или, возможно, мы делаем иерархическое преобразование, используя наши VBOs, возможно ли это?)
Если это невозможно, то как достичь такого же результата, как pushMatrix/popMatrix, используя GLM и C++ < stack> library?
Допустим, мне нужно что-то вроде этого:
> 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
@ BЈовић: [OpenGL Mathematics (GLM)] (http://glm.g-truc.net/), только для C++ библиотеки для матричной/векторной математики. – genpfault