PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL Würfel mit Texturen.


Gast
2005-08-09, 19:37:58
Guten Abend.

Ich übe gerade ein wenig OpenGL und bin gerade dabei ein bisschen was mit TExturen zu experimentieren.

Bisher habe ich folgenden Code benutzt den ich im Internet gefunden habe:


glScalef(lx,ly,lz);

static GLfloat size = 1;

static GLfloat n[6][3] =
{
{-1.0, 0.0, 0.0}, // links
{0.0, 1.0, 0.0}, // oben
{1.0, 0.0, 0.0}, // rechts
{0.0, -1.0, 0.0}, // unten
{0.0, 0.0, 1.0}, // vorne
{0.0, 0.0, -1.0} // hinten
};
static GLint faces[6][4] =
{
{0, 1, 2, 3},
{3, 2, 6, 7},
{7, 6, 5, 4},
{4, 5, 1, 0},
{5, 6, 2, 1},
{7, 4, 0, 3}
};
GLfloat v[8][3];

GLint i;

v[0][0] = v[1][0] = v[2][0] = v[3][0] = -size / 2;
v[4][0] = v[5][0] = v[6][0] = v[7][0] = size / 2;
v[0][1] = v[1][1] = v[4][1] = v[5][1] = -size / 2;
v[2][1] = v[3][1] = v[6][1] = v[7][1] = size / 2;
v[0][2] = v[3][2] = v[4][2] = v[7][2] = -size / 2;
v[1][2] = v[2][2] = v[5][2] = v[6][2] = size / 2;

for(i = 5; i >= 0; i--)
{
glBegin(GL_QUADS);
glNormal3fv(&n[i][0]);
glVertex3fv(&v[faces[i][0]][0]);
glVertex3fv(&v[faces[i][1]][0]);
glVertex3fv(&v[faces[i][2]][0]);
glVertex3fv(&v[faces[i][3]][0]);
glEnd();
}


Nun fehlen da die Textur-Koordinaten. Ich finde im Netz jetzt aber nur Würfel mit Texturkooridnaten, wo dann das glNormal fehlt und somit die Beleuchtung nicht stimmt.

Ich kapiere den Code oben noch nicht ganz und würde gerne wissen was ich daran ändern muss das ich an alle Seiten eine Textur anbringen kann.

Vielen Dank für Hilfe. :)

Coda
2005-08-09, 19:44:16
Dazu müsstest du ja erstmal eine Textur in den Grafikspeicher laden. Am besten schaust du dir mal Nehe (http://nehe.gamedev.net) an.

Gast
2005-08-09, 20:00:28
Das ist schon passiert.... hoffe ich.... wie gesagt. Mir fehlen nur noch die Koordinaten für die Texturen.

Coda
2005-08-09, 20:03:55
Du must vor jedem glVertex3fv noch glTexcoord2f benützen um die entsprechenden Textur-Koordinaten für diese Ecke zu spezifizieren.

glEnable(GL_TEXTURE_2D); und glBindTexture natürlich auch nicht vergessen ;)