Hullo,
Ik ben druk bezig met OpenGL (via JOGL), en heb nu een probleempje met textures waar ik ook na hard googlen niet uitkom.

Ik heb 2 objecten, een kubus en een piramide, waarvan de cubus 2 textures heeft. Het probleem is dat de rest van de vertices om een of andere reden met de kleur van de laatst getekende texel getekend worden. Afgezien van de gele en blauwe texture zouden zowel de cube als de piramide gewoon wit moeten zijn.
De kubus heeft 1 zijde met een blauwe texture (welke in de laatste hoek bruin is), dan 4 zijden zonder texture die ook spontaan bruin worden (zouden wit moeten zijn), en dan 1 zijde met een gele texture. Deze gele kleur zie je daarna terug op de piramide.
Dit is het stuk code dat de 'face' (eigen objecttype) tekent:
Ik ben druk bezig met OpenGL (via JOGL), en heb nu een probleempje met textures waar ik ook na hard googlen niet uitkom.

Ik heb 2 objecten, een kubus en een piramide, waarvan de cubus 2 textures heeft. Het probleem is dat de rest van de vertices om een of andere reden met de kleur van de laatst getekende texel getekend worden. Afgezien van de gele en blauwe texture zouden zowel de cube als de piramide gewoon wit moeten zijn.
De kubus heeft 1 zijde met een blauwe texture (welke in de laatste hoek bruin is), dan 4 zijden zonder texture die ook spontaan bruin worden (zouden wit moeten zijn), en dan 1 zijde met een gele texture. Deze gele kleur zie je daarna terug op de piramide.
Dit is het stuk code dat de 'face' (eigen objecttype) tekent:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| public void draw(GL gl) { int i; if(texture != null) gl.glBindTexture(GL.GL_TEXTURE_2D, texture.getTextureObject()); switch(type) { case TYPE_QUAD : gl.glBegin(GL.GL_QUADS); break; case TYPE_TRIANGLE_FAN : gl.glBegin(GL.GL_TRIANGLE_FAN); break; default: throw new RuntimeException("Unknown face type for mesh " + mesh.id); } for(i = 0;i < indices.length;i++) { if(texture != null) gl.glTexCoord2f(TEXTURE_COORD[i * 2], TEXTURE_COORD[i * 2 + 1]); gl.glColor3fv(mesh.colors, indices[i] * 3); gl.glVertex3fv(mesh.vertices, indices[i] * 3); } gl.glEnd(); } |
https://niels.nu