簡體   English   中英

LWJGL紋理未拉伸到四邊形

[英]LWJGL Texture not stretching to Quads

我一直在努力幾個小時,以獲取LWJGL中的Texture可以拉伸到四邊形。

這是我用於四邊形的代碼:

private static void renderLoad() {
    glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

    texture.bind();

    glPushMatrix();{
    glBegin(GL_QUADS);
    {
        glTexCoord2f(0, 1);
        glVertex2f(0, 0); //Upper-left

        glTexCoord2f(1, 1);
        glVertex2f(Display.getWidth(), 0); //Upper-right

        glTexCoord2f(1, 0);
        glVertex2f(Display.getWidth(), Display.getHeight()); //Bottom-right

        glTexCoord2f(0, 0);
        glVertex2f(0, Display.getHeight()); //Bottom-left
    }
    glEnd();
    }glPopMatrix();
}

這是我運行顯示器時的樣子: http : //gyazo.com/376ddb0979c55226d2f63c26226215a1e12

我試圖使圖像擴展到窗口的大小。 四邊形與窗口大小相同,但紋理似乎沒有拉伸。

如果不使用紋理,則將四邊形簡單地設置為顏色,這是下面的樣子: http : //gyazo.com/65f21fe3efa2d3948de69b55d5c85424

如果有幫助,這是我的主循環:

glMatrixMode(GL_PROJECTION);
        glViewport(0, 0, displaySizeX, displaySizeY);
        glLoadIdentity();
        glOrtho(0, displaySizeX, 0, displaySizeY, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);

        texture = loadLoadingImage();

        //This is the main loop for the game.
        while(!Display.isCloseRequested()){
            delta = getDelta();
            updateFPS();
            if(Display.wasResized()){
                displaySizeX = Display.getWidth();
                displaySizeY = Display.getHeight();
                glViewport(0, 0, displaySizeX, displaySizeY);
                glMatrixMode(GL_PROJECTION);
                glLoadIdentity();
                glOrtho(0, displaySizeX, 0, displaySizeY, -1, 1);
            }
            render();
            checkInput();
            Display.update();
            Display.sync(sync);
        }

        cleanUp();
        return true;

如何使圖像拉伸到四邊形?

public void stretch() {
        Color.white.bind();
        texture.bind

        GL11.glBegin(GL11.GL_QUADS);
        GL11.glTexCoord2f(0,0);
        GL11.glVertex2f(100,100);
        GL11.glTexCoord2f(1,0);
        GL11.glVertex2f(100+texture.getTextureWidth(),100);
        GL11.glTexCoord2f(1,1);
        GL11.glVertex2f(100+texture.getTextureWidth(),100+character.getTextureHeight());
        GL11.glTexCoord2f(0,1);
        GL11.glVertex2f(100,100+texture.getTextureHeight());

        GL11.glEnd(); // all the 0's were originally 100 but it was off centered
    }

texture = TextureLoader.getTexture("PNG",ResourceLoader.getResourceAsStream("res/texture.png"));

嘗試使用這個。 通常這就是我這樣做的方式。

也許正在修改紋理矩陣。 您可以嘗試添加一個

glMatrixMode(GL_TEXTURE);
glLoadIdentity();

看看這是否會影響任何事情。

暫無
暫無

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

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