Direct3D融合技术

news2024/11/26 15:25:18

该技术能使我们将当前要进行光栅化的像素的颜色与先前已已光栅化并处于同一位置的像素的颜色进行合成,即将正在处理的图元颜色值与存储在后台缓存中的像素颜色值进行合成(混合),利用该技术我们可得到各种各样的效果,尤其是透明效果。

在融合运算时需要遵循:首先绘制那些不需要进行融合的物体,然后将需要进行融合的物体按照相对于摄像机的深度值进行排序,如果物体已处于观察坐标系中,该运算的效率会相当高,因为此时只需要对Z分量进行排序,最后按照自后往前的顺序逐个绘制将要进行融合运算的物体。

融合处理公式

OutputPixel=SourcePixel\bigotimes SourceBlendFactor+DestPixel\bigotimes DestBlendFactor

这个公式中每个变量都是一个4D颜色向量(r,g,b,a),中间符号表示分量逐个相乘

OutpurPixel:融合后的颜色值
SourcePixel:当前计算得到的、用于与后台缓存中对应像素进行融合的像素颜色值
SourceBlendFactor:源融合因子,指定了源像素的颜色值在融合中所占比例,该值在区间[0,1]
DestPixel:当前处于后台缓存中的像素颜色值
DestBlendFactor:目标融合因子,指定了目标像素的颜色值在融合中所占的比例,该值在区间[0,1]内

源融合因子和目标融合因子使我们可以各种方式修改源像素和目标像素的颜色值,从而获得各种不同的效果,Direct3D中默认状态下是禁止融合运算的,可将绘制状态D3DRS_ALPHABLENDENABLE设为true便启用了融合运算,融合计算的开销并不低,所以应该仅在必需的场合中使用,当绘制完需要进行融合的几何体之后,应禁止Alpha融合,在对三角形单元组进行融合时,最好进行批处理,之后应立即绘制出来,这样就可避免在每帧图像中都启用了禁止融合运算。

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

//融合运算  Draw...

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);

融合因子

可通过设置绘制状态D3DRS_SRCBLEND和D3DRS_DESTBLEND的值来对源融合因子和目标融合因子分别进行设定。

//Source、Destination  填D3DBLEND枚举
Device->SetRenderState(D3DRS_SRCBLEND, Source);
Device->SetRenderState(D3DRS_DESTBLEND, Destination);

透明度

每个顶点颜色中的Alpha分量与颜色值类似,都是沿着三角形到单元表面渐变的,但它并非用于确定某像素的颜色值,而是用于确定像素的Alpha分量,Alpha分量主要用于指定像素的透明度,假定为每个像素的Alpha分量保留8位,则合法区间为[0,255],Alpha为0时元素完全透明,为255则完全不透明,为了能使Alpha分量来秒后苏像素的透明度,必须将融合因子和目标融合因子分辨设置为D3DBLEND_SRCALLPHA和D3DBLEND_INVSRCALPHA,这些值恰好也是融合因子的默认值。

Alpha通道

我们并不直接使用计算得到Alpha分量,而往往是从纹理的Alpha通道中获取Alpha信息,Alpha通道是保留给存储了Alpha分量的纹理元的一个额外的位集合,当纹理映射到某个图元中时,Alpha通道中的Alpha分量也进行了映射,并成为了该图元中像素的Alpha分量。

指定Alpha来源

默认状态下,如果当前设置的纹理拥有一个Alpha通道,Alpha值就取自该Alpha通道,如果没有Alpha通道,Alpha值就取自顶点的颜色,也可以用下列绘制状态来指定Alpha值的来源(漫反射颜色值或Alpha通道)

//漫反射颜色值
Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

//纹理的Alpha通道
Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

用DirectX Texture Tool创建Alpha通道

最常见的图像文件格式中不含有Alpha信息,可以用DirectX纹理工具创建一个具有Alpha通道的DDS文件,DDS文件是一种专门为DirectX应用程序和纹理设计的图像格式。可使用D3DXCreateTextureFromFile函数将DDS文件加载到纹理中。

使用该工具打开图片后会自动加载为24位的RGB纹理(红、绿、蓝分量各占8位),如果想扩展为32位的ARGB格式的纹理,选择菜单中Format然后选择Change Surface Format命令,选择A8R8G8B8格式并确定就创建了一幅像素颜色深度为32位的图像,接下来的任务是将数据加载到Alpha通道中,选择菜单File,然后选择Open Onto Alpha Channel Of This Texture命令,找到要加载到该Alpha通道的数据的图像文件后就完成在Alpha通道作用下的纹理图了,保存后命名为xxx.dds

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

根据经纬度数据画出船只航行路径图(cartopy + matplotlib)

问题: 已知穿航行的经纬度记录,怎么在地图上画出? 思路: 1先画出地图,使用cartopy。 2然后再将不连续的点绘制在地图中,这样的连线就是轨迹了。 ( cartopy库的安装见我的其他文章简明cartop…

【postgresql 】 ERROR: “name“ is not supported as an alias

org.postgresql.util.PSQLException: ERROR: "name" is not supported as an alias 错误:不支持将“name”作为别名 SELECT real_name name FROM doc_user 加上 在关键词上加上 “” 示例: SELECT real_name "name" FROM do…

05_2D3D转换

1 2D 转换 转换是 CSS3 中具有颠覆性的一个特征,可以实现元素的位移、旋转、变形、缩放。 通过 transform 转换来实现 2D 转换或者 3D 转换。 2D 转换包括: 缩放 scale移动 translate旋转 rotate倾斜 skew(了解) 1.1 缩放 sc…

【EI会议信息】第五届物联网、自动化和人工智能国际会议(IoTAAI 2023)

第五届物联网、自动化和人工智能国际会议(IoTAAI 2023) 2023 5th International Conference on Internet of Things, Automation and Artificial Intelligence 第五届物联网、自动化和人工智能国际会议(IoTAAI 2023)将于2023年1…

周界警戒AI算法+视频智能分析在安全生产场景中的应用

长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确…

【PX4】PX4第一个offborad例程

【PX4】PX4第一个offborad例程 文章目录 【PX4】PX4第一个offborad例程1. 什么是OFFBOARD2. 第一个offboard例程3. 编写launch文件Reference 1. 什么是OFFBOARD PX4的OFFBOARD指的是外部控制模式,飞行器根据飞行控制栈外部(如机载计算机)提供…

C/C++/Python图像处理算法实战【3】彩色图像灰度化和二值化处理

本篇文章旨在通过详细的代码逐行注释,介绍如何分别使用 C/C++/Python 对彩色图像做灰度化(最大值法、平均值法、加权平均值法)和二值化处理(平均值法、双峰法、OTSU法)。 原理解析 图像表示 数字图像通常采用矩阵表示。以一幅数字图像F左上角像素中心为坐标原点,一幅M…

Prometheus-Rules 实战

文章目录 1 node rules2 nginx rule2.1 Nginx 4xx 错误率太多2.2 Nginx 5xx 错误率太多2.3 Nginx 延迟高 3 mysql rule3.1 MySQL 宕机3.2 实例连接数过多3.3 MySQL高线程运行3.4 MySQL 从服务器 IO 线程没有运行3.5 MySQL 从服务器 SQL 线程没有运行3.6 MySQL复制滞后3.7 慢查询…

小米手机打开开发者模式

1、打开设置 2、 3、 4、多次连续点击版本,直到提示打开开发者模式 5、进入手机开发者模式后,点击进入“设置”主页的“更多设置”。 6、接着点击进入“开发者选项”。 7、最后打开“USB调试”选项后,手机就打开了USB调试模式。 8、可以…

飞行动力学 - 第35节-动操纵性 之 基础点摘要

飞行动力学 - 第35节-动操纵性 之 基础点摘要 1. 动操纵性2. 传递函数3. 动稳定性与动操纵性4. 参考资料 1. 动操纵性 Free response: x 0 ≠ 0 , u 0 x_0 \ne 0, u 0 x0​0,u0Forced response: x 0 0 , u ≠ 0 x_0 0, u \ne 0 x0​0,u0 驾驶员操纵飞机的方式有开环…

【.net core】解决无法下载wgt文件问题

//StartUp.cs文件中Configure方法中添加以下代码 app.UseStaticFiles(new StaticFileOptions{FileProvider new PhysicalFileProvider(Directory.GetCurrentDirectory()),ContentTypeProvider new FileExtensionContentTypeProvider(new Dictionary<string, string>{{ …

高通recovery流程分析(编译、界面、图片)

目录 recovery 界面菜单 recovery 界面操作 recovery 启动流程 recovery 编译makefile recovery 图片大小 ramdisk、boot.img、recovery.img之间的关系 authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 recovery 界面菜单 recovery 界面显示 android recoveryuse …

酒店布草管控RFID智能化回收管理

酒店行业作为服务业的重要组成部分&#xff0c;拥有大量的布草资产&#xff0c;如客房被罩、床单、浴巾和毛巾等&#xff0c;为了更好地管理和追踪这些布草的使用情况&#xff0c;提高效率和准确性&#xff0c;酒店多采用RFID技术进行布草智能化回收管理。 RFID电子标签的应用…

【深度学习】LeNet网络架构

文章目录 什么是LeNet代码实现网络架构 什么是LeNet LeNet是一种经典的卷积神经网络&#xff0c;由Yann LeCun等人在1998年提出。它是深度学习中第一个成功应用于手写数字识别的卷积神经网络&#xff0c;并且被认为是现代卷积神经网络的基础。 LeNet模型包含了多个卷积层和池…

JOSEF约瑟 剩余电流继电器PFR-5 PFE-W-20 国产化改造ZLR-G81 ZCT-45

系列型号&#xff1a; PFR-003剩余电流继电器 PFR-03剩余电流继电器 PFR-5剩余电流继电器 PFR-W-105互感器 PFR-W-140互感器 PFR-W-20互感器 PFR-W-210互感器 PFR-W-30互感器 PFR-W-35互感器 PFR-W-70互感器 一、用途 PFR剩余电流继电器&#xff08;以下简称继电器…

【教学类】小2班学号字帖(A4横版2份)

图片展示: 背景需求: 突然接到通知&#xff0c;明天下午临时去带小2班。 小班刚入园的孩子&#xff0c;能给他们提供什么样的可操作的学具呢&#xff1f; 思来想去&#xff0c;还是让生成一份学号字帖&#xff0c;让幼儿熟悉自己的学号&#xff0c;让我也熟悉幼儿的名字和学…

phpstudy2016 RCE漏洞验证

文章目录 漏洞描述漏洞验证 漏洞描述 PHPStudyRCE&#xff08;Remote Code Execution&#xff09;&#xff0c;也称为phpstudy_backdoor漏洞&#xff0c;是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞验证 打开phpstudy2016&#xff0c;用bp自带的浏览器访问www目录下…

可视化报表设计器的功能内容是什么?

当前&#xff0c;随着社会化发展程度越来越深&#xff0c;传统的表单制作方式已经无法满足需求了&#xff0c;此时&#xff0c;低代码技术平台的出现&#xff0c;可以在一定程度上帮助不同行业的客户实现流程化办公管理&#xff0c;从而实现提质增效的办公效率。 可视化报表设计…

Yolov8小目标检测-添加模块改进-实验记录

简介&#xff0c;本文通过结合了一些先进的算法改进了yolov8小目标检测能力&#xff0c;以下是一些记录。 数据集&#xff1a;足球比赛数据集&#xff0c;里面只有两个类别足球和人。 兄弟姐妹们&#xff0c;如果本文对你有用&#xff0c;点赞收藏一下呗&#xff0c;☺️☺️…

云可观测性:提升云环境中应用程序可靠性

随着云计算的兴起和广泛应用&#xff0c;越来越多的企业将其应用程序和服务迁移到云环境中。在这个高度动态的环境中&#xff0c;确保应用程序的可靠性和可管理性成为了一个迫切的需求。云可观测性作为一种解决方案&#xff0c;针对这一需求提供了有效的方法和工具。本文将介绍…