3

3Dゲームを作成するためにLWJGL/OpenGLを学び始めたばかりなので、小さく始めて、線(2D)の単純な表示を作成しようとしました。ウィンドウは適切なサイズで正常に読み込まれますが、ディスプレイには何も表示されません。空白の画面があり、コードに加えた変更は画面に描画されるものに影響を与えないようです。これは、これを正しく行う方法を理解していないか、コード/コンピューターに問題がある可能性があります。glEnable(GL_TEXTURE_2D)やglDisable(GL_TEXTURE_2D)など、初期化コードにさまざまなものを追加および削除しようとしました。レンダリングコードでpushMatrixとpopMatrixを呼び出してみましたが、GL11初期化コードでビューポートを定義しようとしましたが、何もしませんでした。動作しているようです。私のコードは次のとおりです。

import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;

public class Main {
    public Main(String[] args) throws LWJGLException{
        Logging.info("Starting up "+Info.title+" v"+Info.version+"!");
        initDisplay();
        initGL11();
        startGameLoop();
    }
    public static void main(String[] args) throws LWJGLException{
        new Main(args);
    }
    public void initDisplay(){
        try {
            Logging.info("Initializing display...");
            Display.setDisplayMode(new DisplayMode(800, 600));
            Display.setTitle(Info.title);
            Display.create();
            Logging.info("Display initialized!");
        } catch (LWJGLException e) {
            Logging.severe(e);
            Display.destroy();
        }
    }
    public void initGL11() throws LWJGLException{
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0f, 800f, 600f, 0f, 0f, 1f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    }
    public void startGameLoop(){
        while(!Display.isCloseRequested()){
            glBegin(GL_LINE);
                glColor3f(1f,0f,0f);
                glVertex2f(0f,0f);
                glVertex2f(1f,1f);
            glEnd();

            Display.update();
            Display.sync(60);
        }
        Logging.info("Closing down!");
        Display.destroy();
        System.exit(0);
    }
}

LoggingクラスとInfoクラスは、System.outを制御し、静的変数を格納するいくつかのクラスへの静的参照にすぎません。これらはLWJGLやOpenGLには影響しないので、それらを含めることにあまり意味がありませんでした。

ビルドパスには、 lwjgl.jarlwjgl_util.jar、およびslick_util.jarがあり、ネイティブはlwjgl.jarに正しくリンクされています。プロジェクトの開始時にエラーは発生せず、出力は正常です。なぜまだ黒い画面が表示されるのか気づいていません。使用する場合は、このチュートリアルシリーズに従ってプロジェクトを作成していますが、ビデオでは正常に機能しているようです。

4

2 に答える 2

1
glOrtho(0f, 800f, 600f, 0f, 0f, 1f);
...
glVertex2f(0f,0f);
glVertex2f(1f,1f);

近くのクリッピング平面と一致しないジオメトリを送信してみてください。

または、近くのクリッピング平面を調整します。

glOrtho(0f, 800f, 600f, 0f, -1f, 1f);

また、フレームバッファをときどきクリアすることをお勧めします。

于 2013-01-16T21:17:44.023 に答える
1

を呼び出すのを忘れていますglClear(GL_COLOR_BUFFER_BIT)。描画する前に必ず呼び出す必要があります。

于 2013-01-17T21:22:21.907 に答える