سؤال

هل يعرف أحد كيفية إنشاء نسيج باستخدام مساحة ألوان YUV حتى نتمكن من تحويل مساحة ألوان YUV إلى RGB المستندة إلى الأجهزة دون الحاجة إلى استخدام تظليل الأجزاء؟أنا أستخدم NVidia 9400 ولا أرى امتداد GL واضحًا يبدو أنه يقوم بالمهمة.لقد عثرت على أمثلة حول كيفية استخدام تظليل الأجزاء، لكن المشروع الذي أعمل عليه حاليًا يدعم OpenGL 1.1 فقط وليس لدي الوقت لتحويله إلى 2.0 وإجراء جميع اختبارات الانحدار اللازمة.وهذا يستهدف Linux أيضًا.على منصات أخرى كنت أستخدم امتداد MESA ولكنه لا يعمل على بطاقة Nvidia.

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

المحلول

نظرًا لأنك موافق على استخدام الملحقات، ولكنك قلق بشأن استخدام OpenGL 2.0 بالكامل، ففكر في توفير تظليل أجزاء بسيط باستخدام المدرسة القديمة ARB_fragment_program امتداد.

وبدلاً من ذلك، يمكنك استخدام مكتبة مثل DevIL أو ImageMagick أو FreeImage لإجراء التحويل نيابةً عنك.

نصائح أخرى

وتمديد MESA أذكر لكم هو YCrCb؟ إذا لم بطاقة نفيديا الخاص بك يعرض ذلك، فهذا يعني أنهم لم فضح الدعم لهذا الشكل والملمس (وهو <م> الطريق القول بطاقة تدعم ذلك).

ولديك الخيار الوحيد هو أن تفعل تحويل اللون خارج كتلة تصفية الملمس. (قبل تقديم البيانات الملمس لGL، أو بعد الحصول على القيم من كتلة تصفية الملمس)

وGL يمكن أن تساعد في ذلك، كما يفعل خطية تحويل غير قابلة للتنفيذ في GL1.1، شريطة أن يكون لديك ملحقات الصحيحة (dot3 الملمس تمديد الموحد). وقال، انها بعيدة كل البعد عن الدواء الشافي.

لما يستحق، و تنفيذ بينك يبدو أنه يفعل تحويل مع وحدة المعالجة المركزية ، وذلك باستخدام MMX (أن يقرأ بين السطور على الرغم من). أنا ربما تفعل الشيء نفسه، وتحويل مع SSE قبل التحميل إلى برنامج OpenGL. A CPU <م> هو بالسرعة الكافية للقيام بذلك كل إطار.

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