OpenGL关于glBegin的参数的理解
来源:互联网 发布:linux重启tomcat服务 编辑:程序博客网 时间:2024/05/17 22:53
#include<GL/glut.h>
#include<iostream>
using namespace std;
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glClear(GL_COLOR_BUFFER_BIT);
gluOrtho2D(0.0,200.0,0.0,200.0);
}
void display1()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINES);
/*绘制一系列的非连接直线段。两点确定一条直线*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display2()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP);
/*绘制一系列连接的直线段。从起始点到终止点。不形成环路*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display3()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_LOOP);
/*绘制一系列连接的直线段。从起始点到终止点。形成环路*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display4()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLES);
/* 绘制一系列三角形区域(三条边的多边形),第一个三角形使用v0,v1.v2,第二个三角形受用v3,v4,v5,接下来以此类推。如果n不是3的倍数,则最后1个或2个顶点被忽略*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display5()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLE_STRIP);
/* 绘制一系列三角形区域。第一个三角形使用定点v0,v1,v2第二个三角形使用v2,v1,v3,然后是v2,v3,v4接下来以此类推。
* 这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串都是按照相同的方向绘制的,形成表面的
* 一部分。对于有些操作,维持方向是非常重要的,例如剔除。n至少大于3,否则就不会绘制任何三角形。*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display6()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLE_FAN);
/*和GL_TRIANGLE_STRIP相似,只是顶点顺序现在是v0.v1,v2接着是v0,v2,v3再接着是v0,v3,v4*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display7()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_QUADS);
/*绘制一系列的四边形(4条边的多边形),首先使用v0,v1,v2,v3然后是v4,v5,v6,v7接下来以此类推,如果n不是4的整数倍,舍去*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display8()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_QUAD_STRIP);
/* 绘制一系列的四边形(4条边的多边形)。首先使用v0,v1,v3,v2.接着是v2,v3,v5,v4,然后是v4,v5,v7,v6接下来以此类推。n至少大于4
* 否则不会绘制任何4边形。如果n是奇数,最后一个顶点将被忽略 */
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display9()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
/*绘制一个多边形,使用v1,v2...vn作为顶点。n必须大于等于3,否则就不会绘制任何多边形。另外,它所指定的多边形本身不得相交并且
* 必须是凸多边形。如果顶点不满足这些条件,其结果是不可预测的*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void reshape(GLint w,GLint h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);
}
void main(int argc,char** argv)
{
int i;
cout << "1.GL_LINES\n"
<< "2.GL_LINE_STRIP\n"
<< "3.GL_LINE_LOOP\n"
<< "4.GL_TRIANGLES\n"
<< "5.GL_TRIANGLE_STRIP\n"
<< "6.GL_TRIANGLE_FAN\n"
<< "7.GL_QUADS\n"
<< "8.GL_QUAD_STRIP\n"
<< "9.GL_POLYGON\n"
<< "What do you want...\n" << endl;
cin >> i;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
switch (i)
{
case 1:
glutDisplayFunc(display1);
break;
case 2:
glutDisplayFunc(display2);
break;
case 3:
glutDisplayFunc(display3);
break;
case 4:
glutDisplayFunc(display4);
break;
case 5:
glutDisplayFunc(display5);
break;
case 6:
glutDisplayFunc(display6);
case 7:
glutDisplayFunc(display7);
case 8:
glutDisplayFunc(display8);
break;
case 9:
glutDisplayFunc(display9);
break;
default:
break;
}
glutReshapeFunc(reshape);
glutMainLoop();
}
#include<iostream>
using namespace std;
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glClear(GL_COLOR_BUFFER_BIT);
gluOrtho2D(0.0,200.0,0.0,200.0);
}
void display1()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINES);
/*绘制一系列的非连接直线段。两点确定一条直线*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display2()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP);
/*绘制一系列连接的直线段。从起始点到终止点。不形成环路*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display3()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_LOOP);
/*绘制一系列连接的直线段。从起始点到终止点。形成环路*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display4()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLES);
/* 绘制一系列三角形区域(三条边的多边形),第一个三角形使用v0,v1.v2,第二个三角形受用v3,v4,v5,接下来以此类推。如果n不是3的倍数,则最后1个或2个顶点被忽略*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display5()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLE_STRIP);
/* 绘制一系列三角形区域。第一个三角形使用定点v0,v1,v2第二个三角形使用v2,v1,v3,然后是v2,v3,v4接下来以此类推。
* 这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串都是按照相同的方向绘制的,形成表面的
* 一部分。对于有些操作,维持方向是非常重要的,例如剔除。n至少大于3,否则就不会绘制任何三角形。*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display6()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLE_FAN);
/*和GL_TRIANGLE_STRIP相似,只是顶点顺序现在是v0.v1,v2接着是v0,v2,v3再接着是v0,v3,v4*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display7()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_QUADS);
/*绘制一系列的四边形(4条边的多边形),首先使用v0,v1,v2,v3然后是v4,v5,v6,v7接下来以此类推,如果n不是4的整数倍,舍去*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display8()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_QUAD_STRIP);
/* 绘制一系列的四边形(4条边的多边形)。首先使用v0,v1,v3,v2.接着是v2,v3,v5,v4,然后是v4,v5,v7,v6接下来以此类推。n至少大于4
* 否则不会绘制任何4边形。如果n是奇数,最后一个顶点将被忽略 */
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void display9()
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
/*绘制一个多边形,使用v1,v2...vn作为顶点。n必须大于等于3,否则就不会绘制任何多边形。另外,它所指定的多边形本身不得相交并且
* 必须是凸多边形。如果顶点不满足这些条件,其结果是不可预测的*/
glVertex2f(20.0, 100.0);/*v0*/
glVertex2f(100.0, 150.0);/*v1*/
glColor3f(1.0, 0.0, 0.0);
glVertex2f(100.0, 120.0);/*v2*/
glVertex2f(180.0, 100.0);/*v3*/
glColor3f(0.0, 1.0, 0.0);
glVertex2f(40.0, 80.0);/*v4*/
glVertex2f(180.0, 30.0);/*v5*/
glColor3f(0.0, 0.0, 1.0);
glVertex2f(50.0, 50.0);/*v6*/
glVertex2f(160.0, 80.0);/*v7*/
glEnd();
glFlush();
}
void reshape(GLint w,GLint h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);
}
void main(int argc,char** argv)
{
int i;
cout << "1.GL_LINES\n"
<< "2.GL_LINE_STRIP\n"
<< "3.GL_LINE_LOOP\n"
<< "4.GL_TRIANGLES\n"
<< "5.GL_TRIANGLE_STRIP\n"
<< "6.GL_TRIANGLE_FAN\n"
<< "7.GL_QUADS\n"
<< "8.GL_QUAD_STRIP\n"
<< "9.GL_POLYGON\n"
<< "What do you want...\n" << endl;
cin >> i;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
switch (i)
{
case 1:
glutDisplayFunc(display1);
break;
case 2:
glutDisplayFunc(display2);
break;
case 3:
glutDisplayFunc(display3);
break;
case 4:
glutDisplayFunc(display4);
break;
case 5:
glutDisplayFunc(display5);
break;
case 6:
glutDisplayFunc(display6);
case 7:
glutDisplayFunc(display7);
case 8:
glutDisplayFunc(display8);
break;
case 9:
glutDisplayFunc(display9);
break;
default:
break;
}
glutReshapeFunc(reshape);
glutMainLoop();
}
0 0
- OpenGL关于glBegin的参数的理解
- OpenGL中glBegin()绘制图形GLenum参数的理解
- OpenGL的glBegin使用注意
- openGL 中glbegin()的用法
- openGL 函数 -glBegin,glEnd
- OpenGL 解析glBegin()
- OpenGL学习之glBegin
- OpenGL 关于视景台gluPerpective,glFrustum的理解
- OpenGL 关于平面树的一点点理解
- 关于opengl的理解 2011-11-9
- 关于Opengl各种矩阵变换的理解
- OpenGL中关于帧缓冲区的理解
- 关于property参数的理解
- 【OpenGL】关于OpenGL中Bind函数的理解
- 【OpenGL】关于OpenGL中glBindTexture函数的理解
- 计算机图形学 -- 基本图形 [之二] [glBegin参数Mode的应用] [圆,五角星,菱形等]
- [基础] glBegin参数
- glBegin()参数意义
- ios笔记--objective-c
- UVA11916 Emoogle Grid 网格涂色 大步小步算法(解模方程对数) 快速幂 模的逆 模的对数
- Delphi7学习第五天
- block
- 2015 多校联赛 ——HDU5319(模拟)
- OpenGL关于glBegin的参数的理解
- UI__UIGestureRecognize
- Object类、JAVA反射机制、Annotation功能
- 树的孩子兄弟链表应用
- 快速排序算法
- 数据结构实验之二叉树的建立与遍历 SDUT
- JSP概述
- APP首次启动引导界面和启动界面设置——iOS开发
- 百练2757最长上升子序列