我一直在尝试使用openGL制作小行星克隆并完全陷入分段错误我不确定如何修复。它似乎发生在函数glGenBuffersARB()的使用上。如果我使用vertexbuffer注释掉行,程序编译并运行正常(但很明显没有渲染)。我在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 );
在这样的标题中将GLuints声明为私有:
GLuint _VertexArrayObject;
GLuint _VertexBufferObject;
int U8VertexStride;
int U8VertexCount;
gdb跟踪在这里:gdb trace
答案 0 :(得分:0)
我找到了解决问题的方法。似乎声明和使用对象并没有像我预期的那样工作。我将对象声明为: CObj Obj; 并像这样调用draw: Obj.Draw(); 当我切换到将其声明为指针时: CObj * Obj; 并像这样初始化它: Obj = new CObj(); 然后使用: Obj->绘制(); 开始工作,因为我认为应该。我不确定为什么会这样,如果有人能够为我清除这一点,我将不胜感激。