编辑 - 添加更多的代码
尝试使用OpenGL ES 2.0正确旋转我的四边形时遇到了很多问题。
它似乎总是围绕屏幕坐标的中心旋转。 我正在尝试让它围绕自己的中心旋转(仅在z轴上,用于2D)。
我一直在使用Matrix.translate进行实验,如下所示。 但是,在此更改x或y位置仅会在屏幕上的不同位置绘制四边形,但当它旋转时,它再次围绕屏幕的中心旋转。 请问有人能解释一下如何使其围绕其自身的z轴旋转(像车轮一样)吗?
谢谢,这里是相关的代码行 - 如果需要更多,请询问,我会发布。(请注意,我查看了许多类似的SO和更广泛的互联网问题,但到目前为止我还没有找到答案。)
谢谢。
//Set rotation
Matrix.setRotateM(mRotationMatrix, 0, -angle, 0, 0, 1.0f);
//Testing translation
Matrix.translateM(mRotationMatrix, 0, -.5f, .5f, 0f);
// Combine the rotation matrix with the projection and camera view
Matrix.multiplyMM(mvpMatrix, 0, mRotationMatrix, 0, mvpMatrix, 0);
我的着色器(在类级别上声明)
private final String vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
"}";
private final String fragmentShaderCode =
"precision mediump float;" +
"uniform vec4 vColor;" +
"void main() {" +
" gl_FragColor = vColor;" +
"}";
从onSurfaceChanged开始
float ratio = (float) width / height;
Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
在我的onDrawFrame方法中
// Set the camera position (View matrix)
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
//Calculate the projection and view transformation
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);