1

Java で LWJGL と OpenGl を使用して単純な 2D ゲームを作成していますが、複数のクワッドをレンダリングできないようです。

メインクラスに配列Squaresリストがあり、リストに複数の Square がある場合、リストの最後の 1 つだけをレンダリングし、他のものはレンダリングできません (Square の名前をデバッグして印刷しました。それらを適切にレンダリングしますが、何らかの理由で最後のもの以外はレンダリングしないことにしました)。したがって、私が考えることができる唯一のことは、SquareクラスDrawメソッド (クワッドをレンダリングするためだけにそのメソッドを使用するため) または OpenGL 設定コードに問題があるということです。

これと lwjgl の wiki ページを主にフォローしているので、私のコードはこのビデオの内容と非常によく似ています: http://www.youtube.com/watch?v=EjbOjio_pC4

スクエアクラス:

package dasting;

import org.lwjgl.*; //lwjgl engine
import org.lwjgl.opengl.*; //opengl
import static org.lwjgl.opengl.GL11.*; //Dunno yet, youtube said so
import org.lwjgl.LWJGLException; //Allows tries and catches with exception handling for LWJGL (IMPORTANT SHIT)
import java.util.Random; 

public class Square {

private int x1, x2, y1, y2, roomHeight, roomWidth;

//constructor takes the position values and width and height of room for boundary checks
Square(int X1, int X2, int Y2, int Y1, int rmWidth, int rmHeight) { 
    x1 = X1; //initialising the point values
    x2 = X2;
    y2 = Y2;
    y1 = Y1;
    roomHeight = rmHeight;
    roomWidth = rmWidth;
}

public void draw() { //draw method
    //Rendering random stuff example code. Also moves the square
    glClear(GL_COLOR_BUFFER_BIT);

    //Render quad
    glBegin(GL_QUADS);
        glVertex2i(x1, y1);
        glVertex2i(x2, y1);
        glVertex2i(x2, y2);
        glVertex2i(x1, y2);
    glEnd();
    }
}

そして、これが私のメインクラスで問題があると思われるopenGl設定です。

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, roomWidth, roomHeight, 0, 1, -1); 
glMatrixMode(GL_MODELVIEW);
4

1 に答える 1

2

glClearを描画するたびにではなく、すべてのフレームを呼び出す必要がありますSquare。への呼び出しを関数glClearの外に移動しdraw、描画ループの先頭に置きます。

于 2013-03-19T19:03:37.133 に答える