OpenGL 完全教程(写给Delphi的开发者) 前言
前言
在开发了许多2D图形程序之后,许多人开始对3D图形编程产生了兴趣。学习一套3D API,是进行3D图形编程的基础。在有趣的3D图形编程中,3D API只不过充当着一种低级的工具而已。因此,在这里我要提醒想学习3D API的朋友,无论你将要使用DirectX,或者跟我一样使用OpenGL,都不要把它们看得过于神圣。事实上它们只是一套API,学习它,你只须一定的Windows编程基础即可。它们不需要你有多么高深的数学功底,也不需要什么灵活的头脑——如果你只是想用OpenGL渲染3D图形的话,就不需要什么特别的知识。因为无论是DirectX还是OpenGL,都只是在帮你画画而已。
我的这套教程,写给所有希望学习OpenGL的朋友,尤其是Delphi的开发者。因为在3D图形编程方面的资料,几乎全部都是基于VC++的,这给使用其他语言的刚入门的开发者带来一些不便,造成这些不便的原因有以下几条:
有些初学者看不懂C语言,或者无法理解C++里面的那一大堆复杂的操作符;
这些用C写的范例代码和程序中,使用了一些附加库,比如GLUT等等,而这些附加库就根本找不到Delphi版的头文件。
无论是Delphi的开发人员还是C的开发人员,都可以畅通无阻地使用此教程:我写此教程的目的就是为了方便Delphi的开发人员,让他们不要把太多的精力浪费在寻找头文件或翻译.H文件上,对于使用C的开发人员,他们往往很容易理解Pascal语言而且Pascal语言可以很容易的100%的翻译成C语言。
在本教程中,我们将学习OpenGL的以下这些功能:
初始化OpenGL
OpenGL的工作机制
创建视觉变换投影
使用OpenGL绘制基本图元
矩阵变换
颜色和光照
纹理贴图
在OpenGL中显示文字
使用3D模型
混色和雾化效果
缓冲区的使用
上面列举的,并不一定是本教程的全部内容。在今后的时间里,我可能会增加更多的章节,但这些是OpenGL最本分、最常用的部分。学会了上面的内容,就基本掌握了OpenGL。
OpenGL 完全教程(写给Delphi的开发者) 前言的更多相关文章
- OpenGL完全教程 第一章 初始化OpenGL
第一章 初始化OpenGL 无论是什么东西,要使用它,就必须对它进行初始化.如果你之前使用过GDI,你应该也多多少少了解到GDI在绘制图形之前要为之创建渲染环境.OpenGL也一样.本章给出的代码,大 ...
- OpenGL官方教程——着色器语言概述
OpenGL官方教程——着色器语言概述 OpenGL官方教程——着色器语言概述 可编程图形硬件管线(流水线) 可编程顶点处理器 可编程几何处理器 可编程片元处理器 语言 可编程图形硬件管线(流水线) ...
- [翻译]opengl扩展教程2
[翻译]opengl扩展教程2 原文地址https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/extensions_part2.php [ ...
- [翻译]opengl扩展教程1
[翻译]opengl扩展教程1 原文地址https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/extensions.php [翻译]ope ...
- QT OpenGL中文教程在QT4版本后的错误代码更改(一)
由于教程中说的已经够可以了,这里就不对代码进行分析了,有兴趣可以自己去看看.这个教程来源于原来的NeHeOpenGL中文教程 (http://www.yakergong.net/nehe/) ,但其有 ...
- OpenGL ES教程系列(经典合集)
为了搞透播放器的开发,花了些时间收集这些资料,虽然我已经搞定opengles渲染视频的内容,但是想玩玩opengles,往深里玩,图像处理这块是个好的方向,所以opengles是值得好好学的. O ...
- XCode教程之 如何在苹果开发者平台添加设备UDID
XCode教程之 如何在苹果开发者平台添加设备UDID.在Xcode开发中,如何在苹果开发者平台添加新的手机设备UDID,进行测试,具体如下 工具/原料 Apple Developer 方法/步骤 1 ...
- 再次写给VC++ Windows开发者
距离我的上一篇文章--写给VC++ Windows开发的初学者已经4年多时间过去了,感慨于时光如梭之余,更感慨于这么多年来(从1998年我初学VC 算起吧)到如今其实我仍然还只是个初学者而已.看看之前 ...
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
随机推荐
- hdu 5284 BestCoder Round #48 ($) 1001 水题 *
题意:看一个字符串中是否包含顺序的 w y h ,字符之间可以有其他字符,并且如果有多个连续的vv,则可以看做一个w 比较水,直接看代码 #include<cstdio> #incl ...
- Java Serializable(序列化)
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...
- Android虚拟机中的sqlite数据库文件
Android虚拟机中的sqlite数据库文件 ①
- Effective C++笔记:资源管理
资源:动态分配的内存.文件描述器.互斥锁.图形界面中的字型与笔刷.数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统. 条款13:以对象管理资源 当我们向 ...
- php中count获取多维数组长度的方法
转自:http://www.jb51.net/article/57021.htm 本文实例讲述了php中count获取多维数组长度的实现方法.分享给大家供大家参考.具体分析如下: 先来看看下面程序运行 ...
- Hark的数据结构与算法练习之奇偶排序
算法说明 奇偶排序又叫奇偶换位排序,砖排序.它是一种交换排序,也是冒泡的一个变种 顾名思义,奇偶排序,其实就是先循环奇数位,然后将奇数位与偶数位比较计算. 然后再循环偶数位,再和奇数位比较运算.看一下 ...
- Tri Tiling[HDU1143]
Tri Tiling Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- ios cocos2d TexturePacker生成文件后的使用方法
(1)将*.pvr.ccz文件转换为CCSpriteBatchNode (2) 将对应的plist文件读到CCSpriteFrameCache中 (3) 从CCSpriteFrameCache获取 ...
- CSS浏览器兼容的那些事儿
1.文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,op ...
- NSString 处理技巧:分割字符串
摘要 string类型是objective-c中用的最多的类型之一,有时会出现字符串中有我们不想要的字符. 如 "hello world"中的空格,或是"hello/wo ...