1

我一直在尝试使用 openGL 制作小行星克隆,并且完全陷入了分段错误,我不确定如何修复。它似乎发生在函数 glGenBuffersARB() 的使用上。如果我使用顶点缓冲区注释掉这些行,程序编译并运行良好(但显然没有渲染)。我在 eclipse 上使用 minGW 编译器和 gdb 调试器,并尝试使用扩展,这样我就可以支持 1.5 之前的 OpenGL 版本。

glGenBuffers(1, &_VertexBufferObject);

glBindBufferARB( GL_ARRAY_BUFFER_ARB, _VertexBufferObject ); // Bind The Buffer

glBufferDataARB( GL_ARRAY_BUFFER_ARB, U8VertexCount*3*sizeof(GLfloat), quad,GL_STATIC_DRAW_ARB );

GLuint 在这样的标头中被声明为私有:

GLuint _VertexArrayObject;

GLuint _VertexBufferObject;

int U8VertexStride;

int U8VertexCount;

gdb 跟踪在这里:gdb trace

4

1 回答 1

0

我找到了解决问题的方法。似乎声明和使用对象并没有按照我的预期工作。我将对象声明为:CObj Obj;并像这样调用draw:Obj.Draw(); 当我切换到将其声明为指针时:CObj * Obj; 并像这样初始化它: Obj = new CObj(); 然后使用:Obj->Draw(); 开始按我想的那样工作。我不确定为什么会这样,如果有人能够为我解决这个问题,我将不胜感激。

于 2012-10-22T18:06:25.237 回答