2014-01-27 46 views
0

我想让我的精灵表是256x256和瓷砖大小是32只显示在工作表上的一个精灵,但在此刻它显示整个工作表。所以我怎么才能让它只显示一个精灵并使其易于改变。LWJGL雪碧读取器

的代码,我有个大气压是:

public void Render(){ 
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, TextureBank.Instance().GetTexture("spriteSheet").getTextureID());   

    GL11.glTranslatef(x, y, 0.0f); 
    GL11.glBegin(GL11.GL_QUADS); 

     GL11.glTexCoord2f(0.0f, 0.0f); 
      GL11.glVertex2f(0.0f, 0.0f); 
     GL11.glTexCoord2f(1.0f, 0.0f); 
      GL11.glVertex2f(w, 0.0f); 
     GL11.glTexCoord2f(1.0f, 1.0f); 
      GL11.glVertex2f(w, h); 
     GL11.glTexCoord2f(0.0f, 1.0f); 
      GL11.glVertex2f(0.0f, h); 

    GL11.glEnd(); 
} 
+0

今后请立即停止使用旧的,过时的固定功能的OpenGL避免和开始使用现代(着色器为基础)的OpenGL。 – Appleshell

回答

0

对于所有texCoords这是1.0F,需要通过在他们的方向精灵的数量来划分的。然后选择你想要的精灵,把上面找到的数字加上你想要的x值和y值的左边和下边的精灵数量。

+0

我不太确定,如果我明白这一点。 我有8行和8列的精灵 – Tieran

+0

我做了顶部,但我需要改变以选择什么样的精灵我喜欢什么值 – Tieran

+0

@Tieran如果你想让精灵在左下角的右边然后添加1/8到所有texCoords的x值。添加到y值将得到上面的精灵。 – Alex

0

这是我有atm这个节目的左上角我相信但我仍然不知道如何完全这个轻松。有没有办法做到这一点。 精灵(COLX,科利)

GL11.glBindTexture(GL_TEXTURE_RECTANGLE_ARB, TextureBank.Instance().GetTexture("spriteSheet").getTextureID());  

    GL11.glTranslatef(x, y, 1.0f); 
    GL11.glRotatef(Angle, 0f, 0f, 1.0f); 
    GL11.glBegin(GL11.GL_QUADS); 

     GL11.glTexCoord2f(0.0f, 0.0f);//top left 
      GL11.glVertex2f(0.0f, 0.0f); 
     GL11.glTexCoord2f(1.0f /8f, 0.0f);//top right 
      GL11.glVertex2f(w, 0.0f); 
     GL11.glTexCoord2f(1.0f /8f, 1.0f /8f);//bottom right 
      GL11.glVertex2f(w, h); 
     GL11.glTexCoord2f(0.0f, 1.0f /8f);//bottom left 
      GL11.glVertex2f(0.0f, h); 
    GL11.glEnd(); 
    GL11.glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);