我想加載一個對象並使用VBO和glDrawArrays()來渲染它。問題是像我的情況下,一個簡單的浮點指針如float f[]={...}
不起作用,因爲我通過了該指針可以存儲的值的限制。所以我的解決方案是使用矢量。而且它不工作...OpenGL:使用VBO與std :: vector
這裏是我的代碼:
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
但它不起作用。
非常感謝。 –
爲了更好的可移植性,最好使用'vert.size()* sizeof(float)'作爲size參數。 – Kevin
@Kevin事實上,使用vert.size()根本不起作用。只有1/4的VBO將被呈現 – KaareZ