سؤال

هل من الممكن ضبط لون قمة واحدة باستخدام برنامج تظليل GLSL Vertex ، بنفس الطريقة التي يغير بها GL_Position موضع قمة الرأس؟

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

المحلول

للحصول على إصدارات GLSL السابقة الإصدار 1.30 ، تريد الكتابة إلى gl_FrontColor أو gl_BackColor مدمجة ، والتي يمكن الوصول إليها في قمة التظليل. اقرأ عن اختلافات في مواصفات GLSL 1.10 (http://www.opengl.org/registry/doc/glslangspec.full.1.10.59.pdf) لمعرفة المزيد عنها ، أو مواصفات امتداد GL_ARB_VERTEX_SHADER.

gl_FrontColor و gl_BackColor هي ناقلات RGBA 4D التي تأخذ علامات النقطة العائمة الطبيعية.

لكن هذا سوف يضبط الكل رؤوس إلى اللون الأحمر ، وليس مجرد قمة واحدة. وذلك لأن نفس قمة تظليل يتم تشغيله لجميع القمم. إذا كنت ترغب في ضبط الألوان الفردية ، فاستخدم glColorPointer معا مع glDrawArrays, glDrawElements, glDrawRangeElements أو glMultiDrawElements. لون الرأس الذي تم تعيينه بواسطة glColorPointer يمكن قراءتها باسم gl_Color في قمة التظليل. gl_Color في قمة التظليل توجد سمة لكل فرد.

لقراءة اللون الذي كتبته في قمة التظليل ، في تظليل الشظية ، اقرأ المدمج المدمج gl_Color. يجب كتابة الشظايا النهائية إلى gl_FragColor.

مثال على تظليل الرأس:

void main()
{
    gl_FrontColor = gl_Color;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

مثال على تظليل الشظايا:

void main()
{
    gl_FragColor = gl_Color;
}

أيضًا ، لجعل تظليل Vertex قم بتعيين RADARES تمامًا مثل خط أنابيب OpenGL الثابت ، اتصل بالوظيفة ftransform ().

void main()
{
    ftransform();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top