作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个内部 GIS 应用程序。背景图像通过将图像分解成我猜被称为纹素和 mipmapped 的图像在 OpenGL 中加载,然后构建显示列表以将每个纹素纹理映射到矩形上。这听起来很标准,但问题是目前对于不能整齐划分为 2^n 像素 x 2^m 像素纹素的图像,其余部分被丢弃。即使我要捕获剩余部分并以某种方式处理它们,我也无法想象答案是不断测试 texel 分割,最终导致在整洁的边界上完全捕获图像?或者是吗?
在某些情况下,我加载的图像是 geotiff,我需要将每个像素都包含在我的背景中。我听说 glDrawPixels 很慢。我知道我可以自己测试这个,但我有一种感觉,这个领域的人正在使用 opengl 中的纹理,而不是跟踪像素转储。
我是 OpenGL 的新手,我相信该应用程序将自身限制为 1.1 次调用。
最佳答案
在 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 中加载图像以用于 GIS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3496258/
我是一名优秀的程序员,十分优秀!