openGL和Direct3D是当前主要的个人计算机3DAPI,它的最大特点是跨平台和可扩展.我在这里不想回顾它的发展历史,让我们直接进入正题,看看如何开始建立openGL程序框架.
一.使用辅助库
这是最简单快速的建立openGL程序的方式,程序通过字符命令模式,可以在linux和windows等下运行.网上有许多介绍文章,这里不做详细介绍,而且这一般都不会使用,除非你是初学者.
以下以Windows 下的Visual C++为例:
1.工程中包含进相关库 #paragma comment(lib,"glaux.lib")
2.源代码前包括相关的头文件 #include <GL/glaux.h>
3.调用相关函数编写openGL程序
#paragma comment(lib,"opengl32.lib") //包含openGL基本库,openGL程序一定有
#paragma comment(lib,"glaux.lib") //包含openGL辅助库,要用辅助函数才有
#include "windows.h" //windows 下需要有,不然出错
#include <GL/gl.h> //基本函数头文件
#include <GL/glaux.h> //辅助函数头文件
void myinit(void);
void CALLBACK myReshape(GLsizei w,GLsizei h);
void CALLBACK display(void);
void myinit(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
}
void CALLBACK myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-1.5,1.5,-1.5*(GLfloat)h/(GLfloat)w,
1.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);
else
glOrtho(-1.5*(GLfloat)h/(GLfloat)w,
1.5*(GLfloat)h/(GLfloat)w,-1.5,1.5,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void CALLBACK display(void)
{
glColor3f(1.0,1.0,0.0);
auxWireSphere(1.0);
glFlush();
}
void main(void)
{
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,500,500);
auxInitWindow("AUX_SAMPLE");
myinit();
auxReshapeFunc(myReshape);
auxMainLoop(display);
}