opengl 一些基本原理的理解解决方案
opengl 一些基本原理的理解
我用opengl画人脸candide模型
在OnSize()里有如下代码:
没有设置视点 gluLookAt(0,0,1.0,0,0,-2,0,1,0); 时候模型正常显示 模型的中心在(0,0,-2)
但是设置之后 模型前面凸出的部分看不到了
所以就很不理解 视点远了 不是更应该看得见吗 ? 怎么会只看到一半了 ???
------解决方案--------------------
楼主你gluLookAt(0,0,1.0,0,0,-2,0,1,0); 函数应该放在glMatrixMOde(GL_MODELVIEW)后面,
不能放在glMatrixMode(GL_PROJECTION)后面属于模视变化
我用opengl画人脸candide模型
在OnSize()里有如下代码:
- C/C++ code
CRect r; GetClientRect(&r); double rate=r.Width()/r.Height(); glViewport(0, 0, r.Width(), r.Height());//在窗口中定义一个视区 glMatrixMode(GL_PROJECTION); glLoadIdentity();//指定一个4阶单位距阵为当前的操作距阵 [color=#FF0000]// gluLookAt(0,0,1.0,0,0,-2,0,1,0); //设置视点[/color] float fNear,fFar; fNear = 1.0; fFar = 1000.0; //glOrtho(-1.5*rate,1.5*rate,-1.5,1.5,fNear,fFar);//正投影 gluPerspective(50.0f, (GLdouble)r.Width()/r.Height(), fNear, fFar); //透视投影 glMatrixMode(GL_MODELVIEW);//模型视图矩阵
没有设置视点 gluLookAt(0,0,1.0,0,0,-2,0,1,0); 时候模型正常显示 模型的中心在(0,0,-2)
但是设置之后 模型前面凸出的部分看不到了
所以就很不理解 视点远了 不是更应该看得见吗 ? 怎么会只看到一半了 ???
------解决方案--------------------
楼主你gluLookAt(0,0,1.0,0,0,-2,0,1,0); 函数应该放在glMatrixMOde(GL_MODELVIEW)后面,
不能放在glMatrixMode(GL_PROJECTION)后面属于模视变化