Hallo, ich hab eine Frage zum Texturing in OpenGL.
Ich habe ein Spiel programmmiret, in dessen ein Cubo eine Textur, die BodenPlatten - auf dem der Cubo steht - eine andere Textur bekommen soll. mit dem folgenden Code, habe ich alle Texturen eingebunden , aber ich sehe nur meine BodenPlatten-Textur auf dem boden. Die Cubo Textur fehlt.
Was habe ich da falsch gemacht****
Ich habe ein Spiel programmmiret, in dessen ein Cubo eine Textur, die BodenPlatten - auf dem der Cubo steht - eine andere Textur bekommen soll. mit dem folgenden Code, habe ich alle Texturen eingebunden , aber ich sehe nur meine BodenPlatten-Textur auf dem boden. Die Cubo Textur fehlt.
Was habe ich da falsch gemacht****
Code:
#ifdef GL_VERSION_1_1
static GLuint texName;
static GLuint texName2;
#endif
...
void init()
{
...
background_image = gltxReadRGB("floor.rgb");
cubo_image = gltxReadRGB("klotz.rgb");
...
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // diefinirt, wie OpnenGL texturen speichert
glGenTextures(1, &texName); // zum Laden auf die Grafikkarte, intern für OpenGL
// 1 steht für ein texturnamen &texName liefert die
// freien Namen der Open GL-Lister zurück
glBindTexture(GL_TEXTURE_2D, texName); // definition der Art der Textvariablen +
//setztn des namens
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, background_image->components,
background_image->width, background_image->height,
0, GL_RGB, GL_UNSIGNED_BYTE, background_image->data);
glPixelStorei(GL_UNPACK_ALIGNMENT, 2); // diefinirt, wie OpnenGL texturen speichert
glGenTextures(1, &texName2); // zum Laden auf die Grafikkarte, intern für OpenGL
glBindTexture(GL_TEXTURE_2D, texName2); // definition der Art der Textvariablen +
// setztn des namens
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, cubo_image->components, cubo_image->width,
cubo_image->height, 0, GL_RGB, GL_UNSIGNED_BYTE,
cubo_image->data);
}
...
void Display()
{
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, texName);
BodenPflaster(fx+bx, by, fz+bz); // das zu zeichnende Opjekt
glDisable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, texName2);
Cubo(cx, cy, cz); // das zu zeichnende Opjekt
glDisable(GL_TEXTURE_2D);
}
...
Zuletzt bearbeitet: