首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone OpenGL模板是作弊吗?

iPhone OpenGL模板是作弊吗?
EN

Stack Overflow用户
提问于 2010-06-07 06:32:30
回答 1查看 820关注 0票数 1

XCode的OpenGL模板似乎在欺骗,以解决我在过去3个小时一直试图理解的这个“扩展”的视口问题。

在iphone "OpenGL ES Application“模板中,屏幕上上下跳动的五颜六色的方块根本不是正方形!

ES1Renderer.m ( ES2文件)

代码语言:javascript
复制
static const GLfloat squareVertices[] = {
    -0.5f,  -0.33f,
     0.5f,  -0.33f,
    -0.5f,   0.33f,
     0.5f,   0.33f,
};

但是,由于非方形视口的拉伸/压缩效果,它在设备/模拟器上看起来是方形的。我试图通过摆弄glFrustumf()来修复它,但这似乎并没有改变高宽比。

当我给glViewport()喂食1:1的宽:高时,我能让东西看起来很好(不拉伸)。但这似乎不像答案,因为它抵消了视口的位置。

什么是正确的方法来纠正这种拉伸,为什么XCode不这样做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-08 08:54:51

我认为答案是:

XCode是这样的欺骗,以避免混淆我们和额外的代码所需的设置一个成果。

下面是我用来设置一个的代码,它修复了我所得到的压缩/拉伸:

代码语言:javascript
复制
const GLfloat zNear = 0.0001, zFar = 1000.0, fieldOfView = 45.0; 
GLfloat size;

size = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView) / 2.0);

aspectRatio = (GLfloat) backingWidth / backingHeight;


glFrustumf(-size,//left
           size,//right
           (GLfloat)-size / aspectRatio,//bottom 
           (GLfloat)size / aspectRatio,//top 
           zNear,//zNear 
           zFar);//zFar     

glViewport(0, 0, backingWidth, backingHeight); 

希望这能帮到别人。

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

https://stackoverflow.com/questions/2987489

复制
相关文章

相似问题

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