OpenGL glBindTexture() 崩溃

Posted

技术标签:

【中文标题】OpenGL glBindTexture() 崩溃【英文标题】:OpenGL glBindTexture() crash 【发布时间】: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。

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

【问题讨论】:

【参考方案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'行解决了问题不知道为什么我声明了两次 它发生了(尤其是在咖啡之前)!可以标记为已解决吗?

以上是关于OpenGL glBindTexture() 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL,禁用纹理单元、glActiveTexture 和 glBindTexture

C++学习(二七四)undefined reference to `glBindTexture‘

OpenGL设置纹理图片

OpenGL设置纹理图片

openGL SubTexturing

OpenGL学习——纹理