كيف يمكنني تطبيق 2 خرائط أو أكثر على كائن OpenGL Glusphere؟

StackOverflow https://stackoverflow.com/questions/348266

  •  20-08-2019
  •  | 
  •  

سؤال

أنا أكتب تطبيقًا أساسيًا لمشاهد الكوكب OpenGL Perl ، للمتعة فقط. لديّ الأساسيات التي تعمل ، مع الكوكب المجيد ، تم تنفيذها من خلال gluSphere(), ، تدور مع خريطة نسيج الأرض الكلاسيكية المطبقة.

الآن ، ماذا لو كنت أرغب في تطبيق خريطة نسيج ثانية من خلال OpenGL (على سبيل المثال ، "غيوم الأرض")؟

بالطبع ، يمكنني مزج خريطة الملمس بنفسي في Photoshop أو بعض التطبيقات الرسومية الأخرى ، ولكن هل هناك طريقة من خلال OpenGL API؟

حاولت تحميل القوام وتوليد MIPMaps لكن الكوكب يظهر مع تطبيق الملمس الأول فقط ، وليس الثاني.

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

المحلول

كما قال جيم باك ، يمكنك الحصول على التأثير المطلوب مع multitexturing.

ومع ذلك ، لا أعتقد أن Glu Quadrics تدعم توليد الإحداثيات multitexture (IE باستخدام glmultitexcoord*() مقابل gltexcoord*(). لذا ، أعتقد أنك ستحتاج إلى رمز المجال الخاص بك للذهاب إلى مسار multitexture.

بدلاً من ذلك ، قد تكون قادرًا على الابتعاد عن رسم كرة أكبر قليلاً حول علامةك الحالية التي تحتوي على خريطة الملمس الثانية عليها (مع الاستخدام المناسب لقناة ألفا ومزجها). من المحتمل أن يسبب هذا القتال z ، لذلك قد يكون الأمر أكثر مما يستحق.

إن كتابة رمز المجال الخاص بك ليس صعبًا-بل إنه أسهل مسار للحصول على نتائج مرضية.

نصائح أخرى

كيف تريد الجمع بين قوامك؟ يجب أن تكون قادرًا على الحصول على التأثير المطلوب إذا كنت ببساطة تستخدم النصوص المتعددة:

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

تأكد من إعداد مكالمات gltexenvf الخاصة بك اعتمادًا على كيفية اندماج القوام. ثم استدعاء glusphere ().

وأنا أتفق مع درو هول. ربما أبسط لجعل مجال ثانٍ. وليس جميع بطاقات OpenGL تدعم Multi-Texturing.

يمكنك مواجهة القتال z مع glpolygonoffset.

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