Question

Je travaille actuellement sur une application SIG dans la maison. Les images de fond sont chargés dans OpenGL en brisant l'image vers le bas dans ce que je suppose qu'on appelle texels et mipmappée, après quoi une liste d'affichage est construit à la texture carte chaque texel sur des rectangles. Cela semble assez standard, mais le problème est que actuellement pour les images qui ne divisent pas exactement en 2 ^ n pixels x 2 ^ texels de pixels m, les restes sont jetés. Même si je devais capturer les restes et les manipuler d'une certaine façon, je ne peux pas imaginer que la réponse est de tester sans cesse pour les subdivisions de texels qui aboutissent finalement à la capture totale de l'image sur les limites nettes? Ou est-il?

Dans certains cas, les images que je suis chargement sont GeoTIFFs, et j'ai besoin chaque pixel à inclure dans mon arrière-plan. Je l'ai entendu dire que glDrawPixels est lent. Je sais que je pourrais tester pour moi-même, mais j'ai le sentiment que les gens dans cet espace utilisent des textures dans opengl, pas garder la trace des décharges de pixels.

Je suis nouveau à OpenGL, et je crois que l'application est de se limiter à 1.1 appels.

Était-ce utile?

La solution

La méthode standard de manipulation non puissance de deux images en OpenGL 1.1 est de stocker l'image dans une texture à la dimension de la plus grande puissance la plus proche de deux, puis en modifiant les coordonnées de texture, certains pseudo-code:

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();

Avec une version supérieure d'OpenGL ou si vous utilisez l'extension, vous pouvez utiliser des textures rectangulaires:

http://www.opengl.org/registry/specs/ARB /texture_rectangle.txt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top