كيفية تقديم قوام متعددة مع GLSL
سؤال
أنا على وشك تنفيذ كل ما عندي من "القديم" OpenGL إلى GLSL.
الآن لدي شبكة ذات قوام مختلفة ، لذلك في "Old" GL ، استخدمت للتو BindTexture لتغيير الملمس. أظن ، ما زلت بحاجة إلى القيام بذلك ، لكن هناك شيء مفقود ، حيث يبدو أن كل شيء قد تم تقديمه مع الملمس الأول فقط.
uniform sampler2D tex;
void main() {
gl_FragColor = tex2D(tex, gl_TexCoord[0].st);
}
"Tex" هو اسم الملمس الذي وضعته على GLSL مثل هذا:
int loc = glGetUniformLocationARB(id, "tex");
glUniform1iARB(loc, 0);
ملاحظة: أنا لا أتحدث عن multitexturing! :-)
المحلول
لديك وحدة نسيج ملزمة 0 إلى sampler2D
, ، ولكن تحتاج إلى ربط الملمس بوحدة الملمس أيضًا. لذلك سيكون ببساطة أ glBindTexture
يتصل.
نصائح أخرى
كنت مرتبكًا مع طريقة إخبار GLSL بالوحدة الملمس التي يجب استخدامها من أجل أخذ العينات أيضًا. لقد بحثت عن ساعات عن مشكلتي ولم أستطع حلها لأنني أعتقد أن هذا الموضوع لم يتم شرحه جيدًا في جميع الأدبيات الموجودة هناك.
فيما يلي شرح قيم: (انظر الجزء "استخدام القوام مع GLSL")http://nehe.gamedev.net/data/articles/article.asp؟article=21
ربما هذا يساعد شخص ما!