Lors du dessin de textures OpenGL ES, elles semblent "s'aligner" sur des emplacements de pixels arrondis, comme si l'emplacement de dessin était arrondi. c'est à dire. Dessiner à (x: 1.1, y: 5.4) dessine réellement à (x: 1, y: 5). Cela fait apparaître les textures "sauter" lors du défilement, plutôt que de se déplacer sans à-coup.Impossible de dessiner des textures OpenGL ES sur des emplacements non ronds
Oui, j'utilise les types de virgule flottante pour mes sommets, etc.
lignes de dessin, etc. fonctionne très bien avec des emplacements non rondes.
Il n'y a que deux facteurs dans l'emplacement de la texture:
traduction de la fenêtre:
glTranslatef(viewWidth/2.0f, viewHeight/2.0f, 0.0f);
L'emplacement du tirage:
glVertexPointer(...); // see below
J'utilise le code suivant pour dessiner la texture:
glTranslatef(scrollX, scrollY, 0.0f);
...
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
// Overlay map.
glTexCoordPointer(2, GL_FLOAT, 0, textureSTs);
glBindTexture(GL_TEXTURE_2D, texture.glTtextureKeyD);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
GLfloat vertices[] = {
x1, y2,
x1, y1,
x2, y1,
x2, y2,
};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
Ai-je raté quelque chose?
Quels sont les types pour scrollX et scrollY? peut-être les traiterez-vous comme des ints même s'ils sont flottants? – fazo