Opengl 从缓冲区上载和绘制
好的,我有一个x,y,z值的Opengl 从缓冲区上载和绘制,opengl,Opengl,好的,我有一个x,y,z值的向量,我正在尝试使用opengl渲染它,有些东西不工作,我想知道我做错了什么,所以请帮助 这就是我生成缓冲区的方法 GLUint buffer; int length = data.points.size() * 3 * sizeof(float); glGenBuffers(1, &buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, length, &
向量,我正在尝试使用opengl渲染它,有些东西不工作,我想知道我做错了什么,所以请帮助
这就是我生成缓冲区的方法
GLUint buffer;
int length = data.points.size() * 3 * sizeof(float);
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, length, &data.points[0], GL_STATIC_DRAW);
我就是这样画的:
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glVertexPointer(3, GL_FLOAT, 0, (char *)NULL);
glDrawArrays(GL_POINTS, 0, buffer);
glDisableClientState(GL_VERTEX_ARRAY);
怎么了?的第三个参数是错误的。您需要在那里传递顶点的数量,在您的情况下可能是data.points.size()
data.points
实际上是一个浮点向量,就像你第一句话所说的,还是一个点结构的向量?如果只是浮点数,其中3个总是一个点,那么与3的乘法计算length
看起来也很可疑。在这种情况下,长度将只是data.points.size()*sizeof(float)
,作为第三个参数传递给glDrawArrays
的点数将是data.points.size()/3
?我修改了我的代码来修复你的建议,但仍然没有绘图。我没有看到你发布的代码中有任何其他问题。如果它没有画任何东西,可能有很多原因。最常见的情况是,几何体不在摄影机的视野内。您是否在某处为点设置颜色?我有时做的一件事是使用除黑色以外的清晰颜色。这会告诉你你是在画黑点,还是根本没有点。是的,我的相机很好,它看起来像是画了一个点,其他什么都没有。。。一切都在眼前,我想我必须继续检查