LWJGL在全屏切换纹理时不显示

时间:2014-10-25 00:25:51

标签: java textures fullscreen lwjgl

嗨,这是我的第一篇文章。我已经使用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);

    }

}

这会导致其中一个全屏功能出现空白。

请帮忙!

提前致谢。

0 个答案:

没有答案