如何使用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裁剪为基本长方形,所以不打算在这里帮助。如果你想任意角度,你需要改变对飞你的几何形状和纹理坐标。

+0

好的,谢谢。这不是最准确的解决方案,但它的工作原理。我为几个角度范围做了一些条件。 – Giebut