OpenGL中的点将被画成单个的像素。同一像素上,OpenGL可以绘制许多坐标只有稍微不同的点,但该像素的具体颜色将取决于OpenGL的实现。
OpenGL的直线必须是有限长度,它可以由两个端点来确定。(可以理解为数学中的线段)
多边形是由多条线段首尾相连而形成的闭合区域。OpenGL规定,一个多边形必须是一个“凸多边形”(其定义为:多边形内任意两点所确定的线段都在多边形内,由此也可以推导出,凸多边形不能是空心的)。多边形可以由其边的端点(这里可称为顶点)来确定。(注意:如果使用的多边形不是凸多边形,则最后输出的效果是未定义的——OpenGL为了效率,放宽了检查,这可能导致显示错误。要避免这个错误,尽量使用三角形,因为三角形都是凸多边形)
“点”是一切的基础
一、关于点
关于点
1.指定点的大小
点的大小默认为1个像素
void glPointSize(GLfloat size); //改变点的大小
size必须大于0.0f,默认值为1.0f,单位为“像素”。
2.
画点的函数
glVertex*
二、关于直线
1.指定直线宽度
直线的宽度默认为1个像素
void glLineWidth(GLfloat width); //指定直线宽度
width 必须大于0.0f,默认值为1.0f,单位为“像素”。
2.画虚线
void glLineStipple(GLint factor, GLushort pattern); //设置虚线的样式
glEnable(GL_LINE_STIPPLE); //启动虚线模式
glDisable(GL_LINE_STIPPLE); //关闭虚线模式
pattern是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。
示例:
glLineWidth(3.0f); //设置直线宽度
glLineStipple(1, 0x3F07); //设置虚线的模式
glEnable(GL_LINE_STIPPLE); //启用虚线
glPushMatrix();
glTranslatef(0.0f,0.0f,-4.0f);
glBegin(GL_LINES);
glVertex3f(-2.0f,0.0f,0.0f);
glVertex3f(2.0f,0.0f,0.0f);
glEnd();
glPopMatrix();
效果图:
此时虚线模式为Ox3F07(二进制形式为0011111100000111),它所画出来的直线是这样的:先连续绘制3个像素,然后连续5个像素留空,再连续绘制6个像素,最后两个像素留空(注意,首先是从低位开始的)。如果factor是2,那么这个模式便被扩展为:先连续绘制6个像素,然后连续10个像素留空,再连续绘制12个像素,最后4个像素留空。
如果没有启用点画线功能,OpenGL会自动把pattern当做为OxFFFF,把factor当成1。