游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1844|回复: 2

能否用编译后的HLSL目标码创建一个shader?

[复制链接]

12

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2010-2-26 19:07:00 | 显示全部楼层 |阅读模式
个人认为经调试无误的shader,没有必要再在程序执行过程中调用D3DXCompileShaderFromFile。
我已经尝试过先用D3DXCompileShaderFromFile产生shader目标码,将它保存到一个文件内,而另一个程序读取目标码到缓冲区,这个缓冲区指针为void *pCodeBuffer,利用pDevice->CreateVertexShader((DWORD*)pCodeBuffer, &BasicShader)可以成功创建一个shader。
现在的主要棘手问题是,常数表接口ID3DXConstantTable应该如何处理,以便将变量值传递给shader,好像ID3DXConstantTable除了用D3DXCompileShaderFromFile取得以外,没有可行的构造方法啊?

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2010-2-28 10:30:00 | 显示全部楼层

Re:能否用编译后的HLSL目标码创建一个shader?

不需要常量表。你只需要保存变量对应的寄存器索引号即可通过device->setvalue(index,value)之类的函数就可以设置值了。(函数名记不住了,但是肯定有类似的。仔细找找即可。好像设置texture是另外一个函数)

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2010-3-3 16:10:00 | 显示全部楼层

Re:能否用编译后的HLSL目标码创建一个shader?

你怎么保证你机器编译的可以在别人机器运行?你怎么知道别人编译完了的和你的一样?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-12 17:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表