Как изменить направление наложения текстуры с U на V и наоборот в DirectX11? - PullRequest
0 голосов
/ 18 января 2019

В DirectX 9 это было так: d3dDevice->SetRenderState(D3DRS_WRAP0, D3DWRAPCOORD_0);

Таким образом, вы можете изменить способ восприятия Direct3D кратчайшего маршрута между координатами текстуры в направлении u и направлении v. Очень полезно для обертывания текстур шаров и цилиндров.

Хорошее объяснение здесь https://docs.microsoft.com/en-us/windows/desktop/direct3d9/texture-wrapping

Но после долгих исследований мне трудно понять, как добиться таких же результатов в DirectX11, так как теперь он использует несколько состояний рендеринга, но ни у одного из них нет такой функции.

1 Ответ

0 голосов
/ 31 января 2019

Эта функциональность не реализована в Direct3D 11. Вам следует сопоставить координаты модели с координатами текстуры вручную.

Один из способов - создать ребро на линии шва, где вы хотите, чтобы текстура была намотана, и обработать грани модели по обеим сторонам шва независимо.

Другой способ - использовать текстурные координаты, которые находятся за пределами [0; 1] диапазон вместе с одним из методов адресации (который вы указываете в структуре описания состояния сэмплера). Эти методы перечислены в D3D11_TEXTURE_ADDRESS_MODE enum (https://docs.microsoft.com/en-us/windows/desktop/api/d3d11/ne-d3d11-d3d11_texture_address_mode).). Но «кратчайший маршрут» обтекание текстурой в d3d11 не предусмотрено, как описано в предоставленной вами статье MSDN.

...