這是我遇到的一個大問題。LWJGL glTranslate做奇怪的事
我想使用glTranslate呈現多個圖塊,但是當我使用x,y座標來調用我的繪圖函數時,圖塊間隔很奇怪(我不需要空格)。
這是發生了什麼事。
這裏是我的代碼:
抽獎:
public void draw(float Xa, float Ya) {
GL11.glTranslatef(Xa, Ya, 0);
if(hasTexture) {
Texture.bind();
GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(0.5f, 0.5f, 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();
}
和我的渲染代碼:
public void a() throws IOException {
GL11.glTranslatef(0, 0, -10);
int x = 0;
while (x < World.BLOCKS_WIDTH - 1) {
int y = 0;
while (y < World.BLOCKS_HEIGHT - 1) {
blocks.b[data.blocks[x][y]].draw(x, y);
y++;
}
x++;
}
沒有錯誤(除了可見的)
謝謝你。這究竟做了什麼? – teenHack42 2013-02-27 13:10:29
所有的opengl翻譯函數都是真正的矩陣計算。 OpenGL維護一堆轉換矩陣,並且您的轉換操作適用於該堆棧頂部的矩陣。 glPushMatrix將頂層矩陣的副本推送到堆棧,glPopMatrix將其移除。您可以將其視爲撤消機制。 – 2013-02-27 14:48:39