ArcEngine+OpenGL之五 三角形上色

本文详细介绍如何在OpenGL中为三角形添加平滑和单调着色。通过调整顶点颜色,实现平滑过渡效果;设置单一颜色,创建均匀着色的三角形。实践示例帮助理解着色原理。
 三角形上色

上一课中我教给您三角形的绘制方法。这一课我将教您给三角形添加两种不同类型的着色方法。使用平滑着色(Smooth coloring)将三角形的三个顶点的不同颜色混合在一起,创建漂亮的色彩混合。

我们只要修改第二课中的OnAfterDraw()函数就可以了。

        private void OnAfterDraw(ISceneViewer pViewer)
{
GL.glColor3ub(255, 0, 0);//设置为红色
}

1、三角形平滑着色

如果您还记得上节课的内容,这段代码在屏幕的左半部分绘制三角形。这一行代码是我们第一次使用命令glColor3f( r, g, b )。括号中的三个参数依次是红、绿、蓝三色分量。取值范围可以从0.0到1.0。类似于以前所讲的清除屏幕背景命令。

接下来的一行代码设置三角形的第一个顶点(三角形的上顶点),并使用当前颜色(红色)来绘制。从现在开始所有的绘制的对象的颜色都是红色,直到我们将红色改变成别的什么颜色。

设置颜色代码:
            GL.glBegin(GL.GL_TRIANGLES);
            GL.glColor3ub(255, 0, 0);
            GL.glVertex3f((float)glX, (float)glY, (float)glZ);
            GL.glColor3ub(0, 255, 0);
            GL.glVertex3f((float)glX1, (float)glY1, (float)glZ1);
            GL.glColor3ub(0, 0, 255);
            GL.glVertex3f((float)glX2, (float)glY2, (float)glZ2);
            GL.glEnd();

glEnd()出现后,三角形将被填充。但是因为每个顶点有不同的颜色,因此看起来颜色从每个角喷出,并刚好在三角形的中心汇合,三种颜色相互混合。这就是平滑着色。

  效果如下:

2、三角形一次性着单色:
GL.glColor3ub(0, 0,255)

一次性将颜色设置为蓝色。

现在我们绘制一个单调着色——蓝色的三角形。最重要的是要记住,设置当前色之后绘制的所有东东都是当前色的。以后您所创建的每个工程都要使用颜色。即便是在完全采用纹理贴图的时候,glColor3f仍旧可以用来调节纹理的色调。等等...,以后再说吧。

我们必须要做的事只需将颜色一次性的设为我们想采用的颜色(本例采用蓝色),然后绘制场景。每个顶点都是蓝色的,因为我们没有告诉OpenGL要改变顶点的颜色。最后的结果是.....全蓝色的三角形。再说一遍,顺时针绘制的正方形意味着我们所看见的是三角形的背面。   

            GL.glColor3ub(0, 0,255);
GL.glBegin(GL.GL_TRIANGLES);
            GL.glVertex3f((float)glX, (float)glY, (float)glZ);
            GL.glVertex3f((float)glX1, (float)glY1, (float)glZ1);
            GL.glVertex3f((float)glX2, (float)glY2, (float)glZ2);

            GL.glEnd();
}
效果如下:

在这一课中,我试着尽量详细的解释如何为您的OpenGL多边形添加单调和平滑的着色效果的步骤。改改代码中的红绿蓝分量值,看看最后有什么样的结果。

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值