在OpenGL中加载图像以用于GIS应用程序

问题描述 投票:2回答:1

我目前正在研究内部GIS应用程序。通过将图像分解为我猜称的纹素和mipmap,将背景图像加载到OpenGL中,之后构建显示列表以将每个纹素映射到矩形。这听起来非常标准,但问题是目前对于没有整齐划分为2 ^ n像素x 2 ^ m像素纹素的图像,剩余部分被丢弃。即使我要捕捉剩余物并以某种方式处理它们,我也无法想象答案是不断测试纹素细分,最终导致在整齐边界上完全捕获图像?或者是吗?

在某些情况下,我正在加载的图像是geotiffs,我需要将每个像素都包含在我的背景中。我听说glDrawPixels很慢。我知道我可以自己测试一下,但我觉得这个空间里的人正在使用opengl中的纹理,而不是跟踪像素转储。

我是OpenGL的新手,我相信该应用程序仅限于1.1次调用。

image opengl gis texture-mapping
1个回答
3
投票

在OpenGL 1.1中处理两个图像的非功率的标准方法是将图像存储在具有最接近的较大幂2的尺寸的纹理中,然后修改纹理坐标,一些伪代码:

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

© www.soinside.com 2019 - 2024. All rights reserved.