D3D12 ClearRenderTargetView - PullRequest
       8

D3D12 ClearRenderTargetView

0 голосов
/ 27 октября 2019

Передача массива с плавающей точкой и получение предупреждения: «Значения очистки не соответствуют значениям, переданным для создания ресурса».

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);

Буду признателен за любые идеи или проблемы у других.

1 Ответ

0 голосов
/ 27 октября 2019

Вы не показывали нам код, который создает представление цели рендеринга (renderTargets[globalObjects->videoDevice->frameIndex]->handle), но при его создании значение очистки может быть установлено в D3D12_CLEAR_VALUE:

D3D12_CLEAR_VALUE clearValue = {};
clearValue.Format = DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
clearValue.Color = c;

Простоизмените .Color в соответствии с цветом в вызове на commandList->ClearRenderTargetView()

...