做了个读取3维文件模型的小程序,由于模型大小不一,显示的时候有的看不全,有的很小,经常需要手动调整。
请问有没有什么方法可以根据模型的大小及位置调整视口,使显示大小和中心都适中?
请问有没有什么方法可以根据模型的大小及位置调整视口,使显示大小和中心都适中?
解决方案 »
- 关于slide control 与edit control同步的问题
- 请问大家~ADO 通过什么方法可以获取到“Select count(*) From Table”count(*)的值?
- CEdit编辑框控件输出范围控制?
- 在.net2005下开发的ActiveX控件,在客户端需要安装.net Framework吗
- 如何清除滞留窗口?
- SDI和MDI里,如何为视图添加滚动条?
- vc使用CDatabase类通过ODBC连接,open()sqlserver2000数据库出0x7c9524b2错
- ODBC CRecordset:;Open()问题!在线等待,马上给分!很简单的!
- 关于用ATL的SERVICE向导和使用位图的两个问题!(高手请进)
- 链接错误error LNK2001: 无法解析的外部符号 ",在vs2008可以链接通过2010不行
- 关于打印机gdi驱动程序的问题
- 关于GetAsyncKeyState返回值的问题
void SetModalMatrix( void )
{
glMatrixMode( GL_MODELVIEW );
glLoadIdentity( ); // 单位化矩阵
// 这个函数是在OnIdle里被调用的,所以我们用下面的代码来实现物体的旋转
// 一个很容易理解的概念是,你绕着物体转和物体自己转在某些简单场景里的
// 的效果看起来是一样的,所以我们通过矩阵运算让眼睛点在一定高度做圆周
// 运动。知道圆的简化方程是:(sinα* r)^2 + (cosα* r)^2 = r^2,所以代码
// 很好理解。 static float fRadius = 0;
fRadius += 0.01f;
if ( fRadius > M_PI * 2 )
{
fRadius = 0;
}
gluLookAt( cosf( fRadius ) * 30, sinf( fRadius ) * 30, 15.0,
0.0, 0.0, 0.0, // 向原点坐标看去
0.0, 0.0, 1.0 ); // 设置眼睛(摄影机)的方向向量,该向量表示眼表向上
}// 设置透视矩阵
void SetProjMatrix( WORD wWidth, WORD wHeight )
{
// 此函数将在WM_SIZE时被调用,所以应该设置一下glViewPort
glViewport( 0, 0, wWidth, wHeight );
glMatrixMode( GL_PROJECTION );
glLoadIdentity( );
// 这和照象机很类似,第一个参数设置镜头广角度,第二个参数是长宽比,后面是远近剪切。
gluPerspective( 45.0, (double)wWidth / (double)wHeight, 1.0, 1000.0 );
}
http://community.csdn.net/Expert/topic/3143/3143497.xml?temp=.8713953