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

window显示驱动开发-Direct3D 着色器代码

Direct3D 着色器代码

像素着色器代码遵循命令流中的D3DHAL_DP2CREATEPIXELSHADER结构。 对于 DirectX 8.1 及更早版本,顶点着色器代码遵循D3DHAL_DP2CREATEVERTEXSHADER结构。 对于 DirectX 9.0 及更高版本,顶点着色器代码遵循D3DHAL_DP2CREATEVERTEXSHADERFUNC结构。 运行时在调用驱动程序的 D3dDrawPrimitives2 函数时创建像素或顶点着色器。 若要创建像素着色器,运行时使用D3DDP2OP_CREATEPIXELSHADER作代码调用 D3dDrawPrimitives2。 若要在 DirectX 8.1 及更早版本中创建顶点着色器,运行时使用D3DDP2OP_CREATEVERTEXSHADER作代码调用 D3dDrawPrimitives2。 若要在 DirectX 9.0 及更高版本中创建顶点着色器,运行时使用 D3DDP2OP_CREATEVERTEXSHADERFUNC作代码调用 D3dDrawPrimitives2。

着色器相对寻址

支持相对寻址的像素和顶点着色器版本可以指定在目标和源参数令牌的第13位中使用相对寻址。 指定相对寻址时,会有一个附加的 DWORD 令牌紧随目标或源参数令牌之后。

请注意,此相对寻址令牌仅适用于顶点着色器版本 2_0 及更高版本以及像素着色器版本 3_0 及更高版本。 相对寻址不适用于低于 3_0 的像素着色器版本。

此相对寻址令牌的格式与目标或源参数令牌的格式相同,并适用以下规则:

  • 只能将D3DSPR_ADDR或D3DSPR_LOOP用作 注册类型。
  • 源参数令牌中的Swizzle位用于确定寄存器组件。
  • 位 31 为0x1。
  • 使用寄存器偏移量。
  • 所有其他位均未使用。
  • 地址寄存器和 aL 寄存器用于常量寄存器的相对寻址。
着色器代码格式

用于创建像素或顶点着色器的命令由一组着色器代码组成。 这些代码指示驱动程序如何创建着色器。 每个着色器代码中的标记格式决定了其唯一性。 着色器代码令牌是具有特定格式的 DWORD。

DirectX3D 运行时在将代码传递给驱动程序之前验证着色器代码。 当着色器代码到达驱动程序时,驱动程序可以解释代码,因为代码的格式有效。 驱动程序读取着色器代码的令牌来解释代码。

每个单独的着色器代码采用常规标记布局的格式。 第一个令牌必须是 版本令牌。 版本令牌提供代码的版本号,还确定代码是用于像素还是顶点着色器。 着色器内容遵循版本令牌,由各种 指令令牌组成,可能与 注释令牌 和空格交织在一起。 根据指令令牌指定的精确操作,标签、目标参数以及源参数令牌也可以是着色器内容的一部分,并跟随在指令令牌之后。 例如,如果指令令牌指定了ADD 指令,驱动程序将确定该指令令牌后面有一个目标参数令牌和两个源参数令牌。 结束令牌用于完成着色器代码。

设置说明(例如,D3DSIO_DCL和D3DSIO_DEF)包含唯一格式的令牌。

每个着色器指令都包含特定的标记格式。 着色器作代码部分描述了每个着色器指令的标记格式。

着色器指令以主要指令开头,以D3DSIO_RET或D3DSIO_END指令结尾。 子例程遵循D3DSIO_RET说明。

http://www.gsyq.cn/news/1584720.html

相关文章:

  • 计算机毕业设计之网络商城系统的设计与实现
  • TVA在机电产品视觉检测的创新应用(13)
  • 告别重复造轮子:C#抽象机器人控制层,兼容ABB/安川/发那科
  • Python之stubsplit包语法、参数和实际应用案例
  • 第六章—18—数据容器的通用操作
  • Kimi LeetCode 3347. 执行操作后元素的最高频率 II C语言实现
  • 【第十期】高级进阶篇:自动化与智能化 —— 如何用 Python 和 AI 辅助挖掘漏洞?
  • 2026-06-23:合并靠近字符。用go语言,现有仅含小写字母的字符串s与整数k,规则说明如下: 1. 判定标准:同一字符串里,若两个相同字母的位置索引差值不超过k,这两个字符视作相邻靠近字符。 2
  • HarmonyOS 6商城开发学习:平板竖屏下的底部“飞件“事故——用 layoutWeight 替掉 position 与 Stack 的响应式救火
  • 项目实训(十一)| 学习路线模块:个性化学习路线生成
  • 【Linux基础】Linux 必学基础指令:echo/cat/ 重定向 / 查找命令全解析
  • 阿里通义千问,8元叠加券,真的可以领到,真没有套路,真不用拉人头,实打实的,就是这么简单!
  • 信创业务技术全景解析:从项目实施到国密安全,一文读懂信创落地核心技术体系(PPT)
  • 《个人头像上传》二、Preferences用户首选项使用指南
  • TVA在机电产品视觉检测的创新应用(11)
  • 华为OD机试真题-预测新能源发电量(C/C++/Py/Java/Js/Go)
  • MacBook的实用小技巧
  • 高股息投资笔记-股票的人性2
  • 2 建立连接
  • LIVE项目解析:基于图像先验与时间一致性的AI视频编辑技术
  • 研发与业务协同工具怎么选?2026 主流团队云存储架构深度横评与避坑指南
  • [崛起]大国纪录片系列合集
  • 极小超曲面与Yau猜想:对称流形中的无限存在性定理
  • 2026新能源下乡155款车型全拆解:从625亿国补到铁锂涨价,全产业链机会地图
  • 百考通AI,论文降重与去AI痕迹,更安心,让数据为你说话
  • 东南亚多人手游区域 CDN 调优实战:新加坡、曼谷本地边缘节点降低联机延迟、过滤 UDP 异常流量
  • 视觉语言模型中的熵梯度证据定位技术解析
  • 基于通路交互图与GNN的多组学癌症转移预测模型构建指南
  • LLM提示词工程2.0:从Prompt到Prompt DSL的范式演进2026
  • RAP 里的 managed 与 unmanaged,别把它们理解成自动档和手动档那么简单