从pygame的系列教程里3D部分,本想好好说一下OpenGL的,但是感觉这样一来就喧宾夺主了,毕竟OpenGL这东西,好好说明下来要比pygame更加博大精深,所以就考虑另外起一个教程来写着了。如今pygame的说明基本完成,实战篇完成两个以后,第三个写起来实在太占时间了,只好退居二线新开这个pyopengl教程作为主要的更新内容。
说实话我不知道这次会写多久,能写的如何,我只能保证自己极力而为。
大凡经典和妄图冒充经典的大段文字,总要在开头从维基啊XX百科那里抄一段历史的,免俗……还是不要了吧,请选择性参阅下面的文字,感谢计算机赋予我们的复制粘贴伟大神器。
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口(Application programming interface)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。OpenGL常用于CAD、虚拟实境、科学可视化程式和电子游戏开发。
OpenGL的高效实现(利用了图形加速硬件)存在于Windows,很多UNIX平台和MacOS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。详细→
然后,PyOpenGL自然就是OpenGL在Python中的调用咯~还用说吗?
上面的图片,左边是OpenGL的图标,右边么,加上个小蛇,想想就是和Python有关,就是PyOpenGL的图标了,好像有些简陋啊……
OpenGL最初是用C写的,所以做OpenGL开发,说实话C/C++是最合适的,效率是最佳的。我一开始也考虑是不是不用Python,就算用Java,可能效率上也能高一些。不过再考虑,首先这是从上一个教程继承来的,换一个语言好像有点不合适;而且用C语言写的话,可能就是工作中使用OpenGL了,基本都是高手了,何必来看我这教程呢~所以还是用Python吧,入门用,思想是主要的,不要让语言本身再给我们带来什么麻烦了。
说到OpenGL的作品,首先想到的自然游戏程序员中神一般存在卡马克写的传世经典 “DOOM” 和 “QUAKE”,说实话用OpenGL做的有名游戏,还真不多,因为它不仅仅用在游戏上,还有大量的软件工具。所以我这次也就不好说用PyOpenGL开发游戏了,只是3D,至于这个3D用来做什么,完全看您自己的兴趣。
为什么要写OpenGL的教程?如果您稍微查一下,会知道当今世界,最有名的OpenGL入门教程当属NeHe的作品,然后周炜的NeHe OpenGL中文教程基本就算是咱们中国人看的标准了,他们很伟大,应该说写的也很有水准。但是有个问题,我看不懂……
就看第一篇入门教程,先不说一大堆的导入库,窗口程序结构,这里三句代码:
glClearDepth(1.0f); // 设置深度缓存
glEnable(GL_DEPTH_TEST); // 启用深度测试
glDepthFunc(GL_LEQUAL); // 所作深度测试的类型
虽然每一句代码都有注释,但是一个初学OpenGL的人真能看到这些注释么?什么是深度缓存?什么叫深度测试?就好像一个不懂英语的老司机突然来了兴致问你什么是ABS,然后你回答“就是Anti-locked Braking System”,这不打击人么,估计回答一句“哦”就去忙其他事情了……
我想写一个有一定的编程知识的人就能看懂的OpenGL教程,你可以不需要有图像编程经验,不需要明白透视、光线原理,不需要懂C/C++,可以不懂矩阵,我会在适合的时候讲解;你甚至可以不懂Python(但是想实践的画,还是学一下吧,有点编程基础的半天学会,没有的三五天也可以入门了),Python在这里只是载体,核心的知识超越语言而存在,不过我大概不会回答Python相关的问题,需要的话请自己学习,资料太多了。
但你应该玩过游戏,或用过3D软件,一看游戏画面知道是2D还是3D的,至少明白任意一种编程语言,还有,而且是最重要的,你要有足够的热忱与信心。That’s not all, but enough!
作为第一篇是不是有些短了?就当序吧,星星之火,可以燎原:)