我很难弄清楚,为什么我的三角形没有在预期的位置呈现。
我想画这个三角形:
private float vVertices[] = { 0.0f, 0.0f, 0.0f, 1.0f,
1.0f, 1.0f, 0.0f, 1.0f,
1.0f, 0.0f, 0.0f, 1.0f};首先,我创建了一个投影矩阵,如描述的here
float aspect_ratio = 800.0f/480.0f;
ortho_matrix(-aspect_ratio, aspect_ratio, -1.0f, 1.0f, -1.0f, 1.0f, PROJECTION_MATRIX);然后我创建了一个视图矩阵,并将这两个矩阵相乘:
Matrix.setLookAtM(VIEW_MATRIX, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Matrix.multiplyMM(mMVPMatrix, 0, PROJECTION_MATRIX, 0, VIEW_MATRIX, 0);现在我把mvpMatrix发送到我的阴影上,
String vertexShader = "attribute vec4 vPosition; \n" +
"uniform mat4 orthoMatrix;" +
"void main()\n" +
"{\n" +
" gl_Position = vPosition * orthoMatrix;" +
"}";其中顶点使用此矩阵进行转换。然而,这不是我所期望的结果。
以下图像是上述代码的结果:

我期望三角形的起源在0,0,0,所以在屏幕的中心,如下所示:

从上面的代码中,有人能告诉我我做错了什么,或者错过了什么吗?
编辑好了,好像是异形的镜像.所以看起来就像这样
1 ----+---- -1当我反转aspect_ratio调用中的ortho_matrix参数时,它看起来是对的。但为什么这是议会?
发布于 2012-08-20 18:20:50
你倒着做顶点着色乘法。
它应该是:
gl_Position = orthoMatrix * vPosition;
https://stackoverflow.com/questions/12042505
复制相似问题