# LWJGL AWTGLCanvas Tiefe auf 1 beschränkt



## openglfreak (2. Mai 2014)

Hallo

Ich beschreib' mein Problem mal so:
Ich hab' ABSOLUT keine ahnung warum ich nichts z > 1 anzeigen kann!

Zum anzeigen benutze ich LWJGL.
Das AWTGLCanvas wird einem Fenster hinzugefügt und angezeigt.
Jede 1/60 sekunde wird 
	
	
	
	





```
Canvas3D.repaint()
```
 aufgerufen

Hier der Code für das AWTGLCanvas:

```
public class Canvas3D extends AWTGLCanvas implements Renderer {
	private static final long serialVersionUID = 1L;
	
	private List<DrawInfo> infos;
	private List<Renderer> subRenderers;
	
	private boolean inited;
	
	public Canvas3D() throws LWJGLException {
		super();
		infos = new LinkedList<DrawInfo>();
		subRenderers = new LinkedList<Renderer>();
	}

	public void init() {
		createBufferStrategy(1);
		try {
			makeCurrent();
		} catch (LWJGLException e) {
			e.printStackTrace();
			return;
		}
		GL11.glShadeModel(GL11.GL_SMOOTH);
		GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
		GL11.glClearDepth(1.0f);
		GL11.glEnable(GL11.GL_DEPTH_TEST);
		GL11.glDepthFunc(GL11.GL_LEQUAL);
		GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
		GL11.glMatrixMode(GL11.GL_PROJECTION);
		GL11.glLoadIdentity();
		GL11.glOrtho(-2, 2, 2, -2, -1, 1);
		GL11.glMatrixMode(GL11.GL_MODELVIEW);
		GL11.glLoadIdentity();
        try {
			releaseContext();
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public DrawInfo get(int index) {
		return infos.get(index);
	}

	@Override
	public int add(DrawInfo di) {
		infos.add(di);
		return infos.size() - 1;
	}

	@Override
	public int remove(DrawInfo di) {
		int index = infos.indexOf(di);
		if (index != -1)
			infos.remove(index);
		return index;
	}

	@Override
	public void clear() {
		infos.clear();
	}
	
	public int addSubRenderer(Renderer renderer) {
		int index = subRenderers.indexOf(renderer);
		if (index != -1)
			return index;
		subRenderers.add(renderer);
		return subRenderers.size() - 1;
	}
	
	public Renderer removeSubRenderer(int index) {
		return subRenderers.remove(index);
	}
	
	public int removeSubRenderer(Renderer renderer) {
		int index = subRenderers.indexOf(renderer);
		if (index != -1)
			subRenderers.remove(index);
		return index;
	}

	@Override
	public void render() {
		if (!inited) {
			init();
			inited = true;
		}
		try {
			makeCurrent();
		} catch (LWJGLException e1) {
			e1.printStackTrace();
			return;
		}
		GL11.glLoadIdentity();
		GL11.glPushMatrix();
		for (int i = 0; i < subRenderers.size(); i++)
			subRenderers.get(i).render();
		GL11.glPopMatrix();
		GL11.glPushMatrix();
		for (int i = 0; i < infos.size(); i++)
			try {
				infos.get(i).render();
			} catch (NoSuchMethodException | IllegalArgumentException e) {
				e.printStackTrace();
			}
		GL11.glPopMatrix();
		try {
			releaseContext();
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public void paintGL() {
		int max = Math.max(getWidth(), getHeight());
		GL11.glViewport(0, 0, max, max);
		GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
		GL11.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
		render();
		try {
			makeCurrent();
			swapBuffers();
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
	}
}
```


----------



## TheSorm (3. Mai 2014)

Beschreib dein Problem doch mal mehr


----------



## openglfreak (3. Mai 2014)

Ich rendere 3D Blöcke/Würfel und wenn ich einen Würfel mit z > 1 zeichne, wird dieser nicht angezeigt.
Ich schätze, ich habe beim initialisieren etwas falsch gemacht.


----------



## Hestalon (3. Mai 2014)

Nein hast prinzipell alles richtig gemacht, aber vorraussichtlich den Code kopiert?
Du hast bei glOrtho mit der in der FarClipLane 1 angegeben daher => wird alles dahinter abgeschnitten.


----------



## openglfreak (3. Mai 2014)

Ich habe jetzt zFar auf 100 gesetzt und kann immer noch nichts hinter 1 Zeichnen ???:L
Den Code habe ich aus einem tut kopiert und für LWJGL geändert (überall GL11. vorgeschrieben)


----------



## Hestalon (3. Mai 2014)

Hmm ich bin selbst nicht mehr mit OpenGL 1.1 unterwegs und auch schon 1-2 Monate her.

Du solltest normalerweise (wenn die Kamera nicht geändert wurde) entlang der negativen z-Achse schauen, somit near positiv und far größeres negativ z.b. (1,-100).


----------

