请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1111|回复: 15

SetDescriptorHeaps到底有什么用 [复制链接]

Rank: 8Rank: 8

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

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2009-3-27
积分
4244
发表于 2017-7-26 20:38:24 |显示全部楼层
Texture和Sampler只能通过DescriptorHeap绑定到管线,ConstantBuffer和Buffer和UAV还可以通过别的方法绑定(比如SetGraphicsRootConstantBufferView)

使用道具 举报

Rank: 8Rank: 8

注册时间
2017-4-29
积分
147
发表于 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都一样正常执行 ,渲染结果也一样

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

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

已经回答你了啊。
除非整个程序不用贴图,否则把程序中所有SetGraphicsRootDescriptorTable全都注释掉我就不信程序还能正常

使用道具 举报

Rank: 8Rank: 8

注册时间
2017-4-29
积分
147
发表于 2017-7-26 22:41:43 |显示全部楼层
Phantom 发表于 2017-7-26 22:35
已经回答你了啊。
除非整个程序不用贴图,否则把程序中所有SetGraphicsRootDescriptorTable全都注释掉我 ...

我没有说SetGraphicsRootDescriptorTable注释不注释

我说的是”SetDescriptorHeaps“

你看微软的HelloTexture示例   很明显使用了贴图   但是你删掉SetDescriptorHeaps那行,程序依然正常运行

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2009-3-27
积分
4244
发表于 2017-7-27 01:37:34 |显示全部楼层
Liga 发表于 2017-7-26 22:41
我没有说SetGraphicsRootDescriptorTable注释不注释

我说的是”SetDescriptorHeaps“

怎么可能,如果不SetDescriptorHeaps,后面SetGraphicsRootDescriptorTable直接就崩了

使用道具 举报

Rank: 8Rank: 8

注册时间
2017-4-29
积分
147
发表于 2017-7-27 09:03:27 |显示全部楼层
Phantom 发表于 2017-7-27 01:37
怎么可能,如果不SetDescriptorHeaps,后面SetGraphicsRootDescriptorTable直接就崩了

一点都不崩 你自己试试

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2009-3-27
积分
4244
发表于 2017-7-28 14:15:54 |显示全部楼层
Liga 发表于 2017-7-27 09:03
一点都不崩 你自己试试

我当然试过。怕是你用了假的D3D12

使用道具 举报

Rank: 8Rank: 8

注册时间
2017-4-29
积分
147
发表于 2017-7-28 18:24:49 |显示全部楼层
Phantom 发表于 2017-7-28 14:15
我当然试过。怕是你用了假的D3D12

我怀疑这个世界都是假的

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2009-3-27
积分
4244
发表于 2017-7-29 10:37:17 |显示全部楼层
Liga 发表于 2017-7-28 18:24
我怀疑这个世界都是假的

就如你第一张图,注了之后后面 SetGraphicsRootDescriptorTable 就应该崩溃了

使用道具 举报

Rank: 8Rank: 8

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

那怎么解释我这个情况

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2009-3-27
积分
4244
发表于 2017-7-29 16:03:35 |显示全部楼层
Liga 发表于 2017-7-29 12:08
那怎么解释我这个情况

检查一下你每次运行的exe是不是你刚刚生成的那个

使用道具 举报

Rank: 8Rank: 8

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

是 我怎么可能会犯这种错误

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2014-4-25
积分
2098
发表于 2017-7-30 11:26:51 |显示全部楼层
把生成的exe文件删掉重新生成一次试试吧,有点玄幻...

使用道具 举报

Rank: 8Rank: 8

注册时间
2017-4-29
积分
147
发表于 2017-7-30 21:25:50 |显示全部楼层
gon3d 发表于 2017-7-30 11:26
把生成的exe文件删掉重新生成一次试试吧,有点玄幻...

试了 一样
也许这就是所谓的玄学吧

使用道具 举报

Rank: 5Rank: 5

注册时间
2015-4-6
积分
50
发表于 2017-8-20 20:19:15 |显示全部楼层
Liga 发表于 2017-7-30 21:25
试了 一样
也许这就是所谓的玄学吧

哥你真努力啊,每天都这么晚了还发帖子

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-10-21 16:42 , Processed in 0.115752 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部