【发布时间】:2014-02-22 16:32:40
【问题描述】:
我正在使用 opengl 像素级 (2D)
在我遇到轮换之前一切都很好
我尝试了不同的方法,但一无所获
这是我在像素级别上工作的矩阵
float[] uScreen =
{
2f/width, 0f, 0f, 0f,
0f, -2f/height, 0f, 0f,
0f, 0f, 0f, 0f,
-1f, 1f, 0f, 1f
};
顶点
String vertexSrc =
"uniform mat4 uScreen;\n" +
"attribute vec2 aPosition;\n" +
"void main() {\n" +
" gl_Position = uScreen * vec4(aPosition.xy, 0.0, 1.0);\n" +
"}";
片段着色器
String fragmentSrc =
"precision mediump float;\n"+
"void main(void)\n" +
"{\n" +
" gl_FragColor = vec4(1, 0, 0, 1);\n" +
"}";
这很好用,我可以毫无问题地在屏幕像素级上绘图。 但是我想旋转纹理不知道怎么做
现在尝试添加以下内容
long time = SystemClock.uptimeMillis() % 4000L;
float angleX = 0.090f * ((int) time);
float[] axis = { 1.0f,0.0f,0.0f};
Matrix.rotateM(uScreen,0,angleX,axis[0],axis[1],axis[2]);
GLES20.glUniformMatrix4fv(uScreenPos, 1, false, uScreen, 0);
纹理被旋转了,但是有一种奇怪的行为,一切都在屏幕上围绕 0.0 而不是在其中心旋转
知道如何旋转这个吗?
纹理(红色)在您的中心旋转超过 0,0 像素
【问题讨论】:
-
如果您发布您正在绘制的内容的屏幕截图以及您在屏幕上的预期旋转位置,这将有助于理解。
-
好像是相机旋转而不是纹理
标签: android opengl-es rotation opengl-es-2.0 pixel