比例矩阵到位
Scale matrix in place
目前我正在像这样缩放矩阵:
public void scale(float aw, float ah){
Matrix.scaleM(modelMatrix, 0, aw, ah, 1f);
updateMVP();
}
private void updateMVP(){
Matrix.multiplyMM(mvpMatrix, 0, projectionMatrix, 0, modelMatrix, 0);
}
并在我的顶点着色器中使用:gl_Position = u_Matrix * a_Position;
,u_Matrix
是 mvpMatrix
。我使用的相机是默认相机,projectionMatrix
由以下人员创建:
ASPECT_RATIO = (float) height / (float) width;
orthoM(projectionMatrix, 0, -1f, 1f, -ASPECT_RATIO, ASPECT_RATIO, -1f, 1f);
现在我可以适当地缩放我的对象,但唯一的问题是每次缩放矩阵时,对象都会移动一点。我想知道如何在保持中心点而不让对象平移的同时缩放矩阵。任何人都知道如何在 Android 上的 OpenGL ES 2.0 中执行此操作?谢谢
您还有其他矩阵 (rotation/translation) 吗?
如果是这样:您可能没有以正确的顺序乘以矩阵,这可能会导致问题。
(正确顺序从右到左相乘)
平移 * 旋转 * 缩放
你的错误听起来像这里解释的那个:
You translate the ship by (10,0,0). Its center is now at 10 units of the origin.
You scale your ship by 2. Every coordinate is multiplied by 2 relative to the origin, which is far away… So you end up with a big
ship, but centered at 2*10 = 20. Which you don’t want.
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/
目前我正在像这样缩放矩阵:
public void scale(float aw, float ah){
Matrix.scaleM(modelMatrix, 0, aw, ah, 1f);
updateMVP();
}
private void updateMVP(){
Matrix.multiplyMM(mvpMatrix, 0, projectionMatrix, 0, modelMatrix, 0);
}
并在我的顶点着色器中使用:gl_Position = u_Matrix * a_Position;
,u_Matrix
是 mvpMatrix
。我使用的相机是默认相机,projectionMatrix
由以下人员创建:
ASPECT_RATIO = (float) height / (float) width;
orthoM(projectionMatrix, 0, -1f, 1f, -ASPECT_RATIO, ASPECT_RATIO, -1f, 1f);
现在我可以适当地缩放我的对象,但唯一的问题是每次缩放矩阵时,对象都会移动一点。我想知道如何在保持中心点而不让对象平移的同时缩放矩阵。任何人都知道如何在 Android 上的 OpenGL ES 2.0 中执行此操作?谢谢
您还有其他矩阵 (rotation/translation) 吗?
如果是这样:您可能没有以正确的顺序乘以矩阵,这可能会导致问题。
(正确顺序从右到左相乘) 平移 * 旋转 * 缩放
你的错误听起来像这里解释的那个:
You translate the ship by (10,0,0). Its center is now at 10 units of the origin. You scale your ship by 2. Every coordinate is multiplied by 2 relative to the origin, which is far away… So you end up with a big ship, but centered at 2*10 = 20. Which you don’t want.
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/