如何使用OpenGL在Android中按角度裁剪纹理?
问题描述:
我有半圆的纹理。它应该根据给定的角度顺时针增长。首先,我的绘图函数准备顶点和texcoords缓冲区。接下来,它加载旋转矩阵,最后绘制纹理。代码看起来像这样:如何使用OpenGL在Android中按角度裁剪纹理?
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);
我不知道如何裁剪旋转的纹理并将其旋转回来。什么是实现这种效果的正确方法?
答
在GL裁剪为基本长方形,所以不打算在这里帮助。如果你想任意角度,你需要改变对飞你的几何形状和纹理坐标。
好的,谢谢。这不是最准确的解决方案,但它的工作原理。我为几个角度范围做了一些条件。 – Giebut