سؤال

أحاول إنشاء جهاز 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[]);

أي مساعدة يمكن أن تجعل يومي!

هل كانت مفيدة؟

المحلول

وجدت الجواب. لقد قمت بإنشاء عنصر تحكم مخفي ، وضبط العرض وارتفاعه بشكل مناسب ثم وضعته كهدف. يعمل بشكل مثالي. بالنسبة لأولئك الذين قد يتعثرون على هذا لاحقًا ، فهناك الرمز:

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

هذا كل ما يتطلبه الأمر ، على افتراض كما قلت قبل أن تعرض الملمس. لست متأكدًا مما سيحدث (إذا كان أي شيء) إذا كنت ستعرض بالفعل لهذا التحكم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top