OPENGL编程指南(红宝书阅读笔记)
来源:互联网 发布:电信网络的dns是什么 编辑:程序博客网 时间:2024/05/19 04:56
1、OpenGL
OpenGL图形系统是图形硬件的一个软件接口。GL(Graphics Library,图形库)。它允许创建交互性的程序,来产生移动三维物体的彩色图像。该接口包括了大约250个不同的函数,可以用这些函数指定物体和操作,创建交互性三维应用程序。
使用OpenGL,可以对计算机图形技术进行控制,产生逼真的图像或者虚构出现实世界所没有的图像。
下列步骤简单地描述当OpenGL对屏幕上的图像进行渲染时所执行的主要图形操作:
1)根据几何图元创建形状,从而建立物体的数学描述(OPENGL把点、直线、多边形、图像和位图作为基本的图元)。
2)在三维空间中排列物体,并选择观察复合场景的有利视角。
3)计算所有物体的颜色。颜色可能是由应用程序明确指定的,也可能是根据特定的光照条件所确定的,或者是通过把纹理贴到物体表面得到的,或者可能是上述三种操作的混合产物。
4)把物体的数学描述以及和它们相关的颜色信息转换为屏幕上的像素。这个过程叫做光栅化(rasterization)。
在这些阶段期间,OpenGL可能还会执行其他操作,例如消除被其他物体所遮挡的物体的部分,此外,在场景光栅化后,但在绘制到屏幕之前,仍然可以根据需要对像素数据执行一些操作。
OpenGL实现了:显示图形的计算机和运行图形程序的计算机可以并不相同。 网络计算机就属于这种情况:运行图形程序并发出绘图命令的计算机称为客户机,接收这些命令并执行绘图任务的计算机称为服务器。
2、GLUT工具库
本书使用了Mark Kilgard所编写的OpenGL实用工具库(GLUT)。
访问点击打开链接可获取书上的示例代码;访问点击打开链接可下载GLUT源代码。
点击打开链接配置VC,安装GLUT工具包
3、简单术语
渲染(rendering):计算机根据模型创建图像的过程;
模型(model):根据几何图元构造的物体;
位平面(bitplane):一块内存区域,保存了屏幕上每个像素1个位的信息;
帧缓冲区(framebuffer):保存了图形显示为了控制屏幕上所有像素的颜色和强度所需要的全部信息。
4、GLUT
窗口管理
glutInit(int *argc,char ** argv); 初始化。
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 指定使用RGBA还是颜色索引模式、单缓冲还是双缓冲窗口。
glutInitWindowPosition(100, 100); 指定窗口左上角的屏幕位置。
glutInitWindowSize(400, 400); 指定窗口大小(以像素为单位)。
glutCreateWindow("第一个OpenGL程序"); 创建一个带有OpenGL渲染环境的窗口。在调用glutMainLoop()之前,这个窗口并没有被显示。
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 指定使用RGBA还是颜色索引模式、单缓冲还是双缓冲窗口。
glutInitWindowPosition(100, 100); 指定窗口左上角的屏幕位置。
glutInitWindowSize(400, 400); 指定窗口大小(以像素为单位)。
glutCreateWindow("第一个OpenGL程序"); 创建一个带有OpenGL渲染环境的窗口。在调用glutMainLoop()之前,这个窗口并没有被显示。
显示回调函数
glutDisplayFunc(&myDisplay); 把重绘场景所需要的所有代码都放在这个显示回调函数里。如果程序修改了窗口的内容,有时候必须调用glutPostRedisplay().
运行程序
glutMainLoop(); 所有已经创建的窗口将在此时显示,对那些窗口的渲染也开始生效。事件处理开始启动,已注册的显示回调函数被触发。 0 0
- OPENGL编程指南(红宝书阅读笔记)
- OpenGL编程指南(OpenGL红宝书)
- 《OpenGL 编程指南》(OpenGL红皮书) 阅读笔记
- OpenGL编程指南 (红宝书 第八版) 样例代码配置问题汇总
- OpenGL编程指南 (红宝书 第八版) 样例代码配置问题汇总
- OpenGL红宝书学习笔记(1)
- OpenGL编程指南之阅读笔记 第三章 视图
- opengl编程指南笔记
- opengl编程指南笔记(一)前言
- opengl编程指南 第七版 源码有bug Page35 lines.c 红宝书
- CUDA编程指南阅读笔记(一)
- CUDA编程指南阅读笔记(二)
- CUDA编程指南阅读笔记(三)
- CUDA编程指南阅读笔记(四)
- CUDA编程指南阅读笔记(五)
- CUDA编程指南阅读笔记(六)
- CUDA编程指南阅读笔记(七)
- CUDA编程指南阅读笔记(六)
- GregorianCalenda
- 构造函数与分配空间
- ARM处理器系列博客:提笔前言
- Python (二)列表、元组
- Android内存泄漏案例分析一
- OPENGL编程指南(红宝书阅读笔记)
- [PAT] A1008
- 学习VTK(1)
- poj 1265 Area
- SimpleAdapter 总结2
- struts 跳转后js css加载不了和请求求struts有问题
- 使用github和hexo搭建博客问题总结
- 需要研究的网站
- Maximum Depth of Binary Tree