سؤال

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

(0-100)->green 
(100-200)->blue
(200>above)->red

الشاشة تعمل بشكل جيد وجيدة مع صور صغيرة 256x256. ولكن عندما تصبح منطقة العرض كبيرة ، قل 1024 × 1024 إن تحويل النطاق الرمادي إلى لون الصورة النقطية يستغرق بعض الوقت ولم تعد التفاعلات ناعمة بعد الآن. في الآونة الأخيرة ، سمعت الكثير عن برمجة GPU للأغراض العامة. في نشرنا لدينا بطاقة رسومات عالية (NVIDIA Quadrofx).

تم تصميم تطبيقنا باستخدام .NET/C# إذا كان من المطلوب إضافة القليل من C ++/CLI أيضًا. الآن سؤالي هو هل يمكن تفريغ تحويل Bitmap هذا إلى معالج الرسومات؟ أين يجب أن أبحث عن مزيد من القراءة؟

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

المحلول

نعم - وبما أنك (على ما يبدو) تعرض صورة نقطية ، فأنت لا تحتاج إلى الذهاب إلى مسار GPGPU (على سبيل المثال ، OpenCl أو CUDA). يمكنك استخدام تظليل قابل للبرمجة لذلك - وإذا فهمت ما تقوله ، فسيكون ذلك واضحًا ومباشرًا في ذلك.

بقدر كيفية كتابة التظليل ، فإنه يعتمد (في الغالب) على كيفية قيامك ببقية الرسم. فقط للحصول على مثال واضح ، إذا كنت تستخدم بالفعل WPF للرسم الخاص بك ، فربما تريد استخدام تظليل HLSL (يدعم WPF تظليل البكسل مباشرة إلى حد ما).

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

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