1、OpenGL坐标系
OpenGL坐标系跟笛卡尔直角坐标系类似,只是z轴相反,OpenGL坐标系z轴正方向向外。
2、顶点信息由坐标位置、颜色值、法向量、纹理坐标组成。
3、核心函数后缀
后缀 | 类型 | 对应C变量 | 对应OpenGL数据类型 |
b | 8-bit int | signed char | GLbyte |
s | 16-bit int | short | GLshort |
i | 32-bit int | long | GLint,GLsizei |
f | 32-bit float | float | GLfloat,GLclampf |
d | 64-bit float | double | GLdouble,GLclampd |
ub | 8-bit unsigned int | unsigned char | GLubyte,GLboolean |
us | 16-bit unsigned int | unsigned short | GLushort |
ui | 32-bit unsigned int | unsigned long | GLuint,GLenum,GLbitfield |
v |
有些函数的这些后缀的最后还有一个字母v ,它表示这个函数所接受的参数是个指向值向量 (数组)的指针,而不是一系列的单独参数。
例:
glColor3f(1.0f, 0.0f, 0.0f);
GLfloat color_array[] = {1.0f, 0.0f, 0.0f};
glColor3fv(color_array);
4、状态变量
//保存和恢复状态变量
void glPushAttrib(GLbitfield mask)
void glPopAttrib(void)
//查询状态变量状态,激活、取消状态变量
Glboolean glIsEnable(GLenum cap) //GL_TRUE,GL_FALSE
void glEnable(GLenum cap)
void glDisable(GLenum cap)
//获取状态变量取值范围 params[0]最小值,params[1]最大值
void glGetBooleanv(GLenum pname,GLboolean *params)
void glGetDoublev(GLenum pname,GLdouble *params)
void glGetFloatv(GLenum pname,GLfloat *params)
void glGetIntegerv(GLenum pname,GLint *params)
5、渲染描述表
HGLRC hrc;
一个线程必须且只能使用一个当前渲染描述表。渲染描述表是线性安全的,多个线程可以同时使用一个渲染描述表。