سؤال

وأنا أعلم خلط برنامج OpenGL ولا ينصح دايركت لكن أنا أحاول لبناء جسر بين التطبيقات المختلفة التي تستخدم API رسومات منفصلة: الصورة وأنا على أمل هناك أسلوب لتبادل البيانات، وتحديدا القوام

ولدي الملمس الذي تم إنشاؤه في Direct3D مثل هذا:

d3_device-> CreateTexture(width, height,
  1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
  &texture, NULL);

هل هناك أي طريقة يمكنني استخدام هذا الملمس من برنامج OpenGL دون أخذ ذهاب وإياب من خلال ذاكرة النظام؟

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

المحلول

ولا.

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

نصائح أخرى

وYES. كما نشر سابقا (انظر أدناه) هناك يجب أن يوجد حل واحد على الأقل. لقد وجدت اثنين من الحلول الممكنة:

1) على بطاقات NVIDIA تم دمج ملحق جديد في 256 dirvers. يمكنك الاطلاع على http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop. النص

2) DXGI هي القوة الدافعة إلى مركب جميع النوافذ في ويندوز فيستا ويندوز 7. نرى msdn.microsoft.com/en-us/library/ee913554.aspx

وأنا لم يتخذ بعد تجربة مع أي حل، ولكن آمل أن تجد بعض الوقت لاختبار واحد منهم. ولكن بالنسبة لي أول واحد ويبدو أن أسهل واحد.


[أعتقد أنه يجب أن يكون ممكنا. في النسخة الأخيرة ويندوز (فيستا و 7) يمكن للمرء أن يرى معاينة أي محتوى نافذة في شريط المهام (سواء في GDI، Direct3D، أو OpenGL). على حد علمي لم تدعم برنامج OpenGL المعاينة في نسخ ويندوز السابقة. وذلك على الأقل في الإصدار الأحدث يجب أن يكون هناك إمكانية لزوجين أو تبادل تقديم سياقات حتى بين العمليات المختلفة ... هذا ينطبق أيضا على المنصات الحديثة الأخرى التي تشترك تقديم سياقات نظام واسع لجعل آثار تقديم المختلفة.]

وأعتقد أنه غير ممكن. على حد سواء لديهم نماذج مختلفة من الملمس.

وأنت لا يمكن الوصول إلى الذاكرة الملمس مباشرة دون أي ديريكتكس أو OpenGL.

وOtherway حول: إذا كان ذلك ممكنا، يجب أن تكون قادرا على استرداد عنوان الملمس، في الملعب، وعرض وغيرها (تعتمد الأجهزة) المعلومات تخطيط الذاكرة وإنشاء dummytexture في نظام آخر، ودفع استرجاع البيانات في الخاص بك فقط كائن الملمس بإنشائه. هذا غير ممكن

ومن الواضح أن هذا لن يعمل على أي جهاز الهبوط، وإذا كان الأمر كذلك فإنه لن يكون المحمولة للغاية.

وأنا لا أعتقد أنه من الممكن من دون تحميل البيانات إلى الذاكرة المضيف وإعادة تحميله في ذاكرة الجهاز.

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