Загрузка изображений в OpenGL для использования в ГИС-приложении


В настоящее время я работаю над внутренним приложением для ГИС. Фоновые изображения загружаются в OpenGL, разбивая изображение на то, что я предполагаю, называется текселями и mipmapped, после чего список отображения строится, чтобы текстурировать отображение каждого текселя на прямоугольники. Это звучит довольно стандартно, но проблема в том, что в настоящее время для изображений, которые не делятся аккуратно на 2^n пиксельных X 2^m пиксельных текселов, остатки выбрасываются. Даже если бы я захватил останки и каким-то образом с ними справился, я не могу этого сделать. представьте себе, что ответ заключается в постоянном тестировании на текселевые подразделения, которые в конечном итоге приводят к полному захвату изображения на четких границах? Или так оно и есть?

В некоторых случаях изображения, которые я загружаю, являются геотифами, и мне нужно, чтобы каждый пиксель был включен в мой фон. Я слышал, что glDrawPixels работает медленно. Я знаю, что мог бы проверить это на себе, но у меня такое чувство, что люди в этом пространстве используют текстуры в opengl, а не отслеживают пиксельные дампы.

Я новичок в этом деле. OpenGL, и я считаю, что приложение ограничивает себя 1.1 вызовами.

1 2

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