Gå til innhold

Snodig texture-problem i OpenGL


Anbefalte innlegg

Har et snodig problem med glTexSubImage2D. Her er koden:

 

  GLfloat *data = new GLfloat[63 * 63];
  GLfloat *p = data;
  for (int i = 0; i < 63; i++)
     for (int j = 0; j < 63; j++)
        *(p++) = (GLfloat)j / 62.f; 
  ::glBindTexture (GL_TEXTURE_2D, texmap);
  ::glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 63, 63, GL_LUMINANCE, GL_FLOAT, data);
  delete data;

 

"texmap" er her en 1-kanals 64x64 texture, og målet er å overskrive et felt på 63x63 innad i denne, altså ikke å overskrive hele. Ikke heng dere opp i den nøstede for-løkken og dens effektivitet. Den er bare lagt inn for å gi et resultat som er lett å forutsi; vanligvis vil data komme fra et helt annet sted.

Problemet som oppstår er uansett det samme: Det overskrevne feltet på texturen blir speilet rundt diagonalen (0,0)-(1,1). Dette leder meg til å tro at jeg har misforstått noe som angår glTexSubImage2D. Noen som har innspill på dette?

 

Her er det resultatet jeg forventer:

post-129048-1196948680_thumb.gif

 

Dette er det resultatet jeg får ut:

post-129048-1196948690_thumb.gif

Lenke til kommentar
Videoannonse
Annonse
Ser egentlig ut som om teksturkoordinatene dine er feil bare.

Ja, ser sånn ut for meg også. Hvis du poster koden hvor du tegner firkanten kan vi sikkert være mer behjelpelig.

 

Men veldig enkelt ville jeg si at dette burde gjøre nytten

glTexCoord1f(0.0);
glVertex2f(0.0, 1.0);
glVertex2f(0.0, 0.0);
glTexCoord1f(1.0);
glVertex2f(1.0, 0.0);
glVertex2f(1.0, 1.0);

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...