当前位置: 首页 > news >正文

Direct3D 12——纹理——纹理

纹理不同于缓冲区资源,因为缓冲区资源仅存储数据数组,而纹理却可以具有多个mipmap层级(后 文有介绍),GPU会基于这个层级进行相应的特殊操作,例如运用过滤器以及多重采样。支持这些特殊 的操作纹理资源都被限定为一些特定的数据格式。而缓冲区资源就没有这项限制,它们可以存储任意类 型的数据。纹理所支持的数据格式由枚举类型DXG1_FORMAT来表示。下面是纹理格式文档:

https://learn.microsoft.com/zh-cn/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format

以某种具体类型创建的资源,其格式是不能更改的。这将 使该资源在运行时的访问得以优化[……]。”因此,我们应当只在不得已的情况下才使用 无类型资源,否则就用具体的类型来创建资源。

一个纹理可以绑定到渲染流水线的不同阶段,一个常见的例子是既可将一纹理用作渲染目标(即 Direct3D中的渲染到纹理技术),又能把它作为着色器资源(即在着色器中对该纹理进行采样)。一个纹 理可以当作渲染目标,也可以充当着色器资源,但是不能同时“身兼数职”。将数据渲染到一个纹理后, 再用它作为着色器资源,这种方法称为渲染到纹理(render-to-texture)。

纹理坐标

在这里插入图片描述
Direct3D所采用的纹理坐标系,是由指向图像水平正方向的u轴与指向图像垂直正方向的v轴所组成的。取值范围为0≤u,v≤1的坐标(以,V)标定的是一 种称为纹素(texel)的纹理元素。

对于每个3D三角形来说,我们希望在将要映射于 其上的纹理中定义出与之对应的三角形。设 p0p1以及p2为3D三角形的3个顶点,它们分别对应 于纹理坐标q0q1q2。针对3D三角形上任意一点(x,
y,z)处的纹理坐标(u,v),我们都可以通过与3D三角形坐标插值所用的相同参数s、t,对顶点纹理坐标进行线性插值来求得。这就是说,如果:
在这里插入图片描述
左侧的三角形位于3D空间,我们将把右侧纹理上的2D三角形映射到左侧的3D三角形上

(x,y,z)=p= p0 + s ( p1 - p0 ) + t ( p2 - p0 )

当s ≥ 0, t ≥ 0, s + t ≤ 1 时,那么

(u,v)=q= q0 + s ( q1 - q0 ) + t ( q2 - q0)

依此方法便可求出三角形上每个点处的对应纹理坐标。

http://www.lryc.cn/news/59403.html

相关文章:

  • 产品经理必读 | 俞军产品经理十二条军规
  • 【机器视觉1】光源介绍与选择
  • 【三十天精通Vue 3】第十一天 Vue 3 过渡和动画详解
  • 基于多种流量检测引擎识别pcap数据包中的威胁
  • 第02章_变量与运算符
  • 仅三行就能学会数据分析——Sweetviz详解
  • springboot——集成elasticsearch进行搜索并高亮关键词
  • MATLAB绘制局部放大图
  • 第十三天缓存一致性篇
  • VSCode使用Remote SSH远程连接Linux服务器【远程开发】
  • 人工智能专题-知识表示
  • 各种过滤器使用场景
  • 第04章_IDEA的安装与使用(下)
  • 2023年全国最新道路运输从业人员精选真题及答案51
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK显示Bayer彩色格式的图像(C#)
  • Unity云渲染,加移动
  • ASP一个简单的网上教务系统模型的设计与实现
  • 黑马点评实战篇问题总结
  • C++ 并发编程
  • 5V的LDO电源的WCCA分析-可靠性分析计算过程
  • TensorFlow 深度学习第二版:6~10
  • C++标准库 -- 顺序容器 (Primer C++ 第五版 · 阅读笔记)
  • JavaEE初阶学习:文件操作
  • 【外设零基础通用教程】GPIO 下
  • 在window上安装python
  • [hive SQL] 预约业务线
  • LNMP架构和论坛搭建以及一键部署
  • RK3568平台开发系列讲解(设备驱动篇)V4L2程序实现流程
  • 人工智能中的顶级会议
  • 【Python OpenCV】第六天:图像的基础操作