搜集的优良OpenGL教程 »

学OpenGL的第一步,不应是配置环境

学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教程》

 

  • 相关文章:
  • quote 1.zhouqq
  • 还在用函数做框架,应该用C++的对象做框架了。
  • 2009-6-19 10:54:34 回复该留言
  • quote 2.cainiao
  • 楼上的"高人"不妨说说什么算用c++对象做框架.
    小弟过于浅薄,实在不懂你们这些"高人"口中的禅机

    今晚刚巧看到楼主几篇文章,感觉朴实易懂,遂决定从头把楼主opengl系列的40篇博文仔细学习一下.多谢,希望有机会能请教一下.再谢.
  • 2009-11-2 21:25:34 回复该留言
  • quote 3.chuxue
  • 我想编写win32 console (控制台)程序,就不许有理解其他程序框架,但是就是调试不出来!错误如下:Linking...
    Opengl.obj : error LNK2001: unresolved external symbol ___glutInitWithExit@12
    Opengl.obj : error LNK2001: unresolved external symbol ___glutCreateWindowWithExit@8
    Debug/10.exe : fatal error LNK1120: 2 unresolved externals
    执行 link.exe 时出错.

    10.exe - 1 error(s), 0 warning(s)
    希望能够指点一下
    zwqxin 于 2010-11-20 0:19:12 回复
    看上去是你用的glut框架的问题的说..
  • 2010-11-19 17:26:16 回复该留言
  • quote 4.vivinxiao
  • 楼主,麻烦问一下啊,你那个NEHE是针对VC6的嘛,那有没有对VS2008或者2010适用的呢~
    谢谢
    zwqxin 于 2010-11-30 20:46:09 回复
    手头上没有的说,可以在网上找找~
  • 2010-11-29 21:41:37 回复该留言
  • quote 5.youke
  • 楼主的文章写的很好 要用行为来表明态度
    一定会看完
  • 2013-1-17 18:34:42 回复该留言
  • quote 6.xiyatuyun
  • 感谢OSG感谢opengl感谢GLSL 他们让我掉进坑里了

    感谢楼主扔了个绳子,我得爬上来啊
  • 2014-1-16 10:07:02 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

IE下本页面显示有问题?

→点击地址栏右侧【兼容视图】←

日历

Search

网站分类

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2008-2013 ZwqXin. All Rights Reserved. Theme edited from ipati.