學海拾遺

          生活、技術、思想無處不在學習
          posts - 52, comments - 23, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          OpenGL in VC++

          Posted on 2008-01-19 00:30 tanzek 閱讀(540) 評論(1)  編輯  收藏
          首先看一個簡單的例子:
          ?1?#include?<windows.h>
          ?2?#include?<math.h>
          ?3?#include?<gl/gl.h>
          ?4?#include?<gl/glu.h>
          ?5?#include?<gl/glaux.h>
          ?6?
          ?7?const?int?screenWidth?=?640;
          ?8?const?int?screenHeight?=?480;
          ?9?GLdouble?A,?B,?C,?D;
          10?
          11?void?myInit(void)
          12?{
          13?????glClearColor(1.0,?1.0,?1.0,?0.0);
          14?????glColor3f(0.0f,?0.0f,?0.0f);
          15?????glPointSize(2.0);
          16?????glMatrixMode(GL_PROJECTION);
          17?????glLoadIdentity();
          18?????gluOrtho2D(0.0,?(GLdouble)screenWidth,?0.0,?(GLdouble)screenHeight);
          19?????A?=?screenWidth?/?4.0;
          20?????B?=?0.0;
          21?????C?=?D?=?screenHeight?/?2.0;
          22?}
          23?
          24?void?myDisplay(void)
          25?{
          26?????glClear(GL_COLOR_BUFFER_BIT);
          27?????glBegin(GL_POINTS);
          28?????for(GLdouble?x=0;?x<4.0;?x+=0.005)
          29?????{
          30?????????GLdouble?func?=?exp(-x)?*?cos(2?*?3.14159265?*?x);
          31?????????glVertex2d(A?*?x?+?B,?C?*?func?+?D);
          32?????}
          33?????glEnd();
          34?????glFlush();
          35?}
          36?
          37?void?main(int?argc,?char**?argv)
          38?{
          39?????auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);?
          40?????auxInitPosition(0,?0,?500,?500);?
          41?????auxInitWindow("simple");?
          42?????myInit();
          43?????auxMainLoop((AUXMAINPROC)myDisplay);
          44?}
          運行結果如下圖所示:
          FirstDemo.JPG

          在上面的例子,透露著一個簡單的OpenGL操作框架:
          void?main()
          {
          ???InitWindows();??
          //OpenGL中初始化窗口
          ???RegisterFunc(MyFunc);??//注冊回調函數
          ???MyInit();????//自定義初始化過程
          ???DoDraw();????//畫數部分
          }

          其實以上的例子來自于《計算機圖形學——用OpenGL實現(第2版)》的內容,但是在原來的程序中,使用的是glut函數,即來自于OpenGL的實用工具庫。但是在VC++中,并不自帶此輔助庫,但在它的輔助庫中,有相應的aux函數,因此,上例使用的都是輔助庫中的aux函數。

          評論

          # re: OpenGL in VC++  回復  更多評論   

          2008-04-08 19:12 by jcl_512
          請問: auxMainLoop((AUXMAINPROC)myDisplay);中的AUXMAINPROC
          是個什么類型的聲明?
          我要是用glut函數庫里的glutMainLoop()函數,就不需要定義這個參數.
          為什么?

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巴林右旗| 吴桥县| 泽库县| 浏阳市| 晋州市| 原平市| 宝清县| 敖汉旗| 宜良县| 夏河县| 竹山县| 蒲江县| 清流县| 长白| 桂阳县| 五台县| 治县。| 淮南市| 仪陇县| 江阴市| 屯昌县| 新源县| 东至县| 开江县| 杂多县| 延寿县| 康保县| 泰和县| 梧州市| 清水县| 卓资县| 栾城县| 左权县| 元氏县| 固安县| 晴隆县| 娄底市| 鱼台县| 平阳县| 汾阳市| 马尔康县|