سؤال

وفشل بسيط كود جزء تظليل التالية، وترك لي مع رسالة غير المفيدة في السجل: ERROR: 0:1: 'gl_Color' : syntax error syntax error

void main()
{
  vec4 myOutputColor(gl_Color);
  gl_FragColor = myOutputColor;
}

وحين يعمل أحد التالي:

void main()
{
  glFragColor = gl_Color;
}

وهذا يحير عقلي، كما هو الحال في Lighthouse3D في gl_Color هو وقال ليكون vec4. لماذا لا يمكنني إسناد ذلك إلى vec4 آخر؟

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

المحلول

وحاول التنازل العادي. مثل هذا:

void main()
{
  vec4 myOutputColor = gl_Color;
  gl_FragColor = myOutputColor;
}

وتحرير:

والجواب الثاني تماما كما هو الصحيح حقا، ولكن ليس هناك أي حاجة لاستخدام منشئ vec4 ()، لأن كلاهما من نفس النوع. إذا كنت قد يتيح يقول (ص، ز، ب، ث) الصفوف (tuple) يمكن أن تكتب:

vec4 myOutputColor = vec4(r, g, b, w);

أو

// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);

وغيرها

نصائح أخرى

وAparrently يجب عليك استخدام جملة مختلف قليلا

و(انظر جي إل إس إل مواصفات )

vec4 myOutputColor = vec4(gl_Color);
gl_FragColor = myOutputColor;

وهذا على عكس عينتك يجمع غرامة على بلدي ماشين (ويندوز، وبطاقة نفيديا)

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