2014-04-15 128 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;