【发布时间】:2012-01-17 07:54:27
【问题描述】:
我正在使用 Android 和 OpenGL ES 2.0,但我遇到了一个我无法真正表述为一个可靠问题的问题。在图像http://i.imgur.com/XuCHF.png 中,我基本上有一个形状来代表中间的一艘船,当它移到一边时,它会被拉向消失点。我想要完成的是让船在移动时保持其大部分形状。我相信这可能是由于我的矩阵,但我看过的每个资源似乎都使用相同的方法。
//Setting up the projection matrix
final float ratio = (float) width / height;
final float left = -ratio;
final float right = ratio;
final float bottom = -1.0f;
final float top = 1.0f;
final float near = 1.0f;
final float far = 1000.0f;
Matrix.frustumM(projection_matrix, 0, left, right, bottom, top, near, far);
//Setting the view matrix
Matrix.setLookAtM(view_matrix, 0, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f);
//Setting the model matrix
Matrix.setIdentityM(model_matrix, 0);
Matrix.translateM(model_matrix, 0, 2f, 0f, 0f);
//Setting the model-view-projection matrix
Matrix.multiplyMM(mvp_matrix, 0, view_matrix, 0, model_matrix, 0);
Matrix.multiplyMM(mvp_matrix, 0, GL.projection_matrix, 0, mvp_matrix, 0);
GLES20.glUniformMatrix4fv(mvp_matrix_location, 1, false, mvp_matrix, 0);
着色器也非常基础:
private final static String vertex_shader =
"uniform mat4 u_mvp_matrix;"
+ "attribute vec4 a_position;"
+ "void main()"
+ "{"
+ " gl_Position = u_mvp_matrix * a_position;"
+ "}";
private final static String fragment_shader =
"precision mediump float;"
+ "void main()"
+ "{"
+ " gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);"
+ "}";
非常感谢任何想法/见解。
谢谢。
【问题讨论】:
标签: android opengl-es matrix opengl-es-2.0