سؤال

ولدي عدد غير محدد من سياق عرض ولكل سيتم عرض الملمس. عندما أدعو glGenTextures أحصل على نفس الأسماء التي تم إرجاعها في جميع السياقات العرض. هل سيعمل هذا؟ على الرغم من أنها لها نفس الاسم وأنها لا تزال تخزين وعرض مواد مختلفة؟ إن لم يكن ما يجب القيام به للالتفاف على هذا؟

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

المحلول

والحصول على نفس الاسم من glGenTexture ولها نفس الملمس عرض ليس الشيء نفسه.

وأسماء الملمس هي الأعداد الصحيحة فقط في تقدير السياق، وعادة ما تبدأ مع 1، وتزايد مع كل glGenTexture، ولكن ليس بالضرورة ذلك. غير مطلوب التنفيذ للعمل من هذا القبيل (على الرغم من أن معظم القيام به). ومع ذلك، يمكن من الناحية النظرية أيضا الحصول على أي أكثر أو أقل من الرقم "عشوائي"، مثل على سبيل المثال عدد صحيح أن الزيادات لأي نوع من وجوه (أي ليس فقط القوام، ولكن أيضا مخازن وتظليل)، أو حتى عنوان مؤشر 32 بت في مساحة عنوان السائق، أو بعض الشيء esotheric الآخرين. ليس هناك شرط أن يجب أن يكون اسم شيء محدد.

في برنامج OpenGL تراث، هل يمكن أن تجعل حتى تصل الأسماء الخاصة بك بدلا من استخدام glGenTexture، ولكن هذا لم يعد القانوني الآن. لست متأكدا ما اعتقدوا عند ذلك سمح، ولكن على أي حال ...:)

ونفس العدد (الاسم) في سياق مختلف عادة ما تكون نسيج مختلف، أو ربما لا الملمس على الإطلاق. لذا، إذا كنت ترى نفس الملمس في سياق مختلف بنفس الاسم الملمس، والسياقات فإنك إما تقاسمت، أو السائق هو عربات التي تجرها الدواب.

ملاحظة أنه إذا كنت تستخدم wglCreateContextAttribsARB، المعلمة الثانية هي مقبض سياق القائمة بالفعل (أو فارغة). إذا قمت بتوفير سياق التعامل هنا، سيكون لديك المشتركة السياقات حتى بدون يدعو صراحة glShareLists. ربما هذا هو ما حدث عن طريق الصدفة.

نصائح أخرى

والقوام ليست (افتراضيا) المشتركة عبر سياقات - لديك لتمكين هذا بشكل واضح، ولكن كيف يمكنك أن تفعل ذلك هو نظام أساسي محددة

وعلى Win32، انها wglShareLists، وعلى معظم المنصات الأخرى لدى تحديد ذلك عند إنشاء سياق (على سبيل المثال مع المعلمة share إلى aglCreateContext على OS-X).

لمعرفتي أنني لم تمكين أي تقاسم الملمس. ومع ذلك، يتم عرض نفس الملمس في جميع السياقات العرض.

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