DirectX 9 - Создание устройства и рендеринг в текстуру внутри DLL? - PullRequest
1 голос
/ 18 ноября 2010

Я пытаюсь создать управляемое устройство DirectX 9 в DLL, а затем использовать эту DLL для рендеринга сцен на экранную поверхность Я знаю, как сделать закадровый рендеринг, но мой вопрос:

Возможно ли создать устройство Directx внутри DLL?

Слабая попытка № 1 (InvalidCallException):

Device device = new Device(0, DeviceType.Hardware, null, CreateFlags.SoftwareVertexProcessing, presentParams);

Слабая попытка № 2 (InvalidCallException):

Device device = new Device(0, DeviceType.Hardware, new IntPtr(0), CreateFlags.SoftwareVertexProcessing, presentParams);

Доступны следующие перегрузки конструктора устройства:

public Device(int, DeviceType, Control, CreateFlags, PresentParameters[]);
public Device(int, DeviceType, IntPtr, CreateFlags, PresentParameters[]);

Любая помощь вполне может сделать мой день!

1 Ответ

0 голосов
/ 18 ноября 2010

Нашел ответ.Я создал скрытый элемент управления, соответствующим образом установил его ширину и высоту, а затем установил его в качестве цели.Работает отлично.Для тех, кто может наткнуться на это позже, вот код:

// Create the hidden control
Control hiddenControl = new Control();
control.Width = width;
control.Height = height;
control.Visible = false;         // Just for good measure, it wouldn't be displayed anyways

// Present Parameters
PresentParamaters presentParams = new PresentParamaters();
presentParams.SwapEffect = SwapEffect.Discard;
presentParams.Windowed = true;

// Create the device
Device device = new Device(0, DeviceType.Hardware, hiddenControl, CreateFlags.SoftwareVertexProcessing, presentParams);

Это все, что нужно, при условии , как я уже говорил, перед тем, как вы рендерится в текстуру.Я не уверен, что (если что-то произойдет) произойдет, если вы действительно отобразите этот элемент управления.

...