DirectX 9 - 创建设备并渲染到DLL内的纹理?

时间:2010-11-18 04:04:40

标签: c# dll device directx-9 managed-directx

我正在尝试在DLL中创建Managed DirectX 9设备,然后使用该DLL将场景渲染到屏幕外表面。我知道如何进行屏幕外渲染,但我的问题是:

是否可以在DLL中创建directx设备?

费力尝试#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 :(得分: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);

这就是所有需要的,假设就像我在渲染纹理之前所说的那样。如果您要实际渲染到此控件,我不确定会发生什么(如果有的话)。