2014-04-15 130 views
0

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

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); 

} 

回答

0

这里的答案是我自己的问题:

创建一个矩阵2变量,并旋转你的面具的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;