タイトルのように、glBeginとglEndをフレーム/更新ごとに1回だけ呼び出すことができるようにしたいと思います。これは、更新ごとに複数回呼び出すと大幅に遅くなることを聞いて経験しているためです。
これは私のレンダリング関数のコードです:
GL11.glTranslatef(0, 0, -10);
int x = 0;
while (x < World.BLOCKS_WIDTH - 1) {
int y = 0;
while (y < World.BLOCKS_HEIGHT - 1) {
if( x * World.BLOCK_SIZE <= Display.getHeight() || y * World.BLOCK_SIZE <=
Display.getWidth() || x * World.BLOCK_SIZE >= 0 ||
y * World.BLOCK_SIZE >= 0 ) {
blocks.b[data.blocks[x][y]].draw(x + Main.PosX, y + Main.PosY);
}
y++;
}
x++;
}
助けていただければ幸いです。
これは私のブロッククラスです:
GL11.glPushMatrix();
GL11.glTranslatef(Xa * World.BLOCK_SIZE, Ya * World.BLOCK_SIZE, 0);
//GL11.glRotatef(0, 0, 1, 0);
//GL11.glRotatef(0, 1, 0, 0);
Texture.bind();
GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(1f, 1f, 1f);
//GL11.glNormal3f(0, 0, 1);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 0);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(0, S);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(S, S);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(S, 0);
GL11.glEnd();
GL11.glPopMatrix();
}
PS。少し純粋なOpenGLを理解できます。