GLSL مع تظليل الشظايا يجعل فقط نقاط GL_POINTS أسود

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

  •  24-09-2019
  •  | 
  •  

سؤال

أحاول إضافة بعض التظليل إلى برنامج OpenGL القديم الذي يرسم الكثير من نقاط GL_POINTS وبعض GL_LINES.

لقد قمت بإنشاء هذين التظليل:

تظليل Vertex:

void main()
{ 
    vec4 v = vec4(gl_Vertex);
    v.z = v.z + sin(v.x*v.x + v.y*v.y)/10.0;
    gl_Position = gl_ModelViewProjectionMatrix * v;
}

تظليل الشظايا:

#version 120 

void main()
{
    vec4 myOutputColor = gl_Color;
    gl_FragColor = myOutputColor;
    //gl_FragColor.r = 0.5;
}

هذان التظليلان يتجمعان وربطهما بدون مشاكل. ويعمل تظليل Vertex بشكل رائع ، أستطيع أن أرى GL_POINTS مُرشد باستخدام تلك الخطيئة في تظليل Vertex. لكن المشكلة هي أنني لا أستطيع إلا أن أرى نقاط GL_POINTS الخاصة بي و GL_LINES إذا لم يكن لون الخلفية أسودًا لأن جميع النقاط والخطوط أصبحت سوداء. يبدو أنه يتم تجاهل جميع الألوان المعروضة مع glcolor3f في رمز التقديم. إذا قمت بإلغاء تحديد الخط الذي تم تعليقه في تظليل الشظايا ، يمكنني جعل جميع الخطوط والنقاط حمراء ، لكن لا ينبغي أن تتوافق GL_Color مع اللون الذي تم تعيينه باستخدام Glcolor3F لكل نقطة؟

هل هناك أي شيء آخر في رمز OpenGL الخاص بي يمكن أن يسبب هذا السلوك؟

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

المحلول

تحتاج إلى تمرير اللون من خلال في قمة التظليل.

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