0
好吧,所以我在iOS上使用横向模式的OpenGL出现了一个奇怪的问题。 从我在互联网上阅读我有旋转现场自己,所以我做了这样的:转换似乎无法正常工作
void GameViewController::onSurfaceChanged(int width, int height)
{
float aspect = (float)width/(float)height;
float fovy = 90.0f;
glMatrixMode(GL_PROJECTION);
float xmin, xmax, ymin, ymax;
ymax = 0.01f * Math::tan(fovy * 3.1415f/360.0);
ymin = -ymax;
xmin = ymin * aspect;
xmax = ymax * aspect;
glViewport(0, 0, width, height);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
glFrustumf(xmin, xmax, ymin, ymax, 0.01f, 320.0f);
}
我的我的相机的中心不在画面中央,现在虽然。所以我重置所有矩阵(投影,模型视图),以便它们都是标识,然后在屏幕上绘制了一个单位圆。现在我看到出了什么问题,并不是所有-1到1的坐标都在我的屏幕上!下面是一个屏幕截图,以显示我的意思:
现在我的问题:什么可能导致这种情况?
编辑:经过一番深入调查,我发现,在这个OBJ-C方法:
-(void)setupView:(GLView*)view
{
CGRect rect = view.bounds;
glViewport(0, 0, rect.size.width, rect.size.height);
gameView->onSurfaceCreated();
gameView->onSurfaceChanged(rect.size.width, rect.size.height);
view.multipleTouchEnabled = YES;
}
视图的大小突然竟然是1216 * 1568。问题可能在那里。手动将768 * 1024传递给onSurfaceChanged给了我更多的结果。
不知道你的问题,但我相信,在'数学::棕褐色(fovy * 3.1415f/360.0);'你是从度转换成弧度?在这种情况下,我认为你错过了一个因子2.(弧度= 2 * pi *度/ 360) – Tom
这是因为我想要一半的FoVY – Brammie