سؤال

أقوم بتطوير تطبيق Android.

لدي تظليل الرأس التالي.

"attribute vec4 vertexPosition; 
attribute vec4 vertexNormal; 
attribute vec2 vertexTexCoord; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform mat4 modelViewProjectionMatrix; 

void main() 
{ 
   gl_Position = modelViewProjectionMatrix * vertexPosition; 
   normal = vertexNormal; 
   texCoord = vertexTexCoord; 
} 
";

وهذا هو تظليل الشظية:

precision mediump float; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform sampler2D texSampler2D;

void main()
{ 
   gl_FragColor = texture2D(texSampler2D, texCoord); 
} 
";

هل هناك أي مشكلة إذا غادرت vertextexcoord غير محدودة؟ أعتقد أنني يجب أن أستخدم قمة مختلفة وتظليل الشظايا إذا لم يكن النموذج الخاص بي يحتوي على نسيج ، أليس كذلك؟

شكرًا.

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

المحلول

نعم ، يجب أن يكون لديك تظليل آخر للنماذج بدون نسيج. خلاف ذلك ، أعتقد أنك سوف تواجه سلوكًا يعتمد على التنفيذ.

فيما يتعلق بذلك ، تقول وثائق OpenGL:

سيتم ربط السمات النشطة غير المرتبطة بشكل صريح بواسطة الرابط عندما يتم استدعاء GllinkProgram. يمكن الاستعلام عن المواقع المعينة عن طريق استدعاء GlgetAttriBlocation.

لذلك إذا تم تمكين سمات Vertex ، فسوف تحاول الحصول على Vertextexcoord من إحدى السمات. لست متأكدًا مما سيحدث إذا لم يتم تمكين عدد من السمات اللازمة للنموذج غير المحصن ويجب ألا تعتمد على شيء من هذا القبيل. استخدم تظليل آخر.

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