【问题标题】:LWJGL shading textured rects, how to rotate mask?LWJGL 着色纹理矩形,如何旋转蒙版?
【发布时间】:2014-04-15 16:26:21
【问题描述】:

我一直在学习如何在 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);

}

【问题讨论】:

    标签: java rotation textures shader lwjgl


    【解决方案1】:

    这是我自己问题的答案:

    创建一个 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多