قم بتغيير لون قمة الرأس في تظليل قمة الرأس
-
23-09-2019 - |
سؤال
هل من الممكن ضبط لون قمة واحدة باستخدام برنامج تظليل 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();
}