OpenGL ES verschwindene Vertices

Titanpharao

Bekanntes Mitglied
Hallo an alle,

ich stecke mal wieder an einem Problem fest.

Und zwar wollte ich einen Kreis zeichnen. Das funktioniert auch alles soweit sogut.

Jetzt ist nur mein Problem, das mein einfaches Vertices Object mit Color_Array verschwindet, sobald ich ein Object mit einer Texture_Coord_Array danach zeichne.

Ich zeig euch erstmal den Code, er ist schon sehr komplex und es gibt haufenweise extra Klassen, also probiere ich mal zu erklären was hinter jeder einzelnen Methode sich verbirgt.

Code:
	public void present(float deltaTime){
		GL10 gl=glGraphics.getGL();
		guiCam.setViewportAndMatrices();//Ignore setzt nur den Viewport
		gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		gl.glEnable(GL10.GL_TEXTURE_2D);
		drawStaticGround();//Methode um den Hintergrund zu zeichnen ohne Alpha
		gl.glEnable(GL10.GL_BLEND);
		gl.glBlendFunc(GL10.GL_SRC_ALPHA,GL10.GL_ONE_MINUS_SRC_ALPHA);
		drawStaticGroundRaster();//Methode um ein Raster über die komplette Welt zu zeichnen
		drawIcons();//Zeichnet nach der selben Methode wie drawStaticGroundRaster Icons zum bedienen, aber der Circle verschwindet nach dieser.
		circleDraw.draw();//hier wirds interessant ist die Methode vor den Icons sieht man ihn, ist er danach ist er verschwunden ... dabei ist Icons und drawStaticGroundRaster vom Aufbau das selbe.

		gl.glDisable(GL10.GL_BLEND);
		gl.glDisable(GL10.GL_TEXTURE_2D);
	}

In allen Methoden zeichne ich rechteckige Vertices mit Texturen in etwa so:

Code:
	public void bind(){
		gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
		vertices.position(0);
		gl.glVertexPointer(2,GL10.GL_FLOAT,vertexSize,vertices);
		if(hasColor){
			gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
			vertices.position(2);
			gl.glColorPointer(4,GL10.GL_FLOAT,vertexSize,vertices);
		}
		if(hasTexCoords){
			gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
			vertices.position(hasColor?6:2);
			gl.glTexCoordPointer(2,GL10.GL_FLOAT,vertexSize,vertices);
		}
	}

	public void draw(int primitiveType,int offset,int numIndices){
		if(indices!=null){
			indices.position(offset);
			gl.glDrawElements(primitiveType,numIndices,GL10.GL_UNSIGNED_SHORT,indices);
		}else{
			gl.glDrawArrays(primitiveType,offset,numIndices);
		}
	}

	public void unbind(){
		if(hasTexCoords)
			gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
		if(hasColor)
			gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
	}

Erst wird bind(), dann draw() dann unbind() aufgerufen.

Bzw gl.glBindTexture(GL10.GL_TEXTURE_2D,textureId); wird vor allem aufgerufen.!!!

Und genau das ist der springende Punkt, wenn ich die Methode weglasse, wird mein Kreis noch gezeichnet, nachdem die Icons gezeichnet sind.

Aber die Icons werden genauso gezeichnet, wie das Raster. Also ich versteh nicht so recht, was OpenGL da anstellt und warum mein Circle plötzlich verschwindet.

Das Problem ist etwas schwer zu erklären und ich will auch nicht 1000 Zeilen Code hier reinposten.

Achso, ich habe noch etwas bemerkt. Wenn ich das Blend weglasse, funktionierts immer, nur das der Kreis dann schwarz wird und nicht mehr Halb-Transparent Blau... also kann es auch ein zusammenspiel aus gl.glColorPointer(), Blend und Texturen sein ...

Vielleicht hat jemand schonmal so ein Problem gehabt :(

Achso und wofür brauche man: gl.glTexEnvf?

Vielen Dank Oliver
 

Marco13

Top Contributor
Schwer nachzuvollziehen, bisher klingt es von den Symptomen her, als würde einfach der "State" nicht stimmen: OpenGL ist eine Zustandsmachine. Wenn man glEnable() oder glColor3f() oder so aufruft, bleibt dieser Zustand gesetzt, bis man etwas dagegen unternimmt. In diesem Fall könnte es sein, dass z.B. irgendwo Texturen eingeschaltet werden, und er dann versucht, den Kreis mit einer Textur zu zeichnen, obwohl noch keine gebunden wurde... Kannst ja mal schauen, ob du was in dieser Richtung findest, bis Fancy was dazu sagt...
 

Titanpharao

Bekanntes Mitglied
Danke Marco!
Du hattest Recht.


Code:
//falsch		
circleDraw.draw();
gl.glDisable(GL10.GL_TEXTURE_2D);
//richtig	
gl.glDisable(GL10.GL_TEXTURE_2D);
circleDraw.draw();

Der GL10.GL_TEXTURE_2D State war immer für den gesammten Zeichnen Prozess an. Aber stimmt, da ich keine Texture brauche bei dem Kreis, muss man Ihn also disablen. Hat funktioniert! Nur komisch, das es mit dem Raster ging, dort werden schleißlich auch Texturen benutzt ... naja egal es geht :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
temi OpenGL: Eine Kugel Spiele- und Multimedia-Programmierung 7
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
Z Vlcj in OpenGL Spiele- und Multimedia-Programmierung 4
coolian opengl von scale in breite und höhe konvertieren Spiele- und Multimedia-Programmierung 23
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
K Messdaten in Echtzeit darstellen in OpenGL Spiele- und Multimedia-Programmierung 4
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
KeexZDeveoper Fehler von OpenGL Spiele- und Multimedia-Programmierung 1
Kim_Dotcom libGDX - opengl Fehler Spiele- und Multimedia-Programmierung 5
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
RalleYTN OpenGL Context im JFrame? Spiele- und Multimedia-Programmierung 0
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
F OpenGL - Transparenz mit Depth Peeling Spiele- und Multimedia-Programmierung 0
turing OpenGL / Jogle Code Reveiw zur Performance Verbesserung Spiele- und Multimedia-Programmierung 1
K LibGdx, Loadingscreen & Opengl context Spiele- und Multimedia-Programmierung 3
turing OpenGL VBO and Unfiform Handling Spiele- und Multimedia-Programmierung 1
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
T opengl und Android.... Spiele- und Multimedia-Programmierung 3
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
T Welche OpenGL-Version soll ich verwenden? Spiele- und Multimedia-Programmierung 2
O OpenGL - Texture falsch herum Spiele- und Multimedia-Programmierung 3
Gregorrr OpenGL & RCP/SWT Spiele- und Multimedia-Programmierung 3
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
lumo opengl, sprites/tiles Spiele- und Multimedia-Programmierung 8
M OpenGL: Rectangle dort erstellen wo ich hintippe Spiele- und Multimedia-Programmierung 2
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
CookieSoft OpenGl Translatef Frage Spiele- und Multimedia-Programmierung 2
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
T 3D Stadtmodell mit OpenGL Spiele- und Multimedia-Programmierung 5
TheWhiteShadow OpenGL glDrawArrays Bufferfehler Spiele- und Multimedia-Programmierung 10
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
S OpenGL Textur unsauber Spiele- und Multimedia-Programmierung 2
T Android OpenGL Bewegen Spiele- und Multimedia-Programmierung 5
R OpenGL Textur mit verschiedenen bit depths Spiele- und Multimedia-Programmierung 6
Helgon OpenGL Blend Frage Spiele- und Multimedia-Programmierung 18
A LWJGL/OpenGL und Text Spiele- und Multimedia-Programmierung 8
Helgon OpenGL vernünftige Tutorial? Spiele- und Multimedia-Programmierung 22
A OpenGL Textur und nicht Textur Spiele- und Multimedia-Programmierung 2
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
T Probleme mit Skysphere in Opengl Spiele- und Multimedia-Programmierung 4
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
F Suche Tutorial zu "purem" OpenGL mit Java Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL + glSubTexImage2D -> Bufferproblem Spiele- und Multimedia-Programmierung 3
F OpenGL Screenshot in iMove (als Greenscreen) => Farben invertiert? Spiele- und Multimedia-Programmierung 16
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
F Mac: OpenGL Desktop-Screen aus Grafikkarte lesen Spiele- und Multimedia-Programmierung 2
F OpenGL 2D MouseClick/MouseMove Listener Spiele- und Multimedia-Programmierung 4
Kr0e Sehr schnelle Texturupdates (OpenGL) Spiele- und Multimedia-Programmierung 3
Kr0e OpenGL beliebige Texturgröße Spiele- und Multimedia-Programmierung 2
BattleMaster246 OpenGL - Transparenz Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
Y JOGL / OPENGL in Frame Spiele- und Multimedia-Programmierung 11
A Problem openGL-Pipeline mit Win7? Spiele- und Multimedia-Programmierung 6
G OpenGL boolesche operation auf Rechtecke Spiele- und Multimedia-Programmierung 15
A JOGL / OpenGL Spiele- und Multimedia-Programmierung 7
G API für 3d-Programmierung? OpenGL? Spiele- und Multimedia-Programmierung 12
J OpenGL (JOGL) - Radial Blur Effekt (Glow) Spiele- und Multimedia-Programmierung 2
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
J netbeans opengl keyPressed(KeyEvent evt) benutzen Spiele- und Multimedia-Programmierung 4
J netbeans opengl gluPerspective und gluLookAt Verständnis Spiele- und Multimedia-Programmierung 13
S glTexSubImage2D()-Fragen(Zerstörbares Terrain, OpenGL) Spiele- und Multimedia-Programmierung 3
Z Suche Tutorial zum Einstieg in OpenGl mit Java (JOGL) Spiele- und Multimedia-Programmierung 2
T Overlay in anderer OpenGL Anwendung Spiele- und Multimedia-Programmierung 4
egrath Vista OpenGL Performance Problem? Spiele- und Multimedia-Programmierung 3
Y OpenGL Spiele- und Multimedia-Programmierung 5
J opengl beispiele? Spiele- und Multimedia-Programmierung 10
D Java mit OpenGL - besser LWJGL oder JOGL? Spiele- und Multimedia-Programmierung 6
N OpenGL und DirectX - was genau ist das? Spiele- und Multimedia-Programmierung 5
C OpenGl Support für Applet (sun.java2d.opengl=True) Spiele- und Multimedia-Programmierung 3
B OpenGL oder Direct X Spiele- und Multimedia-Programmierung 9

Ähnliche Java Themen

Neue Themen


Oben