我在屏幕上有一个立方体,我想给出缩小的效果,所以我调整了截锥体越来越大。这是代码:
- (void)Draw {
EAGLView* videoController = [EAGLView Instance];
[videoController BeginDraw];
glClearColor(0.1f, 0.7f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, videoController.mBackingWidth, videoController.mBackingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float mAspectRatio = 1.6666;
static float mHalfViewAngleTan = 0.1;
mHalfViewAngleTan += 1.1;
float mNearZClip = 1.0;
float mFarZClip = 1000.0;
glFrustumf( mAspectRatio*-mHalfViewAngleTan, mAspectRatio*mHalfViewAngleTan, -mHalfViewAngleTan, mHalfViewAngleTan, mNearZClip, mFarZClip );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
static float rotZ = 0.0f;
++rotZ;
if(rotZ > 360)
rotZ = 0;
glRotatef(rotZ, 0, 0.5, 0.5);
RenderModel(modelObj);
[videoController EndDraw];
}
glRotate工作正常。然而,随着mHalfViewAngleTan越来越大似乎没有发生任何事情,场景变化没有明显的方式。我已经尝试过越来越大的数字,每帧增加mHalfViewAngleTan的数量。更改近平面和远平面也正常工作。
RenderModel中没有glMatrixMode / glPushMatrix调用。它启用和禁用客户端状态,设置glVertPointer并调用glDrawArray。
所有这些代码都在.mm文件中调用.cpp文件。
答案 0 :(得分:1)
将mNearZClip
设置为大于零的值。请参阅Notes。
答案 1 :(得分:1)
过去我遇到过这个问题。我直接包括Open GL 1.1或2.2标头解决了这个问题。不太清楚为什么修复它。