OpenGL超级宝典(中文版)

2001年

本书是一本完整而详尽的关于OpenGL的参考书,全书分为四部分:第一部分“OpenGL导言”介绍3D图形学的基本原理,读者将在此学会构造使用OpenGL的程序、设置3D渲染环境、创建和移动基本对象并给它们施加色彩和三维效果;第二部分“OpenGL渲染组成”深入阐述了OpenGL的使用、高级特性及特殊效果,如处理光栅图形、纹理贴图、3D建模和物体合成、混色和雾化效果,处理三角形、曲线和曲面、交互式图形,另外还介绍了如何利用OpenGL制作图像以及OpenGL扩展的应用;第三部分“OpenGL for Windows: OpenGL与Win32”讨论了Windows平台上的OpenGL,读者将在此学到各种驱动程序模型、硬件渲染和软件渲染、像素格式、渲染环境以及其他Windows中特有的功能;第四部分“附录”提供了有关OpenGL更新、参考资料和状态机等方面的内容。

在本书中,通常每章介绍一个方面的编程主题,并在同一章中给出与此编程主题相关的大量函数及函数说明。另外,许多函数还提供了实用的示例,使读者可以直接在自己的程序中借鉴参考。

本书内容丰富而全面、结构清晰、层次分明,适用于使用OpenGL编程的各个层次的程序员。

自从1992年推出OpenGL以来,它在业界已被广泛应用,已经成为开发可移植交互式2D和3D图形的最佳选择。OpenGL具有一组范围广泛的渲染、纹理贴图、特效和其他功能强大的显示函数,鼓励程序员进行创新并加速了应用程序的开发过程。开发人员可以在所有流行的桌面和工作站平台上通过OpenGL来保证应用程序的广泛使用。

现在,即使是最破旧的PC机上,3D加速图形卡也是主要部件了。本书的第一版是在“API之战”的前夜出版的。这场Microsoft和SGI(它代表了世界的其余部分)之间的斗争关系到谁将在迅猛增长的3D加速硬件市场上获得3D图形API的控制权——这个市场很大程度上是由消费类游戏厂家推动的。在1997年的Computer Game Developers Conference(计算机游戏开发人员大会)上,我还很难得到哪家图形卡厂商的承诺,保证为其硬件提供OpenGL驱动程序。而在接下来的一年里,如果你不能在硬件上演示GLQuake程序,就不能在大会上露面了。今天如果再销售一块没有OpenGL驱动程序的3D图形卡,就好像在卖一台没有Windows打印驱动程序的打印机一样困难。

在OpenGL的使用日益广泛的同时,它的性能也在提高。OpenGL规范从1.0起已经修订了两次(目前用的是1.2)。许多新特性增强了性能,增加了灵活性,并且利用了3D硬件新的特性。在本书中,我们将带你领略这些新特性,并且将在本书的后面采用一种方法,这种方法与当前的环境更协调,是硬件加速的主流。

在OpenGL历史中另一件有趣的事是AUX库的隐退。在本书的上一版中我们只在一章内使用了AUX库,而在这一版中,则根本不讨论它。AUX库已经在很大程度上被一个称为GLUT的更新且功能更多的Windows编程工具包所取代。我们在所有例子中都是用GLUT,甚至本书的最后一节。

最后,我注意到在上一版中,我期待过有一天颜色索引模式成为过去。而今天再也没有人使用颜色索引模式了,也肯定没有人再建立新的硬件来加速这种模式。目前的模式至少是16bit或24bit彩色加上完全的硬件加速,将来会是完全24bit彩色加上完全支持更深的景深、模板和alpha缓冲区(后面你会学到这些缓冲区,它们令图形更酷、更快!)。在这个版本中不讨论颜色索引模式。

第1-6章:OpenGL API基础

第7-

OpenGL + MFC的更多相关文章

  1. 【转】OPenGL MFC绘图

    一.简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC&q ...

  2. vs2010 MFC Opengl实现

    有的人说,学习要按部就班,学了几年的编程稍有点感悟,个人觉得面对技术的不断变化,以及需求的不断变更,如果按部就班的来搞,人生0.5的时间就浪费了,很多时候问自己,why I do need to le ...

  3. MFC单文档视图拆分窗口和相关链接

    第一步:准备2个视图类(如CTViewOne, CTViewTwo) 第二步:在CMainFrame类的头文件中添加数据成员变量: //MainFrm.h protected: CSplitterWn ...

  4. MFC下OpenGL入门(可以用)

    MFC下OpenGL入门 源文件 1, 建一工程文件,我这里命名为first,现在first工程里面我们没有添加任何东西,所有的东西都是MFC自动帮我们创建的. 2, 添加链接库.这一步很关键.打开菜 ...

  5. 在MFC框架中使用OpenGL的简单实例

    引言 我们知道,在MFC框架中,用于绘图的接口是GDI.但GDI只能绘制简单的2D图形,要想制作精美的3D图形,一个可行的办法是使用OpenGL或者Direct3D等第三方库. 由于最近在给导师的一个 ...

  6. MFC中添加OpenGL

    WINDOWS下展示OpenGL有多种形式: MFC 或 win32,该如何向MFC中添加OpenGL?下面是介绍最简单OpenGL框架. 1.首先通过VS建立MFC应用程序-MyOpenGL,选择单 ...

  7. 用MFC实现OpenGL编程

    一.OpenGL简介 众所周知,OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口.但最近几年它成为一个非常优秀的开放式 ...

  8. MFC+OpenGL基础绘制<转>

    转载地址:https://blog.csdn.net/u013232740/article/details/47904115 ------------------------------------- ...

  9. 基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!

    1.基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示 在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样 //设置方式1 glutInitDisplayMode (G ...

随机推荐

  1. 使用flash导出图集动画到unity

    1.选中要导出的元件,元件所有动作要对齐,右键导出Sprite Sheet.. 2.设置如下 3.复制导出的png图片到unity,对图片进行网格裁剪,网格宽高在plist文件中:

  2. one by one 项目 part 4

    出现异常”The last packet sent successfully to the server was 0 milliseconds ago.“的大部分原因是由于数据库回收了连接,而系统的缓 ...

  3. pandas 语句

    1.对于时间格式数据的处理 有些时候time_stamp是object格式,提取相应的日期,小时,星期等: 方法1  from datetime import datetime  user_trad[ ...

  4. Servlet Filter 过滤器 对指定页面不拦截

    package niit.dxs.controller; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; i ...

  5. Rabbitmq 基本属性

    MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列 ...

  6. CentOS6.5下安装ActiveMQ

    1.下载ActiveMQ [root@localhost softwares]# wget http://archive.apache.org/dist/activemq/apache-activem ...

  7. suse11 sp4(虚拟机) 能ping通主机,但是主机ping不通suse虚拟机

    sese的防火墙没关. 查看防火墙状态: rcSuSEfirewall2 status(必须是root账户,sudo都不行) 关闭防火墙:rcSuSEfirewall2 stop 事实上,防火墙有时候 ...

  8. java实现24点游戏代码

    import java.util.Arrays;import java.util.Scanner; public class Test07 {    public static void main(S ...

  9. SQL日期和时间函数

    使用这些函数可以计算日期和时间值.例如,假设您希望了解通常在一周中哪一天的销售量最高.使用 DAYOFWEEK 函数,您可以创建一个公式来标识每天的销售订单数量.再比如,假设您希望比较在过去的一年中的 ...

  10. .net 4.0的Lazy<T>方法,反射实现延迟加载。

    //自己山寨.public class YaLazy<T> { private bool _isValueCreated = false; public bool IsValueCreat ...