glTexImage2D für Lightmaps

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
vrCAT
Beiträge: 4
Registriert: 04.05.2009, 09:39

glTexImage2D für Lightmaps

Beitrag von vrCAT »

Hallo zusammen,
ich habe ein Problem damit meine Lightmap richtig zu berechnen. Nach einem kleinen Test sehe ich das meine Lightmap auf der Texture um eine Einheit in U und V Richtung verschoben ist. Habe euch mal ein Bild gemacht und den Code habe ich auch dazu gelegt hoffe ihr könnt mir helfen.

Code: Alles auswählen

static unsigned char data[8 * 8 * 3];
for (long i=0;i<8*8*3;i++) data[i] = 255;
data[0] = 0;data[1] = 0;data[2] = 0;

glGenTextures(1, &textures[0]);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, 3, 8, 8, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

Code: Alles auswählen

glBindTexture(GL_TEXTURE_2D, textures[0]);
glBegin(GL_QUADS);    
glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
glEnd();
Hier noch das Bild was dabei raus kommt:
http://ul.to/ibq6zt

Jetzt verstehe ich nicht warum der Schwarze Luminanzwert nicht in der unteren rechten Ecke liegt sondern um eine Einheit verschobene ist.
Benutzeravatar
Richard Schubert
Moderator
Beiträge: 106
Registriert: 27.02.2009, 08:44
Wohnort: Hohen Neuendorf (b. Berlin)
Kontaktdaten:

Re: glTexImage2D für Lightmaps

Beitrag von Richard Schubert »

Der Pixel ist nicht um eine Einheit verschoben, sondern um 0.5 pixel. Bei OpenGL wie auch D3D10+ hat jeder Pixel seine Texturkoordinate im Zentrum seiner Pixelfläche in der Gesamttextur. Jede Texturkoordinate, welche von diesem Zentrum des Pixels abweicht, interpoliert dann je nach Samplereinstellung. In deinem Fall wäre das dann Bilinear. Durch das UV-Wrapping entsteht dann dieser Effekt.
Produktivität über Performance - XNA Creators Club
vrCAT
Beiträge: 4
Registriert: 04.05.2009, 09:39

Re: glTexImage2D für Lightmaps

Beitrag von vrCAT »

Super danke.
Antworten