gl 调用以 EXC_BAC_ACCESS 结束 - 错误的 opengl 上下文?

发布于 2024-09-27 16:07:52 字数 887 浏览 1 评论 0原文

我有以下程序

void allocVars(){
    m_window = new GLWindow(); //glGenTexture() is called //CRASH!
    m_window->Init(m_cam.w, m_cam.h, "Window Name"); 

}
void glInit()
{
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutDisplayFunc(display);

    glBlendFunc(GL_SRC_ALPHA, GL_ONE); //CRASH!
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);

    glInit(); // CRASH HERE
    camInit(); //ok
    allocVars(); // CRASH HERE

    trackingInit();

    glutMainLoop();


    return 0;

}

根据其他帖子,为了进行 gl 调用,我必须首先有一个有效的 openGL 上下文。 (由于 Windows 中的奇怪原因,即使上下文尚未有效,它也能工作。) 这就是为什么我将所有内容移到 glutInit 和 glInit 函数之后,但该应用程序总是在 gl 函数中崩溃,例如 allocVars() 内的 glGenTextures() ;在 GLWindow() 中;或在 glInit() 内部的 glBlendFunc()

我想知道我在这里缺少什么和/或如何检查我是否有一个有效的 opengl 上下文?

提前致谢

I have the following program

void allocVars(){
    m_window = new GLWindow(); //glGenTexture() is called //CRASH!
    m_window->Init(m_cam.w, m_cam.h, "Window Name"); 

}
void glInit()
{
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutDisplayFunc(display);

    glBlendFunc(GL_SRC_ALPHA, GL_ONE); //CRASH!
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);

    glInit(); // CRASH HERE
    camInit(); //ok
    allocVars(); // CRASH HERE

    trackingInit();

    glutMainLoop();


    return 0;

}

Acccording to other posts, in order to make gl calls I have to have a valid openGL context first. (For strange reasons in Windows it works even if the context is not valid yet.)
That is why I move everything after glutInit and glInit functions but this application always crashes in gl functions like
glGenTextures() inside of allocVars(); in GLWindow(); or in
glBlendFunc() inside of glInit()

I wonder what am I missing here and/or how can I check I have a valid opengl context?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住你手 2024-10-04 16:07:52

答案在评论里↑

answer is in the comments ↑

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文