سؤال

أنا أعمل حاليًا على تطبيق GIS في المنزل. يتم تحميل صور الخلفية في OpenGL عن طريق تقسيم الصورة إلى ما أعتقد أنه يطلق عليه Texels و MIPMPed ، وبعد ذلك يتم تصميم قائمة العرض على خريطة نسيج كل Texel على مستطيلات. هذا يبدو قياسيًا إلى حد ما ، ولكن المشكلة هي أنه حاليًا للصور التي لا تقسم بدقة إلى 2^n Pixel x 2^m Pixel Texels ، يتم إلقاء الباقي. حتى لو كنت سألتقط الباقي والتعامل معهم بطريقة ما ، لا أستطيع أن أتخيل أن الإجابة هي اختبار التقسيمات الفرعية Texel باستمرار والتي تؤدي في النهاية إلى التقاط الصورة على الحدود الأنيقة؟ أو هو؟

في بعض الحالات ، تكون الصور التي أقوم بتحميلها هي geotiffs ، وأحتاج إلى إدراج كل بكسل واحد في خلفيتي. لقد سمعت أن gldrawpixels بطيئة. أعلم أنه يمكنني اختبار هذا بنفسي ، لكن لدي شعور بأن الناس في هذا المجال يستخدمون القوام في OpenGL ، وليس تتبع مقالب البكسل.

أنا جديد على OpenGL ، وأعتقد أن التطبيق يحد من 1.1 مكالمة.

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

المحلول

تتمثل الطريقة القياسية في التعامل مع غير طاقة صورتين في OpenGL 1.1 لتخزين الصورة في نسيج مع بُعد لأقرب قوة أكبر من اثنين ثم تعديل إحداثيات الملمس ، بعض الرمز الكاذب:

float sMax = image.width / texture.width;
float tMax = image.height / texture.height;

glBegin(GL_QUADS);
glVertex2f(0, 0);
glTexCoord2f(sMax, 0);
glVertex2f(1, 0);
glTexCoord2f(sMax, tMax);
glVertex2f(1, 1);
glTexCoord2f(0, 0);
glVertex2f(0, tMax);
glTexCoord2f(0, 1);
glEnd();

مع إصدار أعلى من OpenGL أو إذا كنت تستخدم الامتداد ، يمكنك استخدام القوام المستطيلة:

http://www.opengl.org/registry/specs/arb/texture_rectangle.txt

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