首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OGL ES 2.0正交矩阵结果位置意外

OGL ES 2.0正交矩阵结果位置意外
EN

Stack Overflow用户
提问于 2012-08-20 17:50:32
回答 1查看 313关注 0票数 1

我很难弄清楚,为什么我的三角形没有在预期的位置呈现。

我想画这个三角形:

代码语言:javascript
复制
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

代码语言:javascript
复制
float aspect_ratio = 800.0f/480.0f; 
ortho_matrix(-aspect_ratio, aspect_ratio, -1.0f, 1.0f, -1.0f, 1.0f, PROJECTION_MATRIX);

然后我创建了一个视图矩阵,并将这两个矩阵相乘:

代码语言:javascript
复制
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发送到我的阴影上,

代码语言:javascript
复制
String vertexShader = "attribute vec4 vPosition; \n" +
                      "uniform mat4 orthoMatrix;" +
                      "void main()\n" +
                      "{\n" +
                      "    gl_Position = vPosition * orthoMatrix;" +
                      "}";

其中顶点使用此矩阵进行转换。然而,这不是我所期望的结果。

以下图像是上述代码的结果:

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

从上面的代码中,有人能告诉我我做错了什么,或者错过了什么吗?

编辑好了,好像是异形的镜像.所以看起来就像这样

代码语言:javascript
复制
1 ----+---- -1

当我反转aspect_ratio调用中的ortho_matrix参数时,它看起来是对的。但为什么这是议会?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-20 18:20:50

你倒着做顶点着色乘法。

它应该是:

gl_Position = orthoMatrix * vPosition;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12042505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档