a_l*_*ner 5 c++ opengl vector glm-math
我遇到以下问题。
我已将 8 个 glm::vec3 加载到 std::vector 中,这样:
std::vector <glm::vec3> vertices;
Run Code Online (Sandbox Code Playgroud)
返回:
0.250000 -0.250000 -0.250000
0.250000 -0.250000 0.250000 -0.250000 -0.250000 0.250000
-0.250000 -0.250000
-0.250000 0.250000 0.2500 00 -0.250000 0.250000 0.250000
0.250000
-0.250000 0.250000 0.250000 -0.250000
0.250000
-0.250000
如果:
for(int i{0}; i<8; i++){
std::cout<<"\n";
for(int j{0}; j<3; j++){
std::cout<<vertices[i][j]<<" ";
}
}
Run Code Online (Sandbox Code Playgroud)
当我将以下代码传递到 OpenGL 时,
glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * vertices.size(), &vertices[0], GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindVertexArray(buffer);
Run Code Online (Sandbox Code Playgroud)
我的着色器程序加载并打开窗口,但是没有立方体。
对第一行稍加改动,
glBufferData(GL_ARRAY_BUFFER, sizeof(vert), &vert, GL_DYNAMIC_DRAW); //Here
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindVertexArray(buffer);
Run Code Online (Sandbox Code Playgroud)
在获取向量时,
const GLfloat vert[9] =
{-0.5,-0.5, 0.0,
0.0, 0.5, 0.0,
0.5,-0.5, 0.0};
Run Code Online (Sandbox Code Playgroud)
屏幕上绘制了一个漂亮的红色三角形。
我的问题: 是否可以将矢量容器与 glm 结合使用?如果可以,如何实施?
我的假设:glVertexAttribPointer 函数从顶点容器的起始地址顺序读取。顶点容器的元素在我的记忆中都是支离破碎的。
在你glBufferData()
&vertices[0]
应该是,&vertices[0].x
。
那是因为&vertices[0]
指向 a,glm::vec3
但您希望它指向 a float
,因为这是 OpenGL 所期望的。
归档时间: |
|
查看次数: |
19065 次 |
最近记录: |