【发布时间】:2013-01-09 11:36:58
【问题描述】:
我正在尝试加载一个对象并使用 VBO 和 glDrawArrays() 来渲染它。问题是像float f[]={...} 这样的简单浮点指针在我的情况下不起作用,因为我通过了该指针可以存储的值的限制。所以我的解决方案是使用向量。而且它不工作......
这是我的代码:
unsigned int vbo;
vector<float*> vert;
...
vert.push_back(new float(i*size));
vert.push_back(new float(height*h));
vert.push_back(new float(j*size));
...
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vert), &vert, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
并渲染:
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
我在glBufferData() 上遇到问题,其中第三个参数是const GLvoid *data。我正在传递 &vert 但它不起作用。
【问题讨论】:
标签: c++ opengl pointers stdvector vbo