中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 1958|回复: 15

SetDescriptorHeaps到底有什么用

[复制链接]
发表于 2017-7-26 13:45:07 | 显示全部楼层 |阅读模式
dx12中目录列表里有个SetDescriptorHeaps方法
说明里是写更改当前绑定的描述符堆与命令列表相关联
但是让我很不解  因为在很多dx12的示例中 都使用了这个方法  注释掉SetDescriptorHeaps的代码   一点问题都没有
也就是说不管执不执行SetDescriptorHeaps 效果都一样  那这玩意有什么意义。。。?

发表于 2017-7-26 20:38:24 | 显示全部楼层
Texture和Sampler只能通过DescriptorHeap绑定到管线,ConstantBuffer和Buffer和UAV还可以通过别的方法绑定(比如SetGraphicsRootConstantBufferView)
 楼主| 发表于 2017-7-26 22:32:26 | 显示全部楼层
Phantom 发表于 2017-7-26 20:38
Texture和Sampler只能通过DescriptorHeap绑定到管线,ConstantBuffer和Buffer和UAV还可以通过别的方法绑定 ...

我问的是
ID3D12DescriptorHeap* ppHeaps[] = { m_srvHeap.Get() };
m_commandList->SetDescriptorHeaps(_countof(ppHeaps), ppHeaps);
有什么用,不管有没有这句,m_commandList->SetGraphicsRootDescriptorTable都一样正常执行 ,渲染结果也一样

发表于 2017-7-26 22:35:06 | 显示全部楼层
Liga 发表于 2017-7-26 22:32
我问的是
ID3D12DescriptorHeap* ppHeaps[] = { m_srvHeap.Get() };
m_commandList->SetDescriptorHeaps( ...

已经回答你了啊。
除非整个程序不用贴图,否则把程序中所有SetGraphicsRootDescriptorTable全都注释掉我就不信程序还能正常
 楼主| 发表于 2017-7-26 22:41:43 | 显示全部楼层
Phantom 发表于 2017-7-26 22:35
已经回答你了啊。
除非整个程序不用贴图,否则把程序中所有SetGraphicsRootDescriptorTable全都注释掉我 ...

我没有说SetGraphicsRootDescriptorTable注释不注释

我说的是”SetDescriptorHeaps“

你看微软的HelloTexture示例   很明显使用了贴图   但是你删掉SetDescriptorHeaps那行,程序依然正常运行
发表于 2017-7-27 01:37:34 | 显示全部楼层
Liga 发表于 2017-7-26 22:41
我没有说SetGraphicsRootDescriptorTable注释不注释

我说的是”SetDescriptorHeaps“

怎么可能,如果不SetDescriptorHeaps,后面SetGraphicsRootDescriptorTable直接就崩了
 楼主| 发表于 2017-7-27 09:03:27 | 显示全部楼层
Phantom 发表于 2017-7-27 01:37
怎么可能,如果不SetDescriptorHeaps,后面SetGraphicsRootDescriptorTable直接就崩了

一点都不崩 你自己试试
发表于 2017-7-28 14:15:54 | 显示全部楼层
Liga 发表于 2017-7-27 09:03
一点都不崩 你自己试试

我当然试过。怕是你用了假的D3D12
 楼主| 发表于 2017-7-28 18:24:49 | 显示全部楼层
Phantom 发表于 2017-7-28 14:15
我当然试过。怕是你用了假的D3D12

我怀疑这个世界都是假的

发表于 2017-7-29 10:37:17 | 显示全部楼层
Liga 发表于 2017-7-28 18:24
我怀疑这个世界都是假的

就如你第一张图,注了之后后面 SetGraphicsRootDescriptorTable 就应该崩溃了
 楼主| 发表于 2017-7-29 12:08:38 | 显示全部楼层
Phantom 发表于 2017-7-29 10:37
就如你第一张图,注了之后后面 SetGraphicsRootDescriptorTable 就应该崩溃了

那怎么解释我这个情况
发表于 2017-7-29 16:03:35 | 显示全部楼层
Liga 发表于 2017-7-29 12:08
那怎么解释我这个情况

检查一下你每次运行的exe是不是你刚刚生成的那个
 楼主| 发表于 2017-7-29 19:52:54 | 显示全部楼层
Phantom 发表于 2017-7-29 16:03
检查一下你每次运行的exe是不是你刚刚生成的那个

是 我怎么可能会犯这种错误
发表于 2017-7-30 11:26:51 | 显示全部楼层
把生成的exe文件删掉重新生成一次试试吧,有点玄幻...
 楼主| 发表于 2017-7-30 21:25:50 | 显示全部楼层
gon3d 发表于 2017-7-30 11:26
把生成的exe文件删掉重新生成一次试试吧,有点玄幻...

试了 一样
也许这就是所谓的玄学吧
发表于 2017-8-20 20:19:15 | 显示全部楼层
Liga 发表于 2017-7-30 21:25
试了 一样
也许这就是所谓的玄学吧

哥你真努力啊,每天都这么晚了还发帖子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-7-19 12:02 , Processed in 0.052635 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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