學海拾遺

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

          OpenGL in VC++

          Posted on 2008-01-19 00:30 tanzek 閱讀(547) 評論(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()函數,就不需要定義這個參數.
          為什么?

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


          網站導航:
           
          主站蜘蛛池模板: 甘孜县| 综艺| 杭锦后旗| 张家港市| 霍林郭勒市| 西藏| 抚宁县| 正阳县| 延川县| 建瓯市| 孝感市| 弋阳县| 郧西县| 永济市| 红河县| 中方县| 辉县市| 信丰县| 额尔古纳市| 克山县| 贺兰县| 吉安市| 通渭县| 陆丰市| 潞城市| 梁山县| 江城| 泰州市| 英德市| 日喀则市| 巨野县| 安康市| 无为县| 兴海县| 庄河市| 太谷县| 葫芦岛市| 逊克县| 土默特左旗| 大邑县| 和平县|