لماذا لا يمكنني معرفة حالة أضواء OpenGL في GLSL؟

StackOverflow https://stackoverflow.com/questions/946622

  •  09-09-2019
  •  | 
  •  

سؤال

هل هناك طريقة لمعرفة ما إذا تم تمكين الضوء في GLSL لا ينطوي على سمات المرور أو إنشاء طن من التظليل المختلف؟

ماذا عن استخدام NVIDIA C للرسومات (CG)؟ هل يمكنني القيام بذلك مع CG؟

أنا الآن مقتنع بأنك لا تستطيع أن تفعل ذلك. ولكن الآن أسأل: لماذا لا؟

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

المحلول

وفقا لفهم "تمكين أو عدم تمكين" جزء من أخطاء GLSL الشائعة هذا هو السبب الفلسفي: يتم كتابة التشرير لتجاوز خط أنابيب ثابت، وبالتالي لا ينبغي أن تعتمد على دول خط أنابيب ثابتة. يجب عليك استخدام شاد مختلف لكل قدرة تحتاج إليها.

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

if (gl_LightSource[0].enabled)
{ ... }

في المقام الأول.

نصائح أخرى

Unforgiven3 هو الصحيح - لا توفر GLSL إمكانية الوصول إلى الدول التي تم توضيح الأنابيب الثابتة. عليك أن تمر بها كزي موحد.

إذا كان GLSL أي شيء مثل HLSL (ما يعادله DirectX)، الذي أظن أنه، أعتقد أنك عالق مع سمات المرور.

:-(

يمكنك ضبط لون الضوء على (0،0،0،0) وإما فرع على ذلك، أو فقط السماح له بحلقة على الأنوار الآن غير المساهمة.

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