DIRECTX 9 - إنشاء جهاز وقم بالتقديم إلى نسيج داخل DLL؟
-
25-09-2019 - |
سؤال
أحاول إنشاء جهاز 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);
هذا كل ما يتطلبه الأمر ، على افتراض كما قلت قبل أن تعرض الملمس. لست متأكدًا مما سيحدث (إذا كان أي شيء) إذا كنت ستعرض بالفعل لهذا التحكم.
لا تنتمي إلى StackOverflow