Я поддерживаю многоплатформенную кодовую базу для Xbox360 и WinXP. Я вижу проблему на стороне XP, которая, по-видимому, связана с D3DRS_VIEWPORTENABLE в версии Xbox360, не имеющей аналога для WinXP D3D9. У этой статьи была интересная идея, но единственный способ построить матрицу тождества - предоставить отрицательные числа в D3DVIEWPORT9 :: X и D3DVIEWPORT9 :: Height, но они являются числами без знака. (В любом случае я пытался ввести отрицательные числа, но ничего интересного не произошло.)
Итак, как можно эмулировать поведение D3DRS_VIEWPORTENABLE в WinXP / D3D9?
(Для ясности, результат, который я вижу, состоит в том, что двумерный квадрант с выравниванием экрана отлично работает на Xbox360, но смещается / растягивается на WinXP. Фактически, (0, 0) начинается в центре экрана на WinXP вместо нижнего левого угла, как на Xbox360, в результате применения преобразования окна просмотра.)
Обновление: у меня не было разработчика Xbox360, когда я писал этот вопрос, но с тех пор я его получил. Я прокомментировал отключение состояния D3DRS_VIEWPORTENABLE, и на Xbox360 получилось точно такое же поведение, что и на сборке WinXP. Таким образом, должна быть некоторая магия DirectX, чтобы преодолеть разрыв для эмуляции отключения D3DRS_VIEWPORTENABLE на WinXP.