Performenz-Problem mit Jogl TextRenderer

commic

Grünschnabel
Hallo auch,

ich hab (mal wieder) ein Problem mit jogl. Diemal betrifft es die Bibliothek TextRenderer, welche ab der Version 1.1.0 verfügbar ist. Ich habe in meinem Programm ein diagramm erzeugt und möchte mit jeder Mausbewegung des Nutzers die Skalen an den Achsen immer so rotieren lassen, dass diese immer lesbar sind (außer es wird ausgezoomt). Aber wird das Diagramm nur gedreht, sollen sich eben alle Beschriftungen dementsprechend dem Nutzer entgegendrehen. Nun das Problem: Sobald ich versuche die Skalenbeschriftungen mit jedem neuen Frame neu zeichnen lasse, stockt die Applikation gewaltig (die Animation läuft in einem swt-view). Ist der TextRenderer für gerade 30 Beschriftungen auf meinem Display wirklich so ein Prozessorfresser oder habe ich etwas nicht beachtet ?
Hier der Code dazu:
Code:
public void drawScaleText(GL gl, SceneGrip grip) {
		float dz = this.z / this.scalFactor;
		float dx = this.x / this.scalFactor;
		float dy = this.y / this.scalFactor;
		float az = 0.0f;
		float ax = 0.0f;
		float ay = 0.0f;
		
		for (int i = 0; i <= this.scalFactor; i++) {
			if (i % 2 == 0) {
				gl.glPushMatrix();
				gl.glTranslatef(0.0f, -1.0f, (z + 1.1f));
				gl.glRotatef(-20.0f, 1.0f, 0.0f, 0.0f);
				drawStaticText(gl, Float.toString(scalArrays[0][i]), new Color(
						255, 0, 0, 255), x - ax, 0.0f, 0.0f,
						0.1f / this.scalFactor);
				gl.glPopMatrix();
			}
			gl.glPushMatrix();
			gl.glTranslatef(0.0f, ay, (z + 1.1f));
			gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f);
			drawStaticText(gl, Float.toString(scalArrays[2][i]), new Color(255,
					0, 0, 255), 0.0f, 0.f, 0.0f, 0.1f / this.scalFactor);
			gl.glPopMatrix();
			if (i % 2 == 0) {
				gl.glPushMatrix();
				gl.glTranslatef(x+1.f, 0.0f, (z-az + 0.5f));
				gl.glRotatef(90.f, 0.f, 1.f, 0.f);
				gl.glRotatef(-20.f, 1.f, 0.f, 0.f);
				//gl.glRotatef(-20.f, 0.f, 1.f, 0.f);
				drawStaticText(gl, Float.toString(scalArrays[1][i]), new Color(
						255, 0, 0, 255), 0.0f, -1.0f, 0.0f,
						0.1f / this.scalFactor);
				gl.glPopMatrix();
			}
			ay += dy;
			ax += dx;
			az += dz;
		}
		//gl.glTranslatef(0.0f, 0.0f, (z + 0.1f));
	}

Und noch die drawtext-methode:
Code:
protected void drawStaticText(GL gl, String text, Color color, float x, float y, float z, float textScaleFactor){
    	renderer = new TextRenderer(new Font("SansSerif", Font.PLAIN, 48));
    	renderer.begin3DRendering();
		renderer.setColor(color);
		renderer.draw3D(text, x, y, z, textScaleFactor);
		renderer.end3DRendering();
	}

Ich hoffe jemand hat ein wenig Erfahrung mit dem neuen Textrenderer.
 
Zurück