OpenGL
相关库
gl 库
gl库是OpenGL的核心库,包含了115个函数,函数名以g1为前缀,包括基本图元,坐标变换等
glu库
OpenGL的实用程序库, 包含43个函数,函数名以glu为前缀,包括颜色,光照,纹理,缓冲区操作,曲线,曲面等等
wgl库
Windows专用库,包含6个函数,函数名以wgl为前缀,用于练级OpenGL和window NC
aux库
OpenGL编程辅助库,包含31个函数,以aux为前缀,包括窗口管理,鼠标键盘事件处理函数,若干个基本的三维几何对象的创建函数
glut库
OpenGl的实用程序工具库,包含30个函数后,以glut为前缀,提供一个独立于操作系统的OpenGL编程接口和窗口。
函数命名规则
函数名唯一,格式如下:
< 库前缀 >< 根命令 > < 可选的参数个数 >< 可选的参数类型 >[ v ] [ * **
例如函数glColor3f(…),g1表示这个函数来自库gl. h, color表示 该函数用于颜色设定,3f表示这个函数采用了三个浮点数参数。
这里v**:表示可用一个指针,指向一个向量或数组;
** * **:表示可用各种方法;
数据类型
| OpenGL数据类型 | 内部表示法 | 定义为C类型 | C字面值后缀 |
|---|---|---|---|
| GLbyte | 8位整数 | signed char | B |
| GLshort | 16位整数 | short | S |
| GLint, GLsizei | 32位整数 | long | L |
| GLfloat, GLlampf | 32 位浮点数 | float | F |
| GLdouble,GLclampd | 64位浮点数 | double | D |
| GLubyte, GLboolean | 8位无符号整数 | unsigned char | Ub |
| GLshort | 16位无符号整数 | unsigned short | Us |
| GLuint, GLenum,GLbitfield | 32位无符号整数 | unsigned long | Ui |
绘制图形的常用指令
指定窗口背景色 glClearColor
OpenGL使用RGB颜色模式,有红绿蓝三色混合而成。代码如下:
glClearColor(1.0f,1.0f,1.0f,1.0f);
函数中的前三个参数分别代表红、绿、蓝。 由0.0到1.0之间的浮点数表示颜色值。最后一个是混合参数,0.0f代表完全透明,1.0代表完全不透明。
glClear 用指定颜色刷新窗口的颜色缓存
glClear(GL_COLOR_BUFFER_BIT);
设定投影参数
设定投影有两个步骤,这个投影就是窗口的显示位置。代码如下:
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
第一个函数将矩阵模型设定为投影模式,第二个函数设定了图形的显示位置范围,gluOrtho2D(0.0,200.0,0.0,150.0);表示在X轴的0~ 200,y轴的0 ~ 160 显示。
绘制图形
绘制矩形的函数为:
glRectf(50.0f,100.0f,150.0f,50.0f);
函数中的4个参数分别表示两个坐标,这两个坐标是对角的,以此来画一个矩形。
#include <windows.h>
#include <gl/gl.h>
void Initial(void){
glClearColor(1.0f,1.0f,1.0f,1.0f);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
}
void Display(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f);
glRectf(50.0f,100.0f,150.0f,50.0f);
glFlush();
}
int main(){
glutInit(%argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
gluInitWindowSize(400,300);
glutCreateWindow("矩形");
glutDisplayFunc(Display);
Initial();
glutMainLoop();
return 0;
}
本文深入探讨OpenGL的gl、glu、wgl、aux及glut库的功能与应用,解析OpenGL数据类型,详细讲解绘图指令如glClearColor、glClear、glMatrixMode、gluOrtho2D及glRectf的使用方法。
491

被折叠的 条评论
为什么被折叠?



