**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
4天前关闭。
此帖子已在2天前编辑并提交审核,无法重新打开帖子:
原始关闭原因未解决
Improve this question
一般来说,我正在学习DirectX汇编语言(到目前为止,专门针对DirectX 9)。到目前为止,我正在学习James C. Leiterman的书 “Learn Vertex and泛指el Shader Programming with DirectX 9”。
事实是,在研究了(或多或少)DirectX的汇编器是如何工作的,我遇到了这样一个事实,我不知道如何汇编这个代码。在上面提到的书中,只写了“使用着色器的工具应用程序列表”,但书中没有说明它们是汇编代码还是只编译高级代码。如果它们汇编,那么还没有说明如何使用它们。
这里是那本书中给出的应用程序工具的列表;我引述:
汇编或编译着色器代码时,最有可能使用以下工具之一:
- 宏汇编程序。
- psa.exe:Direct 3D 8像素着色器汇编程序。
- vsa.exe:Direct 3D 8顶点着色器汇编程序。
- xsasm.exe:Xbox着色器汇编程序
- exe:Cg(用于图形的C)编译器的范围限于硬件平台。
- exe:DX9 SDK提供的HLSL编译器,可针对所有硬件平台优化代码。
- RenderMonkey.exe:渲染猴子。
值得注意的一点是,NVASM的开发已经停滞,因此它只支持PS. 1. 3,因此使用有限。
(程序 psa.exe 和 vsa.exe 在文件夹 * 微软DirectX SDK(2010年6月)* 中找不到。在那里我只找到了 fxc.exe,我在互联网上搜索了如何使用这个 fxc.exe 的信息,但它说这个程序是用HLSL编写的编译着色器,我不需要那个。
我没有寻找剩下的非官方的,因为这些不是来自微软的官方程序,因此他们可以停止支持,以及,简而言之,为什么我需要“奇怪”的应用程序,如果他们来自微软,而且,既然我是在Windows下做编程,那么微软的程序将更可靠,虽然,如果我不会找到官方的所有,那么我可能将不得不使用非官方的至少以某种方式使用视频加速器的/视频卡的全部权力)。
因此,我在互联网上寻找了很多东西,以寻找一种方法来汇编代码编写的DirectX汇编语言,但它没有找到。
关于用DirectX汇编语言(最好使用Microsoft的一些工具)组装着色器的信息来源(当然是最容易理解的)是什么?
有没有人知道如何组装用DirectX的汇编语言编写的着色器(最好是用Microsoft
的工具)?但确切地说是关于DirectX的汇编语言,而不是像HLSL
这样的高级语言。因为如果我不能把它组装成程序,我学习DirectX的汇编语言是没有用的。
1条答案
按热度按时间nbnkbykc1#
对 * 编译 *“DirectX字节代码(DXBC)”程序集的支持在Direct 3D 9时代被删除。
仅支持从
FXC.EXE
HLSL编译器“阅读”程序集输出。像VSA.EXE
和PSA.EXE
这样的工具仅支持Shader Model 1.1 - 3.0,并且最后在旧版DirectX SDK中提供(2008年11月)。泛指el Shader Model 1.x模型受到了很大的限制(通常只有几个指令槽),所以手写着色器汇编在那些日子里是非常普遍的,但它是所有HLSL只有在那之后。没有适用于DXBC的Shader Model 4.0或5.0汇编程序。FXC.EXE HLSL编译器对生成的二进制blob进行签名,而Direct 3D 10 -Direct 3D 12 API仅接受签名的blob。这旨在简化驱动程序创作,以便在将DXBC转换为供应商微码时,可以依赖于特定的编码模式。汇编语言本身记录在Microsoft Docs上,包含Shader Model 4和5内容。
请注意,作为最近一些开源努力的一部分,现在 * 有 * 一个支持的NuGet包来做DXBC签名,如果需要的话。见this blog post。这可能是一个选择,为一些人谁想要写自己的DXBC汇编工具,但大多数存在的代码转换DXBC到DXIL。
Shader Model 6使用“DirectX中间语言(DXIL)”,并且在GitHub上是完全开源的。