首页 > 解决方案 > D3D12 ClearRenderTargetView

问题描述

传递一个浮点数组并收到警告,“清除值与传递给资源创建的值不匹配。”

1 无警告地工作

2 没有,我尝试使用 GetFloatArray() 方法并仍然收到警告

渲染目标格式为:

clearValue.Format = DXGI_FORMAT::DXGI_FORMAT_R8G8B8A8_UNORM;

我的 CColor 对象:

float RGBA[4];

float* GetFloatArray()
{
    return RGBA;
}

ClearRenderTargetView(s):

// #1
globalObjects->videoDevice->commandList->ClearRenderTargetView(
   globalObjects->videoDevice->swapChainRenderTargets[globalObjects->videoDevice->frameIndex]->handle,
   CColorCornflowerBlue.GetFloatArray(), 0, nullptr);

// #2
const float c[4] =
{ 
    CColorLovelyPurple.RGBA[0],
    CColorLovelyPurple.RGBA[1],
    CColorLovelyPurple.RGBA[2],
    CColorLovelyPurple.RGBA[3]
};

commandList->ClearRenderTargetView(renderTargets[globalObjects->videoDevice->frameIndex]->handle,
c, 0, nullptr);

任何想法或其他人是否有同样的问题将不胜感激。

标签: directx-12

解决方案


原来我不理解第二个渲染目标视图并且使用不正确。对于那些试图制造开销的人来说,它不是第二个渲染目标,而是一个 2D 图像。我的总体目标是开销而不是多个渲染目标。

commandList->CopyResource(texture->texture.Get(), renderTargets[globalObjects->videoDevice->frameIndex]->resource.Get());

推荐阅读