【问题标题】:glDrawElements not working in the other machineglDrawElements 在另一台机器上不起作用
【发布时间】: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


【解决方案1】:

仔细阅读您的文档

别忘了glEnableClientState(GL_VERTEX_ARRAY);

【讨论】:

  • 我已经添加了这个。这就是它在我的系统中工作的原因。
  • 那么你的问题是什么?
  • 当我在我朋友的系统上运行它时,它会提供segmentation fault
  • 请更正有问题的代码(添加 glEnableClientState)并提供您朋友所拥有机器的一些信息。
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 2018-01-06
  • 2015-07-23
  • 1970-01-01
相关资源
最近更新 更多