如何使用Android中的OpenGL按角度裁剪纹理?

时间:2016-11-23 14:58:04

标签: android opengl-es

我的纹理有半圆形。它应该根据给定的角度顺时针增长。首先,我的绘图函数准备顶点和texcoords缓冲区。接下来,它加载旋转矩阵,最后绘制纹理。代码看起来像这样:

float[] vertexBuffer = {x0, y0, x1, y0, x0, y1, x1, y1};
float[] texCoordBuffer = {0, 0, 1, 0, 0, 1, 1, 1};
float[] matrix = getRotationMatrix(angle); // in Z axis
matrix[12] = (x0 + x1) / 2;
matrix[13] = (y0 + y1) / 2;

gl.glMatrixMode(GL11.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glLoadMatrixf(matrix, 0);            

gl.glBindTexture(GL11.GL_TEXTURE_2D, m_TextureID[0]);

gl.glColor4f(1f,1f,1f,1f);
gl.glVertexPointer(2, GL11.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL11.GL_FLOAT, 0, texCoordBuffer);
gl.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, 4);

我不知道如何裁剪旋转纹理并将其旋转回来。达到这种效果的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

GL中的裁剪是基本的矩形,所以在这里没有帮助。如果你想要任意角度,你需要动态改变几何和纹理坐标。