03-不同种类线条的绘制
OpenGL 实现不同线段的画法
OpenGL 中画线的方法有很多种,这里示范的是颜色设置,线宽设置,实线以及各种不同的虚线模式的设置,还有就是绘图面板中的坐标系的重新定义,默认OpenGL 的坐标远点在面板的正中心,x ,y 的坐标范围都是(-1.0,1.0),其实是可以重新定义的,更符合我们使用习惯,但是有时候也会带来一些麻烦,看情况使用。
实现效果截图:
附代码:
#include
#include //引用相关包
#include
#define drawOneLine(x1,y1,x2,y2)
glBegin(GL_LINES);glVertex2f((x1),(y1));glVertex2f((x2),(y2));glEnd(); //预定义
void init(void)
{
glClearColor(1,1,1,0);
glShadeModel(GL_FLAT);
}
void display(void)
{
int i;
glClear(GL_COLOR_BUFFER_BIT); //清屏
glColor3f(0,1,0); //设置线的颜色
glLineWidth(2.0); //设置线的宽度,参数是像素值
drawOneLine(50.0,150.0,350.0,150.0); //绘制一条直线
//3条绿线段
glColor3f(0,1,0);
glLineWidth(2.0); //设置线宽为像素
glEnable(GL_LINE_STIPPLE);
glLineStipple(1,0x0101); //绘制直线的模式设置,十六进制换成二进制后为1的地方是实线,为0的地方为虚线
drawOneLine(50.0,125.0,150.0,125.0);
glLineStipple(1,0x00ff);
drawOneLine(150.0,125.0,250.0,125.0);
glLineStipple(1,0x1c47);
drawOneLine(250,125,350,125);
//3条红色线段
glColor3f(1,0,0);
glLineWidth(5.0); //设置线宽
glLineStipple(1,0x0101);
drawOneLine(50.0,100.0,150.0,100.0);
glLineStipple(1,0x00ff);
drawOneLine(150.0,100.0,250.0,100.0);
glLineStipple(1,0x1c47);
drawOneLine(250,100,350,100);
glLineWidth(2.0);
glFlush();
}
void reshape(int w,int h){
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)w,0.0,(GLdouble)h);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv); //固定格式
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(400, 400); //显示框的大小
glutInitWindowPosition(100,100); //确定显示框左上角的位置 glutCreateWindow("第三个OpenGL 程序(各种线)"); init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}