【问题标题】:OpenGL glBindTexture() crashOpenGL glBindTexture() 崩溃
【发布时间】:2015-12-03 15:32:37
【问题描述】:

当我调用 glBindTexture(GL_TEXTURE_2D, _ID); 时程序冻结在“渲染器”类的 draw(Sprite) 方法中。 (实际代码是 sprite.getTexture()->bind(),但我在 glBindTexture() 调用前后在该函数中添加了一个 std::cout,它只打印一次)。

我很难理解程序冻结的原因 - 当我调用 glBindTexture 时,程序没有响应并崩溃。与其用一长串代码来归档这个页面,这里是 github 的链接:https://github.com/TheInfernalcow/OpenGL-game,相关的文件主要是 src/graphics/renderer.cpp 和 src/graphics/texture.cpp。

如果有人有时间通读代码并尝试为我指明正确的方向,我将不胜感激,我已经思考了好几个小时了。

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    是Splashstate 有问题吗?如果是这样 -

    SplashState::SplashState(Game* game)
    {
        _game = game;
        Texture2D backgroundTexture("res/darkguy.png", 96, 128);
        Sprite _background;
        _background.setTexture(backgroundTexture);
    }
    

    您将纹理分配给局部范围的Sprite,而不是SplashState 上的纹理——因此当您尝试在渲染函数中绘制它时,类级别Sprite 没有纹理。

    【讨论】:

    • 是的,删除'Sprite _background'行解决了问题不知道为什么我声明了两次
    • 它发生了(尤其是在咖啡之前)!可以标记为已解决吗?
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多