1、顶点函数
OpenGL中顶点是图形绘制的基础。先了解一下顶点相关的函数:
顶点函数:
glVertexN?() 和 lVertexN?v()
X:表示函数有几个参数:
?:表示函数参数的类型:
v: 表示参数是指针形式。
如:
glVertex2i(1, 3): 表示两个整数型参数,1=x坐标,3=y坐标,z坐标为0
glVertex2f(1.0f, 3.0f):表示两个浮点型参数,z坐标=0.0f,z坐标为0
glVertex3f(1.0f, 3.0f, 0.0f):表示三个浮点型参数:1.0f=x坐标,3.0f=y坐标,z坐标=0.0f
glVertex4f(1.0f, 3.0f, 0.0f, 1.0f):表示四个浮点型参数
GLfloat VertexArr3[] = {1.0f, 3.0f, 0.0f};
glVertex3fv(VertexArr3): 三元素浮点向量
glVertexN?() 中数据(?)类型取值:
s表示16位整数(OpenGL中将这个类型定义为GLshort):glVertex2i(1, 3)
i表示32位整数(OpenGL中将这个类型定义为GLint和GLsizei):glVertex2i(1, 3)
f表示32位浮点数(OpenGL中将这个类型定义为GLfloat和GLclampf):glVertex2f(1.0, 3.0)
d表示64位浮点数(OpenGL中将这个类型定义为GLdouble和GLclampd):glVertex2d(1.0, 3.0)
2、绘制点线多边
glBegin( /* 模式 / );
/ 使用glVertex*系列函数指定点的位置 */
glEnd();
glBegin中的模式:
GL_POINTS:画点
GL_LINES:画线
GL_LINE_STRIP:画线组,首尾相连,不封闭
GL_LINE_LOOP:画线组头尾相连,封闭图
GL_TRIANGLES:三角形
GL_TRIANGLE_STRIP:三角形,头尾相连。
GL_TRIANGLE_FAN:三角形,扇形。
等等。
例:
// 画两个点
glBegin(GL_POINTS);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.5f, 0.0f);
glEnd();
// 画一条线
glBegin(GL_LINES);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.5f, 0.0f);
glEnd();
// 画三角形
glBegin(GL_TRIANGLES);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.5f, 0.0f);
glVertex2f(0.5f, 0.5f);
glEnd();
3、源程序:画出正弦函数的图形
void Step2_DrawDot_Line_Polygon(void)
{
const GLfloat factor_x = 0.1f;
const GLfloat factor_y = 0.5f;
GLfloat x;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES); // 画线模式
glVertex2f(-1.0f, 0.0f);
glVertex2f(1.0f, 0.0f); // 以上两个点可以画x轴
glVertex2f(0.0f, -1.0f);
glVertex2f(0.0f, 1.0f); // 以上两个点可以画y轴
glEnd();
glBegin(GL_LINE_STRIP); // 画线组模式,上一条的线尾与本次线的线头相连
for(x=-1.0f/ factor_x; x<1.0f/ factor_x; x+=0.01f)
{
glVertex2f(x*factor_x, sin(x)*factor_y);// 点坐标指定
}
glEnd();
glFlush();
}
运行结果:
4、源程序下载:
注意在debug-x86下编译。别的模式没有配置。