Direct3D 12——纹理——寻址模式

news2025/1/11 20:48:24

可将经过常数插值或线性插值的纹理定义为一个返回向量值的函数T(u, v) = (r,g,b,a),即给 定纹理坐标(u,v)∈[0,1]^2,则上述纹理函数T将返回颜色(r,g, b, a)。 Direct3D允许我们采用下列4 种不同方式(即寻址模式,address mode)来扩充此函数的定义域(解决输入值超出定义域这一问 题),它们是重复寻址模式(wrap)、边框颜色寻址模式(border color,也有译作边界颜色寻址模式)、 钳位寻址模式(clamp )与镜像寻址模式(mirror )。

1.重复纹理寻址模式
在 Wrap 纹理寻址模式下,Direct3D 可以在每个整数点重复纹理。

例如,假设应用程序创建平方基元并指定纹理坐标为 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 以及 (3.0,0.0)。 将纹理寻址模式设置为“Wrap”会使纹理在 u 和 v 方向应用三次,如下图所示。
在这里插入图片描述
2.镜像纹理寻址模式
在镜像纹理寻址模式下,Direct3D 可以每个整数为界映射纹理。

例如,假设应用程序创建平方基元并指定纹理坐标为 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 以及 (3.0,0.0)。 将纹理寻址模式设置为“镜像”会使纹理在 u 和 v 方向应用三次。 纹理应用到的所有其他行和列均为前一行或前一列的镜像,如下图所示。
在这里插入图片描述
3.Clamp 纹理寻址模式

在 Clamp 纹理寻址模式下,Direct3D 可以将纹理坐标固定到 [0.0, 1.0] 范围;在 Clamp 模式下应用纹理一次,边缘像素颜色会变模糊。

例如,假设应用程序创建了一个平方基元,并将 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 以及 (3.0,0.0) 纹理坐标分配至该基元的顶点。 将纹理寻址模式设置为"Clamp"会使纹理应用一次。 列顶部和行结尾的像素颜色将分别延伸到基元的顶部和右侧。

下图所示为固定的纹理。

在这里插入图片描述
4.边框颜色纹理寻址模式

在边框颜色纹理寻址模式下,对于超出 0.0-1.0(包括这两者)范围的任何纹理坐标,Direct3D 可以使用任意颜色(称为边框颜色)。

在下图中,应用程序指定必须将纹理应用到使用红色边框的的基元。
在这里插入图片描述
在Direct3D中,寻址模式由枚举类型 D3D12_TEXTURE_ADDRESS_MODE 来表示:

enum D3D12_TEXTURE_ADDRESS_MODE
    {
        D3D12_TEXTURE_ADDRESS_MODE_WRAP	= 1,  //重复纹理寻址模式
        D3D12_TEXTURE_ADDRESS_MODE_MIRROR	= 2,//镜像寻址模式
        D3D12_TEXTURE_ADDRESS_MODE_CLAMP	= 3,//钳位寻址模式
        D3D12_TEXTURE_ADDRESS_MODE_BORDER	= 4,//边框颜色寻址模式
        D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE	= 5
    } 

设备限制

尽管系统一般情况下支持超出 0.0-1.0(包括这两者)范围的纹理坐标,但硬件限制通常会影响纹理坐标可超出的范围。 当你检索设备功能时,呈现设备将显示对设备所允许的所有纹理坐标的限制。

例如,如果限值为 128,则输入的纹理坐标必须控制在 -128.0 至 +128.0 的范围内。 使超出该范围的纹理坐标通过顶点是无效的。 相同的限制适用于因纹理坐标自动生成以及纹理坐标变换而生成的纹理坐标。

纹理重复限制取决于按纹理坐标编索引的纹理的大小。 假设在此情况下,纹理大小为 32,设备允许的纹理坐标的范围为 512,则实际有效的纹理坐标范围应为 512/32 = 16,也就是说,该设备的纹理坐标范围必须介于 -16.0 至 +16.0。

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

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

相关文章

MLCC周期性分析:当前时点处于周期反转前夜

MLCC是电子工业大米,供需波动导致行业成周期性波动 MLCC是最常用的被动元器件之一,终端下游涵盖消费电子、家电、汽车、通信等。在5g、汽车电子、智能硬件的推动下,MLCC行业需求稳步增长。供给端来看,中国大陆厂商合计市场份额不…

MFC加载动态gif图片文件C++语言,基于MFC的动画播放控件

MFC加载动态gif图片,使用VS2015环境 一、将下载的PictureEx.h和PictureEx.cpp放在工程文件的目录下,动态gif图片放在工程文件的res文件夹下;(GIF动图下载 https://icons8.com/preloaders/en/search/move) &#xff08…

企业级VUE前端项目各目录文件的作用

概述 本文项目是基于Vue CLI3构建工具(基于 webpack)生成的脚手架项目。Vue CLI 现已处于维护模式,VUE官方推荐使用 create-vue(基于 Vite)构建工具。 vue-cli2.0与3.0在目录结构方面,有明显的不同,vue-cli3.0移除了…

Linux性能优化实战

1. TCP/IP报文详解 TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。TCP负责发现传输的问题,一有问题就发出信号,要求重…

根据cadence设计图学习硬件知识day04了解一些芯片

1.PI3PCIE3212 (双向信道多路复用器/多路分解器开关) PI3PCIE3212是PCIe Gen3.0、8Gbps、4对2差分,PCI ExpressR 3.0性能,8.0Gbps 双向信道多路复用器/多路分解器开关。由于其低的位对位偏斜,高的通道对通道噪声隔离…

邂逅Node.js开发

目录: 1 Node.js是什么? 2 Node的应用场景 3 Node安装和管理 4 JavaScript代码执行 5 Node的输入和输出 6 Node的全局对象 node命令是可以直接运行js脚本的,在某文件夹底下只要有js文件,就可以通过命令提示符运行该js文件。格式是 &…

简单聊聊煤炭行业的数字化和可持续发展

煤在普通人的心目中是一种能引起复杂感情的东西。我们喜欢它在冬天给我们带来温暖,我们不喜欢它因为它黢黑黢黑的,沾在身上特别黑,看起来脏兮兮的。在笔者的记忆中,小时候煤可是生活的必需品。 小时候在冬天的河北必须要生炉子&a…

电源常识-纹波-EMI

1、纹波﹔纹波就是一个直流电压中的交流成分。直流电压本来应该是一个固定的值,但是很多时候它是通过交流电压整流、滤波后得来的,如图1,由于滤波不彻底,就会有剩余的交流成分,即使采用电池供电也会因负载的波动而产生波纹。事实上…

FreeRTOS 任务相关 API 函数

FreeRTOS 中用于创建和删除任务的 API 函数如下表所示: 1. 函数 xTaskCreate() 此函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数&#x…

聚焦慕思欧洲设计中心,用设计谱写健康睡眠新篇章

4月20日,在意大利米兰,多位欧洲顶尖设计师齐聚ADI博物馆,共同见证“梦享之美”——慕思欧洲设计中心暨设计国际梦之队成立发布会的盛大召开。慕思此次发布会特地选定在米兰国际家具展期间,而这是公认的世界三大家具展之一&#xf…

DF竞赛平台携手嬴彻科技与清华大学智能产业研究院,助力自动驾驶挑战赛圆满落幕!

由DataFountain竞赛平台(简称DF平台)提供办赛支持的「首届“嬴彻-清华AIR杯”自动驾驶挑战赛:决策规划算法」已圆满落幕。作为一场前沿性自动驾驶类比赛,本次大赛立足“高速道路”和“城市道路”两大真实场景,选择“半…

SEO文章批量生成

SEO文章生成器 想必大部分人对于 SEO 这个词不会陌生,它是指一系列的优化策略,目的是让网站能够在搜索引擎上更容易地被检索,并获得更多的流量和曝光度。但是,SEO 的优化并非易事,尤其对于那些没有相关技术知识和经验…

科技云报到:存储开源,风雨飘摇下“披着羊皮的狼”?

科技云报道原创。 这些年开源界的风风雨雨,时不时撼动着人们的内心。 2022年,俄乌冲突导致全球最大的独立开源软件公司SUSE、美国开源软件巨头Redhat、主流开源容器引擎Docker,纷纷宣布停止与俄罗斯的合作。 而全球最大的开源及私有代码项目…

react-8 Redux 状态管理 - 持久化存储 => 进阶:React-Redux()和模块化

1.redux redux是独立于react的库,是js状态管理库,提供可预测的状态管理。Vue也可用,但是和react比较搭配 。 2. 什么时候用 redux? 解决:任意:多组件共享状态, 解决:任意:两个…

83.qt qml-初步学习2D粒子影响器(二)

由于QmlBook in chinese翻译过来的文字有些比较生疏难于理解,所以本章在它的基础上做些个人理解,建议学习的小伙伴最好配合QmlBook in chinese一起学习。 QML粒子所有类型: Qt Quick Particles QML Types | Qt Quick 6.5.0 Affector类型: Attractor QML Type | Qt Quick 6.5.…

TouchGFX界面开发 | TouchGFX软件安装

TouchGFX软件安装 TouchGFX和STemWin类似,都是一个GUI框架,可以方便的在STM32 Cortex-M4 以及更高级别的STM32芯片上创建GUI应用程序。 本文中的TouchGFX软件安装,是基于已经安装有STM32CubeMX Keil MDK-ARM开发环境的情况下进行的&#x…

CSS3 2D变换

CSS3 2D变换 位移: div {transform: translateX(30px); /*水平位移*/transform: translateY(30px); /*垂直位移*/transform: translate(30px, 30px); /*两个方向位移*/ }注意:位移的百分比是元素本身,不是父元素 div {transform:…

JVM常用调优参数 ——JVM篇

JVM常用性能调优参数详解 ​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。 一、性能调优 ​ 性能调优包含多个层次,比如&…

学习实践-Vicuna【小羊驼】(部署+运行)

1、Vicuna【小羊驼】-FastChat"更快的对话" 介绍 3 月底,UC伯克利开源大语言模型Vicuna来了,这是一个与 GPT-4 性能相匹配的 LLaMA 微调版本。“缺啥补啥缺啥练啥,傻子也突出”! Vicuna 使用从 ShareGPT 收集的用户共…

生成对抗网络GAN

1.基本概念 生成对抗网络Generative Adversarial Networks(GAN)包含生成模型(generative model)和判别模型 (discriminative model) 两个模型。生成模型的任务是生成和原始数据相似的实例,判别模型的任务是判断给定的实…