嗨,这是我的第一篇文章。我已经使用LWJGL了一段时间,我正在开发一款碰巧有全屏按钮的游戏。当点击它时,游戏进入全屏,但纹理不会将其绑定为白色屏幕。
以下是全屏转换代码的代码,我怀疑问题出在哪里:
package lifeLine.game;
import static org.lwjgl.opengl.GL11.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
public class FullscreenManager {
boolean fsState;
GameLoop gameLoop;
public FullscreenManager(GameLoop gl, boolean defaultState) {
gameLoop = gl;
fsState = defaultState;
Display.destroy();
try {
Display.setFullscreen(fsState);
Display.setDisplayMode(new DisplayMode(gameLoop.WIDTH, gameLoop.HEIGHT));
Display.setTitle("Life Line: 1.0");
Display.create();
} catch (LWJGLException e){
e.printStackTrace();
}
initGL();
}
public void toggleFullscreen() {
Display.destroy();
try {
Display.setDisplayMode(new DisplayMode(gameLoop.WIDTH,gameLoop.HEIGHT));
Display.setFullscreen(!fsState);
Display.create();
Display.setVSyncEnabled(true);
fsState = !fsState;
} catch (LWJGLException e){
Logger.getLogger(GameLoop.class.getName()).log(Level.SEVERE, null, e);
}
initGL();
}
public void setFullscreen(boolean state) {
try {
Display.destroy();
if (!state) {
Display.setDisplayMode(new DisplayMode(gameLoop.WIDTH, gameLoop.HEIGHT));
}
fsState = state;
Display.setFullscreen(state);
Display.create();
Display.setVSyncEnabled(true);
} catch (LWJGLException e){
Logger.getLogger(GameLoop.class.getName()).log(Level.SEVERE, null, e);
}
initGL();
}
private void initGL() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, gameLoop.WIDTH, 0, gameLoop.HEIGHT, -1, 1);
glMatrixMode(GL_MODELVIEW);
glClearColor(0, 0, 0, 1);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
}
这会导致其中一个全屏功能出现空白。
请帮忙!
提前致谢。