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