Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 从缓冲区上载和绘制_Opengl - Fatal编程技术网

Opengl 从缓冲区上载和绘制

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, &

好的,我有一个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, &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

?我修改了我的代码来修复你的建议,但仍然没有绘图。我没有看到你发布的代码中有任何其他问题。如果它没有画任何东西,可能有很多原因。最常见的情况是,几何体不在摄影机的视野内。您是否在某处为点设置颜色?我有时做的一件事是使用除黑色以外的清晰颜色。这会告诉你你是在画黑点,还是根本没有点。是的,我的相机很好,它看起来像是画了一个点,其他什么都没有。。。一切都在眼前,我想我必须继续检查