参看:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html
设置点大小
void myDisplay(void)
{
GLfloat x;
glClear(GL_COLOR_BUFFER_BIT); //清除颜色
glPointSize(5.0f); //点的大小为5像素,默认为1像素
glBegin(GL_POINTS);
glVertex2f(0.0f, 0.0f);
glEnd();
glPointSize(2.0f); //点的大小为2像素,默认为1像素
glBegin(GL_POINTS);
glVertex2f(0.5f, 0.5f);
glEnd();
glFlush(); //立即执行前面的命令,而不是在缓冲区中等待
}
关于直线
void myDisplay(void)
{
GLfloat x;
glClear(GL_COLOR_BUFFER_BIT); //清除颜色
glEnable(GL_LINE_STIPPLE); //启动虚线模式
glLineStipple(2, 0x0F0F); //设置虚线样式,0F0F转为二进制,从低位起,0的地方2个点为虚,1的地方2个点为实
glLineWidth(10.0f); //设置线宽
glBegin(GL_LINES); //设置画线模式
glVertex2f(-0.5f, 0.0f);
glVertex2f(0.5f, 0.0f);
glEnd();
glFlush(); //立即执行前面的命令,而不是在缓冲区中等待
}
关于多边形
多边形的两面及绘制方式,反转
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT); //清除颜色
glPolygonMode(GL_FRONT, GL_FILL); //设置正面为填充模式
glPolygonMode(GL_BACK, GL_LINE); //设置反面为线形模式
glFrontFace(GL_CCW); //设置逆时针方向为正面,CCW即CounterClockWise
glBegin(GL_POLYGON); //设多边形模式
glVertex2f(-0.5f, -0.5f); //逆时针方向画一个正方形
glVertex2f(0.0f, -0.5f);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.5f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(0.0f, 0.0f); //顺时针方向画一个正方形
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(0.5f, 0.0f);
glEnd();
glFlush(); //立即执行前面的命令,而不是在缓冲区中等待
}
镂空多边形
void myDisplay(void)
{
/*用Windows自带的画笔程序新建一副图片,取名为mask.bmp,注意保存时,应该选择“单色位图”。在“图象”->“属性”对话框中,
设置图片的高度和宽度均为32。
用放大镜观察图片,并编辑之。黑色对应二进制零(镂空),白色对应二进制一(不镂空),编辑完毕后保存。*/
static GLubyte Mask[128];
FILE *fp;
fp = fopen("mask.bmp", "rb");
if(!fp)
return;
// 移动文件指针到这个位置,使得再读sizeof(Mask)个字节就会遇到文件结束
if(fseek(fp, -(int)sizeof(Mask), SEEK_END))
return;
if(!fread(Mask, sizeof(Mask), 1, fp)) // 读取sizeof(Mask)个字节到Mask
return;
fclose(fp);
glClear(GL_COLOR_BUFFER_BIT); //清除颜色
glEnable(GL_POLYGON_STIPPLE); //启动多边形镂空模式
glPolygonStipple(Mask); //设置镂空样式
glRectf(-0.5f, -0.5f, 0.0f, 0.0f); //左下为镂空正方形
glDisable(GL_POLYGON_STIPPLE); //关闭多边形镂空模式
glRectf(0.0f, 0.0f, 0.5f, 0.5f); //右上为非镂空正方形
glFlush(); //立即执行前面的命令,而不是在缓冲区中等待
}