【发布时间】:2014-04-16 11:17:39
【问题描述】:
我正在使用带有 g++ 的 OpenGL。这个简单的代码在我的系统中运行良好。它按预期绘制了一个矩形。
GLfloat vertices[] =
{
0,0,0, //0
0,6,0, //1
6,6,0, //2
6,0,0, //3
};
GLint indices[] = {0,1,2,3};
glColor3f(1,0,0);
glVertexPointer (3, GL_FLOAT, 0, vertices);
glDrawElements(GL_QUADS, 4, GL_UNSIGNED_INT, indices);
但在我朋友的系统中,它给出了分段错误。
我将GL_UNSIGNED_INT 更改为GL_INT。那么至少它没有给出分段错误,但它没有渲染任何东西。
这可能是什么原因?
【问题讨论】:
-
这里有很多可能与此相关的 GL 状态。例如,您是否启用了其他数组?
-
我有
glEnableClientState (GL_COLOR_ARRAY);和glEnableClientState (GL_VERTEX_ARRAY);。我还需要别的吗? -
在上面的代码中,没有颜色数组。因此,如果您在之前的某个绘图调用中仍然启用了此功能,则必须明确禁用它。
-
如果您发布更多相关代码会更有意义。由于 OpenGL 充当状态机,因此我们可能会错过查看代码的 sn-p 的很多内容。
标签: c++ opengl segmentation-fault vertex-array gldrawarrays