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

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

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

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

1 Ответ

3 голосов
/ 16 августа 2010

Стандартный способ обработки не мощных двух изображений в 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

...