2010-11-18 2 views
1

Я пытаюсь создать управляемое устройство DirectX 9 в DLL, а затем использовать эту DLL для рендеринга сцен на внешнюю поверхность. Я знаю, как сделать рендеринг на экране, но мой вопрос:DirectX 9 - Создать устройство и визуализировать текстуру внутри 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[]); 

Любая помощь вполне могла Или сделай мой день!

+0

Напомните мне, как мы обычно создаем устройство, если оно не находится в DLL. – BeemerGuy

+0

вместо передачи в 'null' или' new IntPtr (0) 'вы передаете объект Control или' IntPtr' этому объекту управления, который является «окном рендеринга», – tbridge

ответ

0

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

// 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); 

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

Смежные вопросы