سؤال

برنامج OpenGL.دعونا نقول كنت قد رسمت صورة واحدة ثم الثانية باستخدام XOR.الآن لدي الأسود العازلة مع غير الأسود بكسل في مكان ما قرأت أن أتمكن من استخدام تظليل الاعتماد الأسود [ rgb(0,0,0) ] بكسل على GPU?

لقد قرأت أيضا أن عليها أن تفعل شيئا مع OcclusionQuery.http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt

هل هو ممكن وكيف ؟ [أي لغة برمجة]

إذا كان لديك فكرة عن كيفية إيجاد التشابه عبر برنامج OpenGL/GPU - التي من شأنها أن تكون كبيرة جدا.

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

المحلول

أنا لست متأكدا من كيفية عمل XOR بت (على الأقل يجب أن تكون بطيئة ، أنا لا أعتقد أن أي من وحدات معالجة الرسومات الحالية الإسراع في ذلك), ولكن هنا هو بلدي فكرة:

  1. لديك اثنين من المدخلات الصور
  2. تشغيل استعلام الانسداد.
  3. رسم الصورتين على الشاشة (أيكامل الشاشة رباعية مع اثنين من القوام إعداد) ، مع تظليل جزء يحسب abs(texel1-texel2) ، ويقتل بكسل (تجاهل في GLSL) إذا بكسل نفس (الفرق هو صفر أو تحت عتبة).أسهل ربما فقط باستخدام GLSL تظليل جزء و هناك يمكنك قراءة فقط اثنين القوام ، حساب (abs) من الفرق وتجاهل بكسل.أساسية جدا GLSL المعرفة ما يكفي هنا.
  4. الحصول على عدد وحدات البكسل التي مرت الاستعلام.بالنسبة بكسل التي هي نفس الاستعلام لن تمر (بكسل سيتم التخلص منها عن طريق تظليل) ، بكسل مختلفة الاستعلام سوف تمر.

في البداية أنا على الرغم من اتباع نهج أكثر تعقيدا تنطوي على عمق العازلة ، ولكن بعد ذلك أدركت أن مجرد قتل بكسل ينبغي أن يكون كافيا.هنا هو بلدي الأصلي على الرغم من (ولكن واحد أعلاه هو أبسط وأكثر كفاءة):

  1. لديك اثنين من المدخلات الصور
  2. شاشة واضحة و عمق العازلة
  3. رسم الصورتين على الشاشة (أيكامل الشاشة رباعية مع اثنين من القوام إعداد) ، مع تظليل جزء يحسب abs(texel1-texel2) ، ويقتل بكسل (تجاهل في GLSL) إذا بكسل مختلفة.رسم رباعية بحيث انها عازلة بعمق قيمة شيء قريب بالقرب من الطائرة.
  4. بعد هذه الخطوة, العمق العازلة سوف تحتوي على عمق صغير القيم بكسل التي هي نفس كبيرة (الآن الطائرة) عمق القيم بكسل مختلفة.
  5. تشغيل استعلام الانسداد ، ورسم آخر كامل الشاشة رباعية مع عمق أقرب من الآن الطائرة ، ولكن أكبر من السابق رباعية.
  6. الحصول على عدد وحدات البكسل التي مرت الاستعلام.بالنسبة بكسل التي هي نفس الاستعلام لن تمر (عمق العازلة هي بالفعل أقرب) ، بكسل مختلفة الاستعلام سوف تمر.كنت تستخدم SAMPLES_PASSED_ARB للحصول على هذا.هناك انسداد الاستعلام سبيل المثال في CodeSampler.com للبدء الخاص بك.

بالطبع كل هذا يتطلب GPU مع انسداد الاستعلام الدعم.معظم وحدات معالجة الرسومات منذ عام 2002 أو حتى لا يؤيد ذلك ، مع استثناء بعض منها (على وجه الخصوص ، إنتل 915 (الملقب GMA 900) Intel 945 (الملقب GMA 950)).

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