您的位置:首页 > 编程语言 > Qt开发

QT gluPerspective 报错

2016-04-06 00:32 471 查看
添加库的解决办法

接口函数互换的解决办法

原理分析

添加库的解决办法

在一些系统平台, 由于版本或者系统原因,出现找不见gluPerspective的错识。 这主要是由于缺少glut模块的原因, 在网上有一些直接添加对应动态库, 静态库和头文件 的方法, 可以通过

http://download.csdn.net/detail/li235456789/9481990 这个下载 放在QT安装或源码编译目录的/bin/ (这为对应dll动态库) /lib/(这为对应静态库) 以及 /include/(这为对应头文件) 目录下面。

接口函数互换的解决办法

然后非源码编译而是安装包安装的 QT 是为.a的链接库, 这时的lib库就没法加进去了。 这时就提供了另一种解决方法。就是把gluPerspective 函数进行对应的转换。

glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);

gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);

这是可以转换两个接口函数的原模型。 其实 gluPerspective 函数就是对glFrustum 的封装, 具体的转换代码为:

void MyPerspective( GLdouble fov, GLdouble aspectRatio, GLdouble zNear, GLdouble zFar )
{
// 使用glu库函数,需要添加glu.h头文件
//gluPerspective( fov, aspectRatio, zNear, zFar );

// 使用OpenGL函数,但是需要添加math.h头文件
GLdouble rFov = fov * 3.14159265 / 180.0;
glFrustum( -zNear * tan( rFov / 2.0 ) * aspectRatio,
zNear * tan( rFov / 2.0 ) * aspectRatio,
-zNear * tan( rFov / 2.0 ),
zNear * tan( rFov / 2.0 ),
zNear, zFar );
}


原理分析

可以看出,gluPerspective进行封装后,是简单了不少。

而为什么可以这么转换呢?

下面是原理的分析:

图1.



图2.



从上图可以看出,对应的转换是通过,几何立体图形的计算得出来的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: