类型 说明
GL_POINTS 单个顶点集
GL_LINES 多组双顶点线段
GL_POLYGON 单个简单填充凸多边形
GL_TRAINGLES 多组独立填充三角形
GL_QUADS 多组独立填充四边形
GL_LINE_STRIP 不闭合折线
GL_LINE_LOOP 闭合折线
GL_TRAINGLE_STRIP 线型连续填充三角形串
GL_TRAINGLE_FAN 扇形连续填充三角形串
GL_QUAD_STRIP 连续填充四边形串

                  几何图元类型说明

代码效果

代码

int DrawGLScene(GLvoid)									// Here's Where We Do All The Drawing
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The Current Modelview Matrix //移动是相对当前位置移动(第一次移动相对与屏幕中心0,0,0下一次再移动时相对的就是本次移动后的位置了)
//向屏幕内移动18.9个单位,这样1个单位(1米)对应480/(2*tan(22.5)*(18.9+0.1)= 30像素
glTranslatef(0.0f,0.0f,-18.9f); // 绘制不连续线段,把屏幕分成9部分
glBegin(GL_LINES);
// 横线
glVertex3f( -21.0f, 3.0f, 0.0f);
glVertex3f(21.0f, 3.0f, 0.0f);
glVertex3f( -21.0f, -3.0f, 0.0f);
glVertex3f( 21.0f, -3.0f, 0.0f);
// 竖线
glVertex3f( -3.0f, 8.0f, 0.0f);
glVertex3f(-3.0f, -8.0f, 0.0f);
glVertex3f( 3.0f, 8.0f, 0.0f);
glVertex3f( 3.0f, -8.0f, 0.0f);
glEnd(); // 绘制点
glBegin(GL_POINTS);
glColor3f(1.0f,0.0f,0.0f);// 设置当前色为红色
glVertex3f( -8.0f, 5.5f, 0.0f);
glVertex3f( -7.5f, 5.5f, 0.0f);
glVertex3f( -7.0f, 5.5f, 0.0f);
glEnd(); // 绘制不闭合折线
glBegin(GL_LINE_STRIP);
glColor3f(1.0f,1.0f,0.0f);// 设置当前色为黄色
glVertex3f( -2.0f, 5.5f, 0.0f);
glVertex3f( 2.0f, 5.5f, 0.0f);
glVertex3f( -2.0f, 4.0f, 0.0f);
glVertex3f( 2.0f, 4.0f, 0.0f);
glEnd(); // 绘制闭合折线
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,1.0f);// 设置当前色为蓝色
glVertex3f( 6.0f, 6.0f, 0.0f);
glVertex3f( 4.0f, 4.0f, 0.0f);
glVertex3f( 8.0f, 4.0f, 0.0f);
glEnd(); // 绘制多组独立填充三角形(以下绘制2个三角形)
glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);// 设置当前色为红色
glVertex3f( -9.0f, 1.0f, 0.0f);
glVertex3f(-8.0f,-1.0f, 0.0f);
glVertex3f( -10.0f,-1.0f, 0.0f); glVertex3f( -6.0f, 1.0f, 0.0f);
glVertex3f(-5.0f,-1.0f, 0.0f);
glVertex3f( -7.0f,-1.0f, 0.0f);
glEnd(); // 绘制三角形带
glBegin(GL_TRIANGLE_STRIP);//(以下绘制3个连续三角形) //第一个三角形由点123逆时针构成
//第二个三角形由点324逆时针构成
//第三个三角形由点345逆时针构成 glColor3f(1.0f,0.0f,0.0f);// 设置当前色为红色
glVertex3f( -2.0f,-1.0f, 0.0f);//点1
glVertex3f(0.0f,-1.0f, 0.0f);//点2
glVertex3f( -1.0f, 1.0f, 0.0f);//点3
glColor3f(0.0f,1.0f,0.0f);// 设置当前色为绿色
glVertex3f( 1.0f,1.0f, 0.0f);//点4
glColor3f(0.0f,0.0f,1.0f);// 设置当前色为蓝色
glVertex3f(2.5f,2.5f, 0.0f);//点5 glEnd(); return TRUE; // Everything Went OK
}

OPENGL3_基本图元的更多相关文章

  1. OpenGL ES 3.0: 图元重启(Primitive restart)

    [TOC] 背景概述 在OpenGL绘制图形时,可能需要绘制多个并不相连的图形.这样的情况下这几个图形没法被当做一个图形来处理.也就需要多次调用 DrawArrays 或 DrawElements. ...

  2. CSharpGL(21)用鼠标拾取、拖拽VBO图元内的点、线或本身

    CSharpGL(21)用鼠标拾取.拖拽VBO图元内的点.线或本身 效果图 以最常见的三角形网格(用GL_TRIANGLES方式进行渲染)为例. 在拾取模式为GeometryType.Point时,你 ...

  3. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  4. Modern OpenGL用Shader拾取VBO内单一图元的思路和实现

    Modern OpenGL用Shader拾取VBO内单一图元的思路和实现 什么意思? 拾取 最简单的理解拾取的方式大概是到(http://www.yakergong.net/nehe/course/t ...

  5. Modern OpenGL用Shader拾取VBO内单一图元的思路和实现(2)

    Modern OpenGL用Shader拾取VBO内单一图元的思路和实现(2) 上一篇里介绍了Color-Coded Picking的思路和最基本的实现.在处理GL_POINTS时已经没有问题,但是处 ...

  6. Modern OpenGL用Shader拾取VBO内单一图元的思路和实现(3)

    Modern OpenGL用Shader拾取VBO内单一图元的思路和实现(3) 到上一篇为止,拾取一个VBO里的单个图元的问题已经彻底解决了.那么来看下一个问题:一个场景里可能会有多个VBO,此时每个 ...

  7. 【Visual Lisp】图元选择集专题

    图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...

  8. 绘制图形与3D增强技巧(五)----多边形图元的使用及其他

    1.注意多边形图元中的多边形只能是平面的,而且必须为凸多边形,且多边形的边不能弯曲 2.细分和边界,可以人为设置边界边和非边界边 glEdgeFlag(true)//接下来所有点均为边界边起点 glE ...

  9. 绘制图形与3D增强技巧(四)----多边形图元及其点画模式

    1.四边形图元 glBegin(GL_QUADS); glend(); 2.通用多边形 glBegin(GL_POLYGONS); glend(); 3.多边形点画模式 glenable(GL_POL ...

随机推荐

  1. ASP.NET MVC 页面使用富文本控件的XSS漏洞问题

    目前在做的项目存在XSS安全漏洞! 原因是有一些页面使用了富文本编辑框,为了使得其内容可以提交,为相关action设置了[ValidateInput(false)] 特性: [HttpPost] [V ...

  2. I NEED A OFFER! hdu1203

    Description Speakless非常早就想出国,如今他已经考完了全部须要的考试,准备了全部要准备的材料,于是.便须要去申请学校了. 要申请国外的不论什么大学,你都要交纳一定的申请费用,这但是 ...

  3. 【WordSearch】Word Search

    Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...

  4. 在c中break的使用

    break语句通常用在循环语句和开关语句中.当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句:如果没有break语句,则会从满足条件的地方(即与switc ...

  5. html5学习笔记(1)-新标签

    最近在做的项目中用到了Html5的部分标签,经师父提醒感觉自己用section的次数多的有点过分,今天去找了一篇HTML5新标签的使用方法,特意贴了上来,感谢原作者的分享,方便以后自己使用~~~ HT ...

  6. MySQL学习笔记(三)——计算字段及常用函数

    拼接字段-Concat()函数        将值连接在一起构成单个值.注意:大多数DBMS使用+或者||来实现拼接,mysql则使用Concat()函数来实现. 去空格函数-Trim函数       ...

  7. html5--4-3 source元素-解决浏览器的兼容

    html5--4-3 source元素-解决浏览器的兼容 学习要点 掌握source元素的用法 source元素-解决浏览器额兼容 HTML5 中新增的元素 video和audio元素的子元素,可指定 ...

  8. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

  9. codeforces 664C C. International Olympiad(数学)

    题目链接: C. International Olympiad time limit per test 1 second memory limit per test 256 megabytes inp ...

  10. hdu-5666 Segment(俄罗斯乘法or大数乘法取模)

    题目链接: Segment Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) P ...