当我调用glBindTexture(GL_TEXTURE_2D,_ID)时程序冻结;在'Renderer'类的draw(Sprite)方法中。 (实际代码是sprite.getTexture() - > bind(),但我在glBindTexture()调用之前和之后在该函数中添加了一个std :: cout,它只打印一次)。
我正在努力理解程序冻结的原因 - 当我调用glBindTexture时,程序没有响应并崩溃。不是用一长串代码填写这个页面,而是指向github的链接:https://github.com/TheInfernalcow/OpenGL-game,相关的文件主要是src / graphics / renderer.cpp和src / graphics / texture.cpp。
如果有人有时间阅读代码并试着指出我正确的方向,我将不胜感激,一直在思考这个问题几个小时。
答案 0 :(得分:0)
问题是Splashstate
吗?如果是的话 -
SplashState::SplashState(Game* game)
{
_game = game;
Texture2D backgroundTexture("res/darkguy.png", 96, 128);
Sprite _background;
_background.setTexture(backgroundTexture);
}
您正在为本地范围的Sprite
分配纹理,而不是SplashState
上的纹理 - 所以当您尝试在渲染函数中绘制它时,类级Sprite
没有纹理。