簡體   English   中英

我將如何閱讀LWJGL中的Sprite表?

[英]How would I read a sprite sheet in LWJGL?

我目前使用LWJGL紋理在屏幕上繪制圖像。 我想從Sprite工作表中讀取Textures *。 我正在使用slick的TextureLoader類加載紋理。

我繪制一個LWJGL形狀並將紋理綁定到其上。

例如:

我畫圖:

    Texture texture = ResourceManager.loadTexture("Images/Tests/test.png");

    GL11.glBegin(GL11.GL_QUADS);
    {
      GL11.glTexCoord2f(0, 0);
      GL11.glVertex2f(0, 0);
      GL11.glTexCoord2f(0, texture.getHeight());
      GL11.glVertex2f(0, height);
      GL11.glTexCoord2f(texture.getWidth(), texture.getHeight());
      GL11.glVertex2f(width,height);
      GL11.glTexCoord2f(texture.getWidth(), 0);
      GL11.glVertex2f(width,0);
    }
    GL11.glEnd();

我認為有一種方法可以在調用glTexCoord2f時給它一個sprite偏移量,然后將sprite工作表加載到紋理中,

例如,一個呼叫將是這樣的:

      GL11.glTexCoord2f(0+spriteXOffset, texture.getHeight()-spriteYOffset);

但是我真的很想知道是否有一種更簡單的方法,例如,像在這里這樣從單個紋理中提取紋理:

從Sprite表Java讀取圖像

只是代替了BufferedImage,而是紋理對象。

感謝您的幫助!

Slick紋理加載器內部使用的GL_TEXTURE_2D的紋理坐標需要標准化的紋理坐標。 即,坐標范圍為0.0至1.0。 因此(0,0)是紋理的左上角,而(1,1)是紋理的右下角。 假設手腕上的精靈坐標位於像素坐標中,則必須將x坐標除以紋理寬度,將y坐標除以紋理高度,從而得到歸一化的紋理坐標。 然后,您可以使用glTexCoord將這些坐標提供給OpenGL。

glTexCoord2f(spriteX / textureWidth, spriteY / textureHeight);
glVertex2f(coordinateX, coordinateY);
glTexCoord2f(spriteX+spriteWidth / textureWidth, spriteY / textureHeight);
glVertex2f(coordinateX2, coordinateY);
// Et cetera

但是,還有一種更簡便的方法。 觀看此視頻 (我創建的視頻 ),以了解如何使用像素坐標代替紋理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM