Где он возвращает неверный вызов?
Редактировать: я предполагаю в новом вызове EngineDX9? Вы пытались установить дескриптор окна устройства с текущими параметрами?
Редактировать 2: Включили ли вы отладку в панели управления DirectX, чтобы увидеть, говорит ли она, что это за ошибка?
Edit3: вы пытались установить backbufferWidth и Height в 0? Что задано для backbuffercount? Может быть стоит попробовать "Format.D24S8" на бэкбуфере? «Возможно», что ваша видеокарта не поддерживает 16-битную версию (хотя вряд ли). Вы проверяли в шапках, что режим, который вы пытаетесь создать, действителен? Я предполагаю, между прочим, что язык CLR, который вы используете, автоматически устанавливает параметры, которые вы не устанавливаете в 0? Лично я всегда предпочитаю быть явным в таких случаях ....
PS Я предполагаю, что здесь я являюсь родным C ++ DX9-кодером, а не CLR SlimDX-кодером ...
Edit4: я уверен, что это отсутствие дескриптора окна ... Я, вероятно, ошибаюсь, но это единственное, что я могу видеть, ДЕЙСТВИТЕЛЬНО неправильно с вашей настройкой Для оконного устройства DX9 требуется окно. Кстати, установите ширину и высоту в 0, чтобы просто использовать окно, которое вы устанавливаете размер устройства тоже ...
Редактировать 5: Я действительно шел по неправильному маршруту. Нет ничего плохого в создании устройства, которое произвело ваше «неправильное» устройство. Не связывайтесь с настоящими параметрами, они в порядке. Основная причина, по которой у вас возникнут проблемы с Z-буфером, заключается в том, что вы устанавливаете функцию сравнения всегда. Это означает, что независимо от того, что содержит z-буфер, вставьте пиксель и запишите его z в буфер z, перезаписывая все, что там уже есть. Держу пари, что в этом ваша проблема с Z-буферизацией.