【发布时间】:2012-01-21 07:51:12
【问题描述】:
在搜索和阅读有关 Modern OpenGL 以升级我现有的项目后,我有点困惑,因为我的 3D 框架基于 OpenGL 2.1。
所以,据我所知...
我们需要从顶点、索引、法线、颜色、uvs 等生成我们的 Vertex-Buffer-Objects。
-
然后我们可以使用 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 的情况下进行分层转换? (或者也许我们通过使用我们的 VBO 来进行分层转换,这可能吗?)
如果不可能,那么如何使用 GLM 和 C++
假设我需要这样的东西:
> 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),用于矩阵/向量数学的仅标头 C++ 库。
标签: c++ opengl matrix glsl vbo