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