OpenGL: ماذا يحدث إذا قمت بتحديد ضوء على حد سواء على حد سواء منتشرة؟

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

  •  29-09-2019
  •  | 
  •  

سؤال

على مثال إضاءة الكرة على Redbook ، قرأت هذا:

GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);

ثم تقول:

في هذا المثال ، تكون المكالمات الثلاثة الأولى لـ GllightFV () غير ضرورية ، حيث يتم استخدامها لتحديد القيم الافتراضية للمعلمة GL_AMBIENT و GL_DIFFUSE و GL_SPECULAR

كما أفهم حتى الآن ، فإن كل مصدر للضوء لديه قيم افتراضية لمعلماتها المحيطة والمنتشرة والمعلمات ، وهذه المصفوفات الثلاثة تحدد تلك القيم الافتراضية ، هل هذا صحيح؟ هل كل مصدر للضوء هو افتراضيًا منتشرًا ومخففًا ومحيطًا؟

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

المحلول

في نموذج إضاءة OpenGL ، يتم حساب 4 معادلات إضاءة منفصلة لكائن: المحيط ، المنتشر ، المحآج ، والانبعاثات. لا تأخذ Ambient القواعد الطبيعية في الاعتبار ، ومنتشرة ومخاعدة ، ولا يسلط الانبعاثات في الاعتبار على الإطلاق.

يتم تلخيص كل قيم الإضاءة المختلفة هذه لإعطاء اللون النهائي للكائن.

نصائح أخرى

نعم ، هذه هي القيم الافتراضية لـ Light0: http://www.opengl.org/sdk/docs/man/xhtml/gllight.xml

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