XCode的OpenGL模板似乎在欺骗,以解决我在过去3个小时一直试图理解的这个“扩展”的视口问题。
在iphone "OpenGL ES Application“模板中,屏幕上上下跳动的五颜六色的方块根本不是正方形!
ES1Renderer.m ( ES2文件)
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不这样做呢?
发布于 2010-06-08 08:54:51
我认为答案是:
XCode是这样的欺骗,以避免混淆我们和额外的代码所需的设置一个成果。
下面是我用来设置一个的代码,它修复了我所得到的压缩/拉伸:
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); 希望这能帮到别人。
https://stackoverflow.com/questions/2987489
复制相似问题