hallo,
ich versuche 2 Vierecke mit einer Textur (einem gif) zu versehen. Doch leider werden diese nicht mit der Textur gefüllt, sondern nur mit der Standardfarbe.
Mein Code dafür lautet:
// Texturen werden geladen
TextureLoader loader = new TextureLoader("stripe.gif", this);
// Retrieve the ImageComponent from the TextureLoader
ImageComponent2D image = loader.getImage();
gl.glEnable(GL.GL_TEXTURE_2D);
Texture2D texture = new Texture2D(Texture.BASE_LEVEL,
Texture.RGB,
image.getWidth(),
image.getHeight());
texture.setImage(0, image);
Appearance app1 = new Appearance();
app1.setTexture(texture);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);
// replace the quad colours with the texture
gl.glPolygonMode(GL.GL_FRONT_AND_BACK,GL.GL_FILL);
gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE,
GL.GL_REPLACE);
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(-2.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 3.0f); gl.glVertex3f(-2.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 3.0f); gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 0.0f); gl.glVertex3f(0.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(1.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 3.0f); gl.glVertex3f(1.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 3.0f); gl.glVertex3f(2.41421f, 1.0f, -1.41421f);
gl.glTexCoord2f(3.0f, 0.0f); gl.glVertex3f(2.41421f, -1.0f, -1.41421f);
gl.glEnd();
Ich verstehe einfach nicht, warum diese nicht gefüllt werden - eigentlich habe ich alles beachtet - so wie es in unzähligen Foren und Hilfen beschrieben ist. Wer kann mir sagen, wo mein Fehler liegt? Das Bild (gif ) hat auch die entsprechende Größe (8x16, a la 2er-Potenz)...
ich versuche 2 Vierecke mit einer Textur (einem gif) zu versehen. Doch leider werden diese nicht mit der Textur gefüllt, sondern nur mit der Standardfarbe.
Mein Code dafür lautet:
// Texturen werden geladen
TextureLoader loader = new TextureLoader("stripe.gif", this);
// Retrieve the ImageComponent from the TextureLoader
ImageComponent2D image = loader.getImage();
gl.glEnable(GL.GL_TEXTURE_2D);
Texture2D texture = new Texture2D(Texture.BASE_LEVEL,
Texture.RGB,
image.getWidth(),
image.getHeight());
texture.setImage(0, image);
Appearance app1 = new Appearance();
app1.setTexture(texture);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);
// replace the quad colours with the texture
gl.glPolygonMode(GL.GL_FRONT_AND_BACK,GL.GL_FILL);
gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE,
GL.GL_REPLACE);
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(-2.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 3.0f); gl.glVertex3f(-2.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 3.0f); gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 0.0f); gl.glVertex3f(0.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(1.0f, -1.0f, 0.0f);
gl.glTexCoord2f(0.0f, 3.0f); gl.glVertex3f(1.0f, 1.0f, 0.0f);
gl.glTexCoord2f(3.0f, 3.0f); gl.glVertex3f(2.41421f, 1.0f, -1.41421f);
gl.glTexCoord2f(3.0f, 0.0f); gl.glVertex3f(2.41421f, -1.0f, -1.41421f);
gl.glEnd();
Ich verstehe einfach nicht, warum diese nicht gefüllt werden - eigentlich habe ich alles beachtet - so wie es in unzähligen Foren und Hilfen beschrieben ist. Wer kann mir sagen, wo mein Fehler liegt? Das Bild (gif ) hat auch die entsprechende Größe (8x16, a la 2er-Potenz)...