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