正文

(OPENGL编程指南第四版)OPENGL范例程序2.52008-03-02 22:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/33130.html

分享到:

// 范例P37.cpp : Defines the entry point for the console application.
//

#include <gl/glut.h>

#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \
 glVertex2f((x1),(y1));glVertex2f((x2),(y2));glEnd();

void display()
{
 glClear(GL_COLOR_BUFFER_BIT);     //清除所有像素
 glColor3f(1.0,1.0,1.0);       //设置画笔白色
 
 /*在第1行,三条线段不同点画模式*/
 glEnable(GL_LINE_STIPPLE);
 glLineStipple(1,0x0101);
 drawOneLine(50,125,150,125);
 glLineStipple(1,0x00ff);
 drawOneLine(150,125,250,125);
 glLineStipple(1,0x1c47);
 drawOneLine(250,125,350,125);
 
 /*在第2行,三条宽线使用不同的点画模式*/
 glLineWidth(5);
 glLineStipple(1,0x0101);
 drawOneLine(50,100,150,100);
 glLineStipple(1,0x00ff);
 drawOneLine(150,100,250,100);
 glLineStipple(1,0x1c47);
 drawOneLine(250,100,350,100);
 glLineWidth(1);

 /*在第3行,6条使用“短划线/点/短划线”模式的线段组成一个相连的线带*/
 glLineStipple(1,0x1c47);
 glBegin(GL_LINE_STRIP);
 for(int i=0;i<7;i++)
  glVertex2f((50+i*50),75);
 glEnd();
 
 /*在第4行,绘制6条独立,使用相同点画模式的线段*/
 for(i=0;i<6;i++)
  drawOneLine((50+(i*50)),50,(50+(50*(i+1))),50);//???

 /*在第5行,绘制一条线段,点画模式重复因子为5*/
 glLineStipple(5,0x1c47);
 drawOneLine(50,25,350,25);

 glDisable(GL_LINE_STIPPLE);
 glFlush();
 
}

void init()
{
 glClearColor(0.0,0.0,0.0,0.0);     //用黑色清除背景
 /*初始化视景体*/
 glShadeModel(GL_FLAT);
}
void reshape(int w,int h)
{
 glViewport(0,0,(GLsizei)w,(GLsizei)h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluOrtho2D(0,w,0,h);
}
int main(int argc,char ** argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize(400,150);     //初始化窗口大小
 glutInitWindowPosition(100,100);    //初始化窗口位置
 glutCreateWindow("hello");      //创建标题为“hello”的窗口
 init();//调用初始化函数
 glutDisplayFunc(display);      //注册回调函数
 glutReshapeFunc(reshape);
 glutMainLoop();         //进入主循环处理事件
 return 0;
}

阅读(2329) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册