首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用正交投影或圆柱体影响正态化坐标?

应用正交投影或圆柱体影响正态化坐标?
EN

Stack Overflow用户
提问于 2013-04-06 21:21:10
回答 1查看 790关注 0票数 0

我知道归一化坐标应该是-1 (左)和+1 (右)和-1 (底部)和+1 (顶)。

就像这样:

但在应用之后:

来自我的 onSurfaceChanged方法

代码语言:javascript
复制
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);

//The above line can be replaced with:
//Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//But I get the same results with either frustumM or otrhoM

和我的onDrawFrame方法中的这个

代码语言:javascript
复制
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);

(然后,我将mMVPMatrix传递到自定义类的绘图方法中,在该方法中对其进行旋转和转换)。

但是,我的协调似乎发生了变化--这大概是发生了什么:

如您所见,x坐标有所改变,-1和+1不再是屏幕的边缘(在我目前使用的设备上,外部边缘变为-1.7和+1.7)。

Y坐标保持不变。

如果有人能指出我哪里错了会很感激吗?我需要它是-1到+1,它应该是。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-07 02:13:30

在我看来,这是正确的。如果你的屏幕不是正方形,那么你确定你希望你的x轴被拉伸,这样它的行为就像一个方形的屏幕吗?因为如果您这样做,那么如果您告诉OpenGL绘制一个正方形,它将显示为一个矩形在屏幕上,而不是如果您没有您的x轴边缘大于您的y轴边缘,当您的屏幕宽度大于您的屏幕高度,如图像所建议的。这就是为什么您将ratio传递给投影,因此它知道如何正确地绘制事物。

当你在屏幕上画一个正方形时会发生什么?它是正方形还是长方形?

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

https://stackoverflow.com/questions/15856146

复制
相关文章

相似问题

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