我在初始化上下文之前创建对象时遇到问题。我的代码看起来像这样:
..
Vertex vertices[] = { ... } // declaration of object Vertices
Mesh mesh(vertices, sizeof(vertices)/sizeof(vertices[0]));
..
..
void onDisplay()
{
..
mesh.Draw();
..
}
void init() { .. }
int main(int argc, char** argv)
{
..
glutDisplayFunc(onDisplay);
..
}
正如我在OpenGL site上所读到的,问题是在初始化上下文之前创建了一个Object(因为构造函数中的代码)。如果我将#34;网格"和"顶点"在" void init()",这将解决问题,但我无法使用方法" mesh.Draw()" in" void onDisplay" - 因为对象网格不是全局的,所以它只在init()中声明。
在OpenGL网站上,他们讲述了如何解决这个问题,但我真的不明白我应该做些什么。
OpenGL网站的解决方案如下:
不建议使用解决方案1,解决方案2对我没有帮助(至少我认为没有),我不知道如何制作解决方案3
答案 0 :(得分:1)
将vertices
和mesh
更改为(智能)指针,并在保护GL上下文后在main()
中构建对象。
如果您不想更改现有代码(.
至->
以获取成员访问权限),可以将其称为verticesPtr
和meshPtr
并创建本地代码引用(Mesh& mesh = *meshPtr;
)位于您引用它们的函数的顶部。