Я пытаюсь использовать свойство DepthBias
в состоянии растеризатора в DirectX 11 (D3D11_RASTERIZER_DESC
), чтобы помочь с z-борьбой, которая возникает, когда я выполняю рендеринг в режиме каркаса над сплошными полигонами (наложение каркаса), и, кажется, устанавливаю для него любое значение. ничего не меняет в результате. Но я заметил кое-что странное... значение определяется как INT
, а не как FLOAT
. Это не имеет для меня смысла, но все равно не работает так, как ожидалось. Как нам правильно установить это значение, если это INT
, которое нужно интерпретировать как UNORM
в конвейере шейдера?
Вот что я делаю:
- Рендеринг всей геометрии
- Установите растеризатор для рендеринга в каркасе
- Рендеринг всей геометрии заново
Я ясно вижу наложение каркаса, но z-борьба ужасна. Я пытался установить DepthBias
на множество разных значений, таких как 0.000001
, 0.1
, 1
, 10
, 1000
и все минус эквиваленты, все равно никаких результатов... очевидно, я знаю, что при преобразовании числа с плавающей запятой как целого числа десятичные дроби обрезаются... а?
D3D11_RASTERIZER_DESC RasterizerDesc;
ZeroMemory(&RasterizerDesc, sizeof(RasterizerDesc));
RasterizerDesc.FillMode = D3D11_FILL_WIREFRAME;
RasterizerDesc.CullMode = D3D11_CULL_BACK;
RasterizerDesc.FrontCounterClockwise = FALSE;
RasterizerDesc.DepthBias = ???
RasterizerDesc.SlopeScaledDepthBias = 0.0f;
RasterizerDesc.DepthBiasClamp = 0.0f;
RasterizerDesc.DepthClipEnable = TRUE;
RasterizerDesc.ScissorEnable = FALSE;
RasterizerDesc.MultisampleEnable = FALSE;
RasterizerDesc.AntialiasedLineEnable = FALSE;
Кто-нибудь разобрался, как правильно настроить DepthBias
? Или, возможно, это ошибка в DirectX (в чем я сомневаюсь), или, может быть, есть лучший способ добиться этого, чем использование DepthBias
?
Спасибо!