LWJGL着色纹理,如何旋转蒙版?

时间:2014-04-15 16:26:21

标签: java rotation textures shader lwjgl

我一直在学习如何在lwjgl中使用着色器。现在我遇到了一个问题,我需要旋转我的蒙版以进行着色以获得不同的结果。如何在绑定后修改掩码转换/旋转,或者我之前是否需要修改它。我几乎尝试了任何东西,但无法找到现有的问题/说明。任何帮助将不胜感激!这是我使用自定义着色器程序绘制纹理矩形的代码。

    private static void drawTexture(int shaderProgram, int texID1, int texID2) {

    glUseProgram(shaderProgram);

    setTextureUnits(shaderProgram);

    bindTextures(texture1.getTextureID(), texture2.getTextureID(), mask.getTextureID());

        glBegin(GL11.GL_QUADS);

            glColor3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(0,0);
            glVertex2f(-0.5f,-0.5f);

            glColor3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(1,0);
            glVertex2f(+0.5f,-0.5f);

            glColor3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(1,1);
            glVertex2f(+0.5f,+0.5f);

            glColor3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(0,1);
            glVertex2f(-0.5f,+0.5f);

        glEnd();

    glUseProgram(0);

}

1 个答案:

答案 0 :(得分:0)

以下是我自己的问题的答案:

创建一个matrix2变量,并旋转蒙版的textCoords。 - + 0.5是围绕中心旋转。要解决任何问题,比如暴露的角落,请将纹理夹在边缘上。

<强>着色器:

mat2 textureMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));

float mask = texture2D(mask, textureMatrix*(gl_TexCoord[0].xy-0.5)+0.5).a;
相关问题