学海拾遗

生活、技术、思想无处不在学习
posts - 52, comments - 23, trackbacks - 0, articles - 3
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

OpenGL in VC++

Posted on 2008-01-19 00:30 tanzek 阅读(526) 评论(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.01.01.00.0);
14     glColor3f(0.0f0.0f0.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(00500500); 
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()函数,就不需要定义这个参数.
为什么?

只有注册用户登录后才能发表评论。


网站导航: