• OpenGL直线点画模式


    程序来自《OpenGL编程指南第七版》

     1 #include "stdafx.h"
     2 #include <Windows.h>//头文件一定要加上,因为windows版本的gl.h和glu.h文件内部使用的宏是在windows.h中定义的
     3 #include <gl/GL.h>
     4 #include <gl/GLU.h>
     5 #include <gl/glut.h>
     6 static GLfloat spin=0.0;
     7 int drawOneLine(float x1,float y1,float x2,float y2) 
     8 {
     9     glBegin(GL_LINES);
    10     glVertex2f((x1),(y1));
    11     glVertex2f((x2),(y2));
    12     glEnd();
    13     return 0;
    14 }
    15 
    16 void init (void)
    17 {
    18     glClearColor(0.5,0.5,0.5,0.0);
    19     glShadeModel(GL_FLAT);
    20 }
    21 void display(void)
    22 {
    23     int i;
    24     glClear(GL_COLOR_BUFFER_BIT);
    25     glColor3f(1.0,1.0,0.0);
    26     glEnable(GL_LINE_STIPPLE);
    27     glLineStipple(1,0x0101);//注意glLineStipple用法以及每个参数的意义
    28     drawOneLine(50.0,125.0,150.0,125.0);
    29     glLineStipple(1,0x00FF);
    30     drawOneLine(150.0,125.0,250.0,125.0);
    31     glLineStipple(1,0x1C47);
    32     drawOneLine(250.0,125.0,350.0,125.0);
    33     glLineWidth(5.0);
    34     glLineStipple(1,0x0101);
    35     drawOneLine(50.0,100.0,150.0,100.0);
    36     glLineStipple(1,0x00FF);
    37     drawOneLine(150.0,100.0,250.0,100.0);
    38     glLineStipple(1,0x1C47);
    39     drawOneLine(250.0,100.0,350.0,100.0);
    40     glLineWidth(1.0);
    41     glLineStipple(1,0x1C47);
    42     glBegin(GL_LINE_STRIP);
    43         for (i=0;i<7;i++)
    44         glVertex2f(50.0+((GLfloat)i+50.0),75.0);
    45     glEnd();
    46     for (i=0;i<6;i++)
    47         drawOneLine(50.0+((GLfloat)i+50.0),50.0,50.0+((GLfloat)(i+1)+50.0),50.0);
    48     glLineStipple(5,0x1C47);
    49     drawOneLine(50.0,25.0,350.0,25.0);
    50     glDisable(GL_LINE_STIPPLE);
    51     glFlush();
    52 }
    53 
    54 void reshape(int w,int h)
    55 {
    56     glViewport(0,0,(GLsizei)w,(GLsizei)h);
    57     glMatrixMode(GL_PROJECTION);
    58     glLoadIdentity();
    59     gluOrtho2D(0.0,(GLdouble)w,0.0,(GLdouble)h);
    60 }
    61 
    62 int main(int argc,char**argv)
    63 {
    64     glutInit(&argc,argv);
    65     glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    66     glutInitWindowSize(400,150);
    67     glutInitWindowPosition(100,100);
    68     glutCreateWindow(argv[0]);
    69     init();
    70     glutDisplayFunc(display);
    71     glutReshapeFunc(reshape);
    72     glutMainLoop();
    73     return 0;
    74 }


    
    

    运行的效果图:

     

  • 相关阅读:
    mysql对字段分割内容查询
    vue相关报错
    java多线程面试题
    java的消息队列
    电子商务大数据平台实训系统业务数据仓库总结
    电子商务大数据平台实训用户行为数仓业务总结
    电子商务大数据平台实训第一阶段总结
    Java 并发基础常见面试题总结
    window 平台 安装MongoDB
    java知识汇总(第六天)
  • 原文地址:https://www.cnblogs.com/mothe123/p/3641867.html
Copyright © 2020-2023  润新知