OpenGL对此有its description,但DirectX怎么样?
在我的猜测中,示例结果为float(0, 0, 0, 0)
,或者由驱动程序引起崩溃。无论如何,它只是我的猜测,或部分案例,如果我自己只测试它。我想说清楚。
未初始化的纹理表示没有传递D3DDevice::CreateTexture2D()的任何数据,也没有传递map或update resource。
如果可能,我想了解有关DirectX 11版本的说明。
答案 0 :(得分:0)
是的,如果从空纹理中采样,则所有值的值都为0。
我无法记住我在哪里阅读它,但我知道它在MSDN文档中,我也偶尔会这样做,因为我在开始时分配了大部分的textures \ buffers \ views并填充为I如果我从null或未初始化的样本然后它只读0。
答案 1 :(得分:0)
从Create2DTexture函数(您链接):
如果未向pInitialData传递任何内容,则资源的内存的初始内容未定义。在这种情况下,您需要在读取资源之前以其他方式编写资源内容。
未定义可能意味着什么,驱动程序将确定确切的行为。它不太可能会崩溃,但与未定义的行为一样,一切皆有可能。来自此纹理的样本肯定不是保证为float4(0,0,0,0)
,因为它具有未绑定的纹理。
这类似于访问未初始化的系统内存。内容可能是从先前已分配相同内存的操作中写入的内存(取决于分配器的行为)。我建议如果你想要一致的行为,要么使用未绑定的纹理,要么初始化内容。