2

私は現在、社内の GIS アプリに取り組んでいます。背景画像は、画像をテクセルと呼ばれるものに分解して OpenGL にロードされ、ミップマップされます。その後、各テクセルを長方形にテクスチャ マップするための表示リストが構築されます。これは非常に標準的なように聞こえますが、問題は現在、2^n ピクセル x 2^m ピクセルのテクセルにきれいに分割されていない画像の場合、残りが破棄されることです。残りをキャプチャして何らかの方法で処理したとしても、テクセルのサブディビジョンを継続的にテストして、最終的にきれいな境界で画像を完全にキャプチャすることが答えだとは想像できませんか? またはそれは?

場合によっては、読み込んでいる画像が geotiff であり、すべてのピクセルを背景に含める必要があります。glDrawPixels が遅いと聞いたことがあります。これを自分でテストできることはわかっていますが、この分野の人々は、ピクセル ダンプを追跡せずに、opengl でテクスチャを使用しているように感じます。

私は OpenGL が初めてで、アプリ自体が 1.1 呼び出しに制限されていると思います。

4

1 に答える 1

3

OpenGL 1.1 で 2 のべき乗でない画像を処理する標準的な方法は、最も近い 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

于 2010-08-16T19:19:04.960 に答える