OpenGL学习笔记——遇到的问题和解决方法

时间:2024-04-05 09:28:19

本文记录了笔者在基于Visual Studio MFC使用OpenGL时所遇到的问题及解决办法。

目录

在VC++的MFC中为基于对话框的工程加入OpenGL窗体

问题:无法打开包括文件:“gl\glaux.h”

glLoadIdentity()函数相关:OpenGL多次使用glLoadIdentity()后面的图形不显示

视角设置相关:gluLookAt和gluPerspective函数解析

为什么调用glPushMatrix和glPopMatrix

OpenGL怎么设置坐标系

问题:fatal error C1189: #error : gl.h included before glew.h

问题:解决VS在进行OpenGL编程中出现“无法启动此程序,因为计算机中丢失OPENGL.dll”

刚体在三维空间的旋转计算


在VC++的MFC中为基于对话框的工程加入OpenGL窗体

参考网址:

https://www.cnblogs.com/wiener-zyj/p/4159310.html

注:实际调试时,该网址中的“步骤一”替换为在工程的stdafx.h中添加include:

#include<gl\gl.h>//OpenGL基本库

#include<gl\glu.h>//OpenGL实用库

#include<gl\glaux.h>//OpenGL辅助库

OpenGL学习笔记——遇到的问题和解决方法

(↑要替换的“步骤一”)

问题:无法打开包括文件:“gl\glaux.h”

参考以下网址:

http://blog.csdn.net/mydangdang2/article/details/47361133

http://download.csdn.net/download/wyq1153/9646632

↑(第二个网址是gl\glaux.h文件的下载)

glLoadIdentity()函数相关:OpenGL多次使用glLoadIdentity()后面的图形不显示

参考网址:

http://blog.sina.com.cn/s/blog_15bb06c270102ydsl.html

→网址重点摘录:

看了一段关于glLoadIdentity()的介绍,恍然大悟。原来glLoadIdentity()既将模型世界坐标恢复,又将视野也恢复到(0,0,0),朝向是-z,方向向上。那么OK,使用glLoadIdentity()后,再来一个gluLookAt(),就没问题了。

视角设置相关:gluLookAt和gluPerspective函数解析

参考网址:

https://www.2cto.com/kf/201611/565522.html

→网址重点摘录:

在调用gluLookAt和gluPerspective函数之前一般要先调用一下glLoadIdentity函数, (参考以下代码  20171117YC)

//【设置视点和方向】

glMatrixMode (GL_PROJECTION);

glLoadIdentity ();//初始化矩阵【这行代码在设置视点、视角的时候不可或缺!】  

gluPerspective(60.0, 1, 4, 10.0);//。

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();//初始化矩阵【这行代码在设置视点、视角的时候不可或缺!】

gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//。

 

Opengl---gluLookAt函数详解参考以下网址:

http://blog.csdn.net/ivan_ljf/article/details/8764737

 

为什么调用glPushMatrix和glPopMatrix

参考网址:

https://zhidao.baidu.com/question/1797166351991328427.html

OpenGL怎么设置坐标系

https://zhidao.baidu.com/question/169062940.html

→x 向右 y 向上,z 向外, 这是你看的坐标系,是不会变的, 但是可以通过 transfer , rotate ,scale 来控制内部坐标系的平移,旋转和 放大缩小, 可以理解为坐标系的变化或者镜头的变化

 

glRotated(-90.0, 1.0, 0.0, 0.0); //绕x顺时针旋转90,Z轴竖直

glRotated(-45.0, 0.0, 0.0, 1.0); //XY平面绕Z顺时针45。

glRotated(45.0, 1.0, 1.0, 0.0);  //绕XY的角平分线逆时针45,旋转可以看到效果

问题:fatal error C1189: #error : gl.h included before glew.h

解决办法:

将“#include<gl\gl.h>//OpenGL基本库”移动到“#include"OpenGL_Interact/include/GL/glew.h"//(要包含.h文件的路径)”之后即可。

问题:解决VS在进行OpenGL编程中出现“无法启动此程序,因为计算机中丢失OPENGL.dll”

这主要是因为同时引用了静态库“glut.lib”和"glut32.lib"。

即在项目->属性->配置属性->链接器->附加依赖项中增加了glut.lib和glut32.lib,而且顺序为glut.dll在前,glut32.dll在后,所以,链接器首先寻找OPENGL.dll而没有寻找opengl32.dll。

→经测试,去掉glut.dll可以解决问题。20171121YC

刚体在三维空间的旋转计算

OpenGL学习笔记——遇到的问题和解决方法

→上述参考网址:

http://blog.csdn.net/mulinb/article/details/51227597

 

相关文章