位置: 编程技术 - 正文

OpenGL学习04-直线&三角形绘制(opengl画直线)

编辑:rootadmin

推荐整理分享OpenGL学习04-直线&三角形绘制(opengl画直线),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl绘制点线面,opengl画曲线,opengl直线绘制,opengl绘制线段,opengl画直线函数,opengl画直线函数,opengl直线绘制,opengl直线绘制,内容如对您有帮助,希望把文章链接给更多的朋友!

一、画线

(1)在glBegin中使用GL_LINES绘制图元时,每两个顶点会连成一条直线,例如:

运行结果,如下图所示:

图1

注意:这里用的两个顶点指定一个图元。每两个指定的顶点用于绘制一条直线。如果指定的顶点为奇数个,那么最后一个顶点会被忽略掉。

(2)在glBegin中使用GL_LINE_STRIP绘制图元时,会绘制一条经过所有顶点的连续的线,例如:

运行结果,如下图所示:

图2

(3)在glBegin中使用GL_LINE_LOOP绘制图元时,绘制图形的方式GL_LINE_STRIP类&#;,只是最后一个顶点会和第一个顶点连成一条直线,例如:

运行结果,如下图所示:

图3

(4)直线宽度

当我们绘制直线是可以使用glLineWidth函数设置直线的宽度:

glLineWidth函数接受一个参数,用于指定直线的宽度(以像素为单位)。直线的宽度&#;的受到限制,确保自己设置直线宽度&#;有效,可使用一下获取直线宽度的范围&#;:

其中,sizes第一个字节为直线宽度最小&#;,第二个字节为直线宽度的最大&#;;step为直线宽度允许的最小增量;

(4)绘制虚线

同样的我们可以使用绘制直线的绘制虚线,称为“点画(stippling)”;需要使用下面代码开启点画功能

然后使用glLineStipple函数创建这种模式以便进行画线

Pattern参数是一个位的&#;,它指定了一个模式,供绘制直线使用。它的每一位都表示线段的一部分或者打开状态,或者处于关闭状态。默认情况下,每位对应一个像素,但是factor参数可以作为乘法因子增加模式的宽度。

二、三角形

(1)在glBegin中使用GL_TRIANGLES绘制图元时,每三个顶点会组成一个三角形,例如:

OpenGL学习04-直线&三角形绘制(opengl画直线)

运行结果,如下图所示:

图4

注意:这里用的三个个顶点指定一个图元。每三个指定的顶点用于绘制一个三角形。如果指定的顶点不是3的倍数,那么最后一个顶点或两个顶点会被忽略掉。

(2)环绕

顶点的指定次序以及方向的组合被称为环绕(winding)。如下图三角形被认为具有顺时针方向的环绕,因为他们都是按照顺时针的方向进行绘制的。

图5,来至OpenGL超级宝典

如果我们在左边的三角形上反正V4和V6的位置,就将得到一个逆时针的环绕,如下图:

图6,来至OpenGL超级宝典

在默认情况下,OpenGL认为逆时针方向环绕的一面是多边形的正面。这意味着图6中左侧三角形显示是正面,而右侧三角形显示的是背面。

这是一个非常重要的问题。我们常常希望一个多边形的正面和背面分别设置不同的物理特征。我们可以隐藏一个多边形的背面(效率问题),或则给他设置一种不同的颜色和反色属性。

(2)三角形带

对于许多表面和形状,可能需要绘制几个相连的三角形。使用GL_TRIANGLE_STRIP图元,可以绘制一串相连接的三角形,从而节省大量的时间。图7显示了由5个顶点所指定的3个三角形的绘制过程。由图7可以看出这些顶点并不是按照他们的指定顺序进行遍历的,这是为了保持每个三角形的环绕方式(逆时针)。他们的绘制模式是V0、V1、V2,接着是V2、V1、V3,然后是V2、V3、V4,接下来由此类推。

图7,来至OpenGL超级宝典

(3)三角形扇

可以使用GL_TRIANGLE_FAN创建一组围绕一个中心点的相连的三角形。如图8显示通过四个顶点所产生的包括三个三角形的三角扇。用前3个顶点指定第一个三角形后,后续的每个顶点和远点V0以及前驱的那个顶点Vn-1形成了接下来的三角形。

图8,来至OpenGL超级宝典

OpenGL,Android注意事项初始化顺序 NullPointer BUG:Causedby:java.lang.IllegalStateException:setRendererhasalreadybeencalledforthisinstance.或者NullPointer错误解决方法:把setEGLContextClientVersion(2);挪到setRenderer()前面。方法的

Qt_OpenGL:雾程序小测 Qt_OpenGL:雾程序小测//.h#ifndefFOGTEST_H#defineFOGTEST_H#includeQWidget#includeQtOpenGLclassFogTest:publicQGLWidget{Q_OBJECTpublic:FogTest(QWidget*parent=0);~FogTest();protected:voidinitializeG

OpenGL学习-绘制实心物体 使用三角形或者多边形结合在一起,我们可以绘制实心物体(3D物体)。本篇中使用三角形绘制圆锥形。下面测试第一个OpenGL程序:voidrenderScene(void){floatangl

标签: opengl画直线

本文链接地址:https://www.jiuchutong.com/biancheng/373215.html 转载请保留说明!

上一篇:人走鸟飞之二(人走鸟不惊,出自于谁的诗句?)

下一篇:OpenGL,Android注意事项初始化顺序 NullPointer(android opengl绘图)

  • 分配税后利润需交个人所得税吗
  • 填写了领款单还要填报销单吗
  • 电子税务局实名核验失败怎么回事啊
  • 包装运杂费结转生产成本会计分录
  • 生产能量计入固定成本
  • 股东退股可以支付现金吗
  • 现金流量表本月数和本年累计数不一致
  • 非独立核算的分公司是法人主体吗
  • 退交税钱
  • 老板报销没有发票怎么办
  • 一般纳税人增值税申报表
  • 小规模纳税人交企业所得税吗
  • 外贸企业出口收入确定
  • 投资管理公司收费
  • 个体户核税怎么核
  • 去年亏损今年第一季度盈利
  • 增值税进项转出后企业所得税调整是含税价还是不含税价
  • 管理费用的结转需要在明细账中体现吗
  • 外管证怎么开票
  • 在建工程人工费计入什么科目
  • 应收账款贷方余额怎么在资产负债表中填列
  • 加工费的会计处理
  • 销售出库未开票怎么入账
  • 任务栏图标调大了怎么办
  • php递归函数详解
  • 华为鸿蒙harmonyos官网4.0
  • 修改系统散热方案
  • PHP:iterator_count()的用法_spl函数
  • 别人利息没给怎么发问
  • 委托贷款会计科目有哪些
  • staruml教程
  • 农村土地承包经营权证丢失怎么补办
  • 资产减值损失会影响营业利润吗
  • 现金折扣优惠
  • vite报错
  • elementui常用组件有哪些
  • vue数据更新会触发什么生命周期
  • 资产处置损益要写明细账吗
  • 怎么把vue项目跑起来
  • 支付应付账款的文章怎么写的
  • 公交卡充值发票报销单怎么填
  • 金税盘怎么增加收款人和复核人
  • 其他应付款包括的内容
  • 应付账款转入营业外收入会计分录
  • 帝国cms栏目自定义字段
  • dedecms怎么改图片
  • 劳动合同没有齐缝章
  • 会计估计变更和政策变更有哪些
  • 职工旅游费用会计处理
  • 红字发票抵扣联和发票联要给对方吗
  • 个人所得税不允许核定的行业
  • 购销农副产品需要交税吗
  • 更换公司新公章流程
  • 跨年冲红发票账务处理需要调整申报表吗
  • 公司增资认缴
  • 汇总帐凭证处理
  • Mysql 数据库 拷贝 原文件
  • win7 重装系统
  • Win10自带输入法打不出中文
  • ubuntu linux
  • MacOS X Yosemite升级后postgresql启动报错的解决办法
  • windows10周年更新
  • Windows 8中Hyper-V虚拟机操作应用的具体步骤
  • win7系统怎么修改开机密码
  • win10英文版系统怎么完全改为中文
  • 90后的毕业照
  • Windows 7 OpenGL配置,解决“无法启动此程序,因为计算机中丢失glut32.dll。”
  • js数组操作函数
  • python变量字符串等函数
  • 分析天平
  • python functools.wraps
  • javascript 操作css
  • 2016年最火的歌曲排行榜前十名
  • 国家税务系统
  • 税控发票开票软件密码怎么修改?
  • 重庆国家税务局发票查询
  • 卷烟批发环节的税率
  • 学什么专业可以在税务局上班
  • 开错发票怎么投诉?
  • 浙江省网上税务局总分机构变更流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设