首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX 11阴影资源管理

DirectX 11阴影资源管理
EN

Stack Overflow用户
提问于 2014-08-28 02:13:56
回答 1查看 1.4K关注 0票数 0

我正在创建一个着色管理系统,而不是使用效果11库。关于着色器的资源管理,我有几个问题。

如果在着色器代码中将常量缓冲区设置为某个寄存器,那么当我在设备上设置它时,是否需要将其设置为该寄存器?如果我有多个使用那个寄存器的着色器呢?

是否在绘制之间的内存中维护常量缓冲区,或者是否清除了常量缓冲区?例如,我有一个常量缓冲区,与上次抽签没有更改,是否需要再次设置它?

是一次设置一个常量缓冲区,还是一次性设置一个常量缓冲区?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 02:44:19

是的,您需要将其设置为该寄存器,将其视为一个常量缓冲槽。

是的,它会一直在那里,直到你把它换到另一个。

“一次设置一个常量缓冲区还是一次设置全部缓冲区比较慢?”

你所说的“一次性”是什么意思?

无论如何,请查看本nvidia演示文稿,以获得有关cbuffer管理的优秀信息:McDonald.pdf

注意,即使在hlsl代码上使用完全相同的“变量”,像素着色器和顶点着色器(不同的着色器类型)也使用不同的寄存器。对您来说,需要注意的是,要将cbuffer更新到寄存器,您可以使用d3d函数的像素着色器版本(VSSetConstantBuffer与PSSetConstantBuffer等)。当然,这适用于所有类型的着色器。

例如,在hlsl代码中,可以有两个常量缓冲区使用相同的插槽(寄存器),但是,请记住,不要在相同的shader..Or上同时使用这两个常量缓冲区,同样,您可以在两个着色器上使用相同的常量缓冲区,但请记住,它并不完全相同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25539680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档