سؤال

أنا على وشك تنفيذ كل ما عندي من "القديم" 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

ربما هذا يساعد شخص ما!

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