سؤال

لدي تطبيق MFC C ++ الناضج الذي يعرض على الشاشة ويطبع باستخدام ملفات CDC على Win32 GDI. على الرغم من أنه تم تحسينه على مر السنين ، إلا أنني أود استبداله بشيء أسرع قليلاً. وشملت الرسومات النماذج السطحية الثلاثية المقدمة ، والوسيطة المعقدة والمضلعات ، والكثير من النص. يحتاج إلى تلبية المعايير التالية ؛

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

  • يجب أن تكون SDK قادرة على تقديم أي فئة مشتقة من CWND بما في ذلك فئات CVIEW و SCRORLVIEW.

  • يجب على SDK دعم الطباعة على أي جهاز طباعة Windows ،

  • يجب أن يكون SDK منخفضًا بدرجة كافية لجعل المنفذ من مكالمات CDC / GDI منخفض المستوى واضحًا نسبيًا.

  • المصدر المفتوح دائمًا لطيف ، ولكن تكلفة واحدة من UP إلى قول 2 ألف دولار ، مع ترقيات/دعم اختياري سيكون على ما يرام. تكلفة الترخيص لكل مستخدم غير مقبول ،

  • سيكون الوصول إلى التعليمات البرمجية المصدر مكافأة كبيرة ، وتحديداً فكرة تشغيل أجزاء من SDK على Windows CE / Mobile.

  • أنا أتعامل مع إدارة المنافذ ثلاثية الأبعاد الخاصة بي. إذا لم يكن SDK منخفض المستوى غير متاح ، فيجب على SDK أعلى مستوى SDK التعامل بشكل جيد 3D ، والعمل مع ملايين المثلثات والمضلعات والكيانات النصية على منصة Windows 32 بت.

أي اقتراحات؟ إن إدراج إيجابيات وسلبيات محددة في اقتراحك المقترح سيكون موضع تقدير كبير.

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

المحلول

لقد قمت بتقييم Fastgraph مرة واحدة (http://www.fastgraph.com) لمشروع. أعجبتني في برامج الاختبار الصغيرة التي كتبتها ، كانت سريعة جدًا. انتهى بنا الأمر إلى عدم استخدامه لأسباب خارجية (لا علاقة للمكتبات التي قمت بتقييمها) لذلك ليس لدي خبرة عملية أكثر.

نصائح أخرى

أعتقد directx أو SDL سوف يناسب احتياجاتك. وهي مصممة لثلاثي الأبعاد ولكن العمل لمدة 2D كذلك. كل من دعم Windows CE / Mobile و SDL متاح أيضًا لمجموعة من OS غير الميكروسوف.

لسوء الحظ ، لا يتم دعم التوافق المباشر مع GDI في المكتبات. ولكن يمكنك القيام بالخدعة عن طريق إنشاء فئة محول ، والتي ستقبل جميع رسومات الإخراج من فئات التطبيق المصممة GDI وتحويل التنسيق لتناسب احتياجات فئات DirectX أو SDL (اعتمادًا على ما تريد استخدامه).

أنا شخصياً صنعت فئة المحول هذه مرة واحدة. كان لدي لعبة مكتوبة للكمبيوتر الشخصي ، باستخدام SDL وكنت بحاجة إلى نقلها إلى جهاز النخيل. هناك اضطررت إلى استخدام مكتبة الرسومات المختلفة (لا أتذكر اسم LIB الآن) لكنني نجحت في نقل جميع وظائف SDL إلى التنسيق الذي يحتاجه LIB الآخر. كنت بحاجة إلى تغيير طلبي للاتصال بوظائف المحول (Wrapper) ، والتي توجيه المكالمة إلى مكتبة Palm أو Pocket PC ، اعتمادًا على الجهاز الذي يتم تشغيله حاليًا. لذلك أعتقد أنه يمكنك فعل الشيء نفسه لتحويل GDI -> DirectX أو GDI -> SDL.

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