学OpenGL的第一步,不应是配置环境,而是,
Hello World!
还记得我们学的第一堂程序语言设计的课吗?如果你们跟我一样,那就是C语言的“Hello World!”了。
是的,屏蔽编译器配置的讲解,屏蔽printf()的细节,傻瓜式的感受。这就好象开博客一样,无论之前作了多么详尽的相关调查准备,不真正弄来一个空间一个域名,不下载一个博客程序慢慢研究,你的思想永远处于空转状态。
社会心理学上有一个有趣的描述:行为决定态度。当你呆看眼前的一堆作业而郁闷,也许最后你就放弃做这些作业了。而当你不管三七二十一,硬头皮开始做第一道题后,也许不知不觉地就会产生一种微妙的感觉。其实这时候渐渐地你的心已经在动摇了,你对待做这些作业的态度也渐渐改变了(当然有些人“心若磐石”的话……)。恩,实际编程、写博客也一样,学OpenGL当然也一样,勇敢地跨出实际的第一步,进入殿堂吧!
有人说,学习OpenGL编程,一开始啥都不会嘛,怎么办?我也只是一个学习者,但我觉得我可以给个建议:获得一个现成的框架,从修改框架里的作图部分函数开始。在此要十分,万分感谢教导我OpenGL的刘老师,在开课的第一堂,就给我们提供了一个可直接用的框架,这无疑是重要且有意义的一步。(如果一开始就像网上很多介绍文章般给我们讲如何配置环境弄窗口,大概我早晕而罢之了。)因此我在这里也推荐给其他偶尔来到本页面的有志学习OpenGL的人。
NEHE向导文件.rar (NEHE框架,for VC6)
NEHE是什么(或者,NEHE是谁)?恩,已经接触OpenGL一些日子的人,大概无人不知吧。就是,就是“教程”啊(笑)。其实是经典教程(NEHE OpenGL Tutorials )的作者呢。其实该网站或者网络上还有不少其他框架提供(glut框架MFC框架等等,都是已经为你“配置好的环境”),以上提供的只是我一直用的而已。其实初学者只需要专注于里面的两三个函数,以后慢慢学不迟:
作图函数 | 函数名含draw啦render,screen,display字样 |
初始化函数 | 函数名含init等字样 |
.…… | 构造函数啦等等,还有些可以迟些再了解 |
以我刚才上传的框架为例,首先看看里面的说明(不是我写的哦)
- 1.拷贝awx文件到vc6安装目录下($Install_Directory\Common\MSDev98\Bin\IDE);
- 2.打开VC6,新建工程,选择MFC OpenGL AppWizard向导,输入新建工程名;
- 3.向导第二步,设置分辨率和屏幕深度,点示“完成”按钮;(注:最好选择1024*768,和 32bit)
- 4.选择左侧ClassView(类视导航),打开新建工程的类树;
- 5.在类树下,打开CMainFrame类
- 6.点击到CMainFrame下的成员函数RenderGLScene。
- 修改glBegin(GL_QUADS)到glEnds()之间的代码。
好了,OpenGL“Hello world",建议初学者手动敲入:
glBegin(GL_QUADS); …… glEnd(); | 改成→ | glBegin(GL_TRIANGLES); glVertex3f(-1,0,0); glVertex3f(1,0,0); glVertex3f(0,1,0); glEnd(); |
怎么样?一个底边为2,高为1的三角形。
单位就是opengl坐标轴单位,三个顶点(x,y,z)分别在(-1,0,0),(1,0,0),(0,1,0);
opengl坐标轴(x-y-z右手系):你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的就是z正轴啦。
(注:glTranslatef为了把图形移后点,因为屏幕平面就是x-y平面嘛,所以向z负轴移后点看得清楚;glRotatef实现了旋转,同时绕三个轴,三个*rot是速度啦;其他还有具体的你就学下去就知道了,记住现在是Hello world哦。)
好了,然后,其实,这里ZwqXin.com并不做教程哦。本文章只是为了说明一个日常生活中的道理,记住了吗?行为决定态度。
如果你是初学者+有志于和我和其他学习者一起学习3D图形学编程,看看我下一篇文章吧:)
—— 《搜集的优良OpenGL教程》