OpenGL学习笔记(一)
2017-05-01 10:08
399 查看
龙云尧个人博客,转载请注明出处。
CSDN地址:http://blog.csdn.net/michael753951/article/details/71043190
个人blog地址:http://yaoyl.cn/nehe_1/
因为实验需要,我要使用OpenGL搭建一个仿真驾驶环境。因为之前没有接触过OpenGL的相关知识,淦哥推荐通过NEHE来进行学习,之后会零零散散做一些笔记用来进行记录。学习的博客参见【【翻译】NeHe OpenGL 教程】。
需要注意的是,在实验中,不推荐直接按照博客中使用L对字符串直接进行强制转换的方式,这种方法在之后学习OpenGL过程中会出现很多不可避免的问题。同时这种方式在输出中文的时候也会出翔错误,这个不是我们想看到的。所以我们还需要进行相关的设置。
设置方法这里我们参考【VS2005中关于char[]转换成LPCWSTR的问题】。
设置完成以后,我们就能很正常的输出字符串了,也不再需要在字符串前面加上L进行强制转换,之后进行NEHE学习的时候也能更加简单。
在添加函数的过程中,在开始调用PDB文件之后,可能会出现很多的“无法查找或打开PDB文件”错误信息,为了解决这个问题,你可以参考【Visual Studio “无法查找或打开PDB文件”解决方法 】。
如果在环境搭建过程中还出现了其他问题,试着参照【配置OpenGL时遇到的一些问题】进行解决。
理解过程中,我们其他的目前可以不用很掌握,但是一定要清楚,在本次项目中,作者将OpenGL的着色描述表定义为 hRC 。要让您的程序能够绘制窗口的话,还需要创建一个设备描述表。Windows的设备描述表被定义为 hDC 。DC将窗口连接到GDI(Graphics Device Interface图形设备接口)。而RC将OpenGL连接到DC。变量 hWnd 将保存由Windows给我们的窗口指派的句柄。最后,程序的实例保存在hInstance中(实例)。
通过上面的关系,我们能够更加容易的理解窗口的建立与注销的过程中,作者代码中每一步所做的目的和意义。
CSDN地址:http://blog.csdn.net/michael753951/article/details/71043190
个人blog地址:http://yaoyl.cn/nehe_1/
因为实验需要,我要使用OpenGL搭建一个仿真驾驶环境。因为之前没有接触过OpenGL的相关知识,淦哥推荐通过NEHE来进行学习,之后会零零散散做一些笔记用来进行记录。学习的博客参见【【翻译】NeHe OpenGL 教程】。
创建新的C++
因为实验需要,我需要使用C++进行整个项目的编写。实验之前,我们需要先知道怎么用VS搭建一个窗口程序,这里我参考了【【win32】vs2010的窗体程序Helloworld】。需要注意的是,在实验中,不推荐直接按照博客中使用L对字符串直接进行强制转换的方式,这种方法在之后学习OpenGL过程中会出现很多不可避免的问题。同时这种方式在输出中文的时候也会出翔错误,这个不是我们想看到的。所以我们还需要进行相关的设置。
设置方法这里我们参考【VS2005中关于char[]转换成LPCWSTR的问题】。
设置完成以后,我们就能很正常的输出字符串了,也不再需要在字符串前面加上L进行强制转换,之后进行NEHE学习的时候也能更加简单。
实验环境搭建
我在实验开发中使用的是VS2015专业版进行开发。需要使用到的所有库文件和环境搭建可以参考【VS2015下OpenGL库的配置】,环境搭建完成之后,尝试include某些库头,如果没有报错,那就说明环境搭建成功。可能出现的问题
实验过程中,最好从教程中,一个函数一个函数向你的项目中添加,如果一次性添加太多的话,报错太多可能会让你很崩溃。在添加函数的过程中,在开始调用PDB文件之后,可能会出现很多的“无法查找或打开PDB文件”错误信息,为了解决这个问题,你可以参考【Visual Studio “无法查找或打开PDB文件”解决方法 】。
如果在环境搭建过程中还出现了其他问题,试着参照【配置OpenGL时遇到的一些问题】进行解决。
逻辑图
经过仔细阅读源码以及理解,整个NEHE第一课的代码框架结构如下。理解过程中,我们其他的目前可以不用很掌握,但是一定要清楚,在本次项目中,作者将OpenGL的着色描述表定义为 hRC 。要让您的程序能够绘制窗口的话,还需要创建一个设备描述表。Windows的设备描述表被定义为 hDC 。DC将窗口连接到GDI(Graphics Device Interface图形设备接口)。而RC将OpenGL连接到DC。变量 hWnd 将保存由Windows给我们的窗口指派的句柄。最后,程序的实例保存在hInstance中(实例)。
通过上面的关系,我们能够更加容易的理解窗口的建立与注销的过程中,作者代码中每一步所做的目的和意义。
实验结果
在读完代码之后,我们知道本次实验中仅仅只是建立一个640*480的窗口。并没有任何内容显示,另外因为我们在初始化设置中(InitGL这个方法中定义的)将屏幕的初始RGB值设置为(0.0f, 0.0f, 0.0f, 0.5f),所以程序运行的结果如图所示。相关文章推荐
- 一、openGL 学习笔记 (基础问题)
- openGL学习笔记4(动画)
- OpenGL学习笔记(2)--静态链接库和动态链接库的区别
- coco2dx-2.2.2 win32启动过程(opengl 和 窗口大小初始化部分) - 学习笔记 1
- OpenGL学习笔记(12)基本光照
- OpenGL 学习笔记(3)绘制几何物体
- OpenGL学习笔记——Blending
- opengl学习笔记1:vs2013 nehe教程第一课 创建窗口
- opengl学习笔记(四)——绘制简单多边形
- OpenGL ES学习笔记之四
- opengl学习笔记(2)
- 【OpenGL 学习笔记03】点画多边形
- OpenGL学习笔记3 —— 绘制3D物体、鼠标交互、反向变换
- 《OpenGL游戏程序设计》学习笔记---第五章坐标变换和OpenGL矩阵
- OpenGL学习笔记-OpenGL的变换和矩阵
- OpenGL_Qt学习笔记之_06(纹理滤波、光照和色彩融合)
- openGL画三角形---openGL学习笔记(四)
- OPENGL学习笔记整理(三):缓冲区对象
- OpenGL学习笔记——纹理贴图
- Opengl学习笔记一