Textures 释放纹理后如何使用它?

Textures 释放纹理后如何使用它?,textures,lwjgl,Textures,Lwjgl,这听起来可能是个奇怪的问题,但在这种情况下我无法理解纹理。我正在为班级做一个游戏,在这个游戏中,你可以让一只老鼠穿过迷宫,如果你碰到一堵墙,你就会输 在标题屏幕之后,有一个过渡,玩家被指示在开始之前将鼠标放在一个正方形上,以便他们在正确的位置开始。这个正方形有纹理。需要释放纹理才能绘制迷宫。触摸墙壁后,屏幕上会出现一个纹理矩形,填充游戏显示屏。然而,即使我告诉它在绘制之前绑定正方形的纹理,但在gameover屏幕之后,它看起来没有纹理。我怎样才能解决这个问题 case TRANSITION:

这听起来可能是个奇怪的问题,但在这种情况下我无法理解纹理。我正在为班级做一个游戏,在这个游戏中,你可以让一只老鼠穿过迷宫,如果你碰到一堵墙,你就会输

在标题屏幕之后,有一个过渡,玩家被指示在开始之前将鼠标放在一个正方形上,以便他们在正确的位置开始。这个正方形有纹理。需要释放纹理才能绘制迷宫。触摸墙壁后,屏幕上会出现一个纹理矩形,填充游戏显示屏。然而,即使我告诉它在绘制之前绑定正方形的纹理,但在gameover屏幕之后,它看起来没有纹理。我怎样才能解决这个问题

case TRANSITION:

            IndicatorBeacon.bind();


            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
            glVertex2i(50, 50); //top left 
            glTexCoord2f(0, 1);
            glVertex2i(50, 100); //bottom left
            glTexCoord2f(1, 1);
            glVertex2i(100, 100); // bottom right 
            glTexCoord2f(1, 0);
            glVertex2i(100, 50); // top right
            glEnd();
            break;

 case MAZE:

            IndicatorBeacon.release();

            Maze1.draw();
            Maze2.draw();
            Maze3.draw();
            Maze4.draw();
            Maze5.draw();
            Maze6.draw();
            Maze7.draw();
            Maze8.draw();
            Maze9.draw();
            Maze10.draw();
            break;

case GAMEOVER:


            GameOver.bind();

            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
            glVertex2i(0, 0); //top left
            glTexCoord2f(0, 1);
            glVertex2i(0, 520); //bottom left
            glTexCoord2f(1, 1);
            glVertex2i(1050, 520); // bottom right 
            glTexCoord2f(1, 0);
            glVertex2i(1050, 0); // top right
            glEnd();
            break;

也许我不对,但我认为你应该重新加载纹理

如果你不知道怎么做,我会帮你的

如果没有用于加载的函数,请执行如下操作:

public void loadData(){
试一试{
exampleTexture=TextureLoader.getTexture(“PNG”,新文件输入流(新文件(“res/textures/example.PNG”));
}catch(filenotfounde异常){
e、 printStackTrace();
Display.destroy();
}捕获(IOE异常){
e、 printStackTrace();
Display.destroy();
}
}
从现在起,您可以重新加载纹理、声音等

好的,我们已经加载了,但是我建议你不要像那样使用OpenGL函数,把它们放到函数中

public void drawStartSquare(){
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2i(50,50);//左上角
glTexCoord2f(0,1);
glVertex2i(50100);//左下角
glTexCoord2f(1,1);
glVertex2i(100100);//右下角
glTexCoord2f(1,0);
glVertex2i(100,50);//右上角
格伦德();
}
公营部门{
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2i(0,0);//左上角
glTexCoord2f(0,1);
glVertex2i(0520);//左下角
glTexCoord2f(1,1);
glVertex2i(1050520);//右下角
glTexCoord2f(1,0);
glVertex2i(1050,0);//右上角
格伦德();
}
所以,从现在开始,你可以这样说:

案例转换:
loadData();
IndicatorBeacon.bind();
drawStartSquare();
打破
案例结束:
loadData();
GameOver.bind();
drawGameOverRect();
打破

我希望这能起作用。

这确实很有魅力。我还没有在函数中加载纹理,一旦我将其放入函数中,我可以在必要时调用它来重新加载纹理,以便在释放纹理后再次绑定它们。非常感谢。