glTexParameter / glTexImage2D Problem

Helgon

Bekanntes Mitglied
Hey.. ich hab mal wieder ein Problem :/

Ich hab echt alles durchsucht was Googel hergegeben hat, aber bin leider auf nix gestoßen.

Ich arbeite ja grad die Nehe Tutorials durch und da werden Texturen noch mit dem
Code:
devil.IL
geladen, und das ist doch ziemlich abweichend von der leichten Variante mit Slick. Also hab ich probiert es irgendwie auf meine Art zu basteln und nach gefühlten Stunden hab ich es zumindest hinbekommen, dass der Block seine Textur zumindest irgendwie ändert wenn ich diese binde.

Ich hab nun das

Java:
		try {
			t1 = TextureLoader.getTexture("JPG", new FileInputStream(new File("res/1.jpg")));

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		ByteBuffer textureBuffer = BufferUtils.createByteBuffer(t1.getTextureData().length);
		textureBuffer.put(t1.getTextureData());
		textureBuffer.flip();
		
		GL11.glBindTexture(GL11.GL_TEXTURE_2D, t1.getTextureID());
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
		glTexImage2D(GL_TEXTURE_2D, 0, 3, (int)t1.getWidth(), (int)t1.getHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, textureBuffer);

Das ist die erste Variante, die ansatzweise funktioniert, aber wirklich nur ansatzweise den der Würfel hat nicht die Textur sondern nur irgend ne Farbe aus der Textur (die Textur ist überwiegend braun, also ist der Würfel auch braun).

Weis wer vllt was da falsch läuft?

Mir selbst fehlt noch
Code:
glGenTextures
aber ich hab grad einfach kein Peil wie ich das noch reinbringen könnte.

Das ist echt schlimm. Egal welches OpenGL Tutorial im Internet, keins ist up2date oder funktioniert / man kann einfach nicht drauf los lernen sondern sich erst mit tausend Problemen rumschlagen :/

Das ist der Code wie ich ihn aus der LWJGL Lösung hab, aber eben mit devil.IL (was nicht mehr fortgeführt wird)

Java:
    IntBuffer image = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer();
        IL.ilGenImages(1, image);
        IL.ilBindImage(image.get(0));
        IL.ilLoadImage(path);
        IL.ilConvertImage(IL.IL_RGB, IL.IL_BYTE);
        ByteBuffer scratch = ByteBuffer.allocateDirect(IL.ilGetInteger(IL.IL_IMAGE_WIDTH) * IL.ilGetInteger(IL.IL_IMAGE_HEIGHT) * 3);
        IL.ilCopyPixels(0, 0, 0, IL.ilGetInteger(IL.IL_IMAGE_WIDTH), IL.ilGetInteger(IL.IL_IMAGE_HEIGHT), 1, IL.IL_RGB, IL.IL_BYTE, scratch);

        // Create A IntBuffer For Image Address In Memory
        IntBuffer buf = ByteBuffer.allocateDirect(12).order(ByteOrder.nativeOrder()).asIntBuffer();
        GL11.glGenTextures(buf); // Create Texture In OpenGL

        GL11.glBindTexture(GL11.GL_TEXTURE_2D, buf.get(0));
        // Typical Texture Generation Using Data From The Image

        // Create Nearest Filtered Texture
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, buf.get(0));
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, IL.ilGetInteger(IL.IL_IMAGE_WIDTH), 
                IL.ilGetInteger(IL.IL_IMAGE_HEIGHT), 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, scratch);

Vielleicht erweist sich nochmal jemand gnädig, weil mein Kopf platz und ich hab grad echt kein Peil :/

Grüße
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Funktioniert es denn mit der zweiten Lösung? Anhand der Symptome (Textur mit Braun drin -> komplett brauner Würfel) kann man bisher nicht ausschließen, dass einfach nur die Texturkoordinaten falsch sind. Ein KSKB wäre natürlich praktisch, aber vielleicht findet man da notfalls auch schnell was...
 

Helgon

Bekanntes Mitglied
Ich schaus mir gleich an Fancy :)

@Marco:

Ne, die Texturkordinaten sinds nicht, weil wen ich
Java:
GL11.glBindTexture(GL11.GL_TEXTURE_2D, buf.get(0));
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, IL.ilGetInteger(IL.IL_IMAGE_WIDTH), 
                IL.ilGetInteger(IL.IL_IMAGE_HEIGHT), 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, scratch);
weglasse stimmt ja alles.

Hier der ganze code. Müsstest aber Slick und LWJGL einbinden

Java:
package nehe;
import org.newdawn.slick.Color;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;
import org.lwjgl.input.*;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;

import static org.lwjgl.util.glu.GLU.*;
import static org.lwjgl.opengl.GL11.*;

public class Lektion2 {
	
	Texture t1,t2,t3;
	Texture[] tex = new Texture[3];
	boolean vsync;
	boolean light, lp, lf;
	float r1,r2;
	float xr, yr, zr;
	float xspeed, yspeed;
	float z = -5;

	float ambient[] = {0.5f,0.5f,0.5f,1f};
	float diffuse[] = {1f,1f,1f,1f};
	float pos[] = {0.0f, 0.0f, 2.0f, 1.0f};
	
	public Lektion2(){
		
		try {
			Display.setDisplayMode(new DisplayMode(800,600));
			Display.create();
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
		
		initGL();
		load();
		
		r1 = 1;
		r2 = 1;
		xr = 1;
		yr = 1;
		zr = 1;
		
		while(!Display.isCloseRequested()){
			
			
			input();
			
			r1+=1;
			r2+=1;
			
			xr += 0.2f;
			yr += 0.3f;
			zr += 0.4f;
			
			
	        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);          // Clear The Screen And The Depth Buffer
	                              // Finished Drawing The Triangle

	        glLoadIdentity();                          // Reset The Current Modelview Matrix
	        glTranslatef(0,0.0f,z);                // Move Left 1.5 Units And Into The Screen 6.0
	        glRotatef(xr,1,0,0);
	        glRotatef(yr,0,1,0);
	        
	        glBindTexture(GL_TEXTURE_2D, t1.getTextureID());
	        GL11.glBegin(GL11.GL_QUADS);                            // Start Drawing Quads
	        // Front Face
	        GL11.glNormal3f( 0.0f, 0.0f, 1.0f);                 // Normal Pointing Towards Viewer
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 1 (Front)
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 2 (Front)
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Front)
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 4 (Front)
	        // Back Face
	        GL11.glNormal3f( 0.0f, 0.0f,-1.0f);                 // Normal Pointing Away From Viewer
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Back)
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 2 (Back)
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 3 (Back)
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 4 (Back)
	        // Top Face
	        GL11.glNormal3f( 0.0f, 1.0f, 0.0f);                 // Normal Pointing Up
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 1 (Top)
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 2 (Top)
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Top)
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 4 (Top)
	        // Bottom Face
	        GL11.glNormal3f( 0.0f,-1.0f, 0.0f);                 // Normal Pointing Down
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Bottom)
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 2 (Bottom)
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 3 (Bottom)
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 4 (Bottom)
	        // Right face
	        GL11.glNormal3f( 1.0f, 0.0f, 0.0f);                 // Normal Pointing Right
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 1 (Right)
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 2 (Right)
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Right)
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 4 (Right)
	        // Left Face
	        GL11.glNormal3f(-1.0f, 0.0f, 0.0f);                 // Normal Pointing Left
	        GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Left)
	        GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 2 (Left)
	        GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 3 (Left)
	        GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 4 (Left)
	        GL11.glEnd();                               // Done Drawing Quads
			
	        xr += xspeed;
	        yr += yspeed;
	        
			Display.update();
			Display.sync(60);
		}
		
	}
	
	public void input(){
		
			while(Keyboard.next()){
				if(Keyboard.isKeyDown(Keyboard.KEY_F)){
					light = !light;
				}
			}
			if(light){
		        glEnable(GL_LIGHTING);        // Enable Lighting
			}else{
		        glDisable(GL_LIGHTING);        // Enable Lighting
			}
		
			if (Keyboard.isKeyDown(Keyboard.KEY_PRIOR)) {       // Is Page Up Being Pressed?
	            z-=0.2f;                               // If So, Move Into The Screen
	        }
	        if (Keyboard.isKeyDown(Keyboard.KEY_NEXT)) {        // Is Page Down Being Pressed?
	            z+=0.2f;                               // If So, Move Towards The Viewer
	        }
			if(Keyboard.isKeyDown(Keyboard.KEY_UP)){
				xspeed -=0.1f;
			}
			if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
				xspeed +=0.1f;
			}
			if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
				yspeed -=0.1f;
			}
			if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)){
				yspeed +=0.1f;
			}
		
	}
	
	public void load(){
		try {
			t1 = TextureLoader.getTexture("JPG", new FileInputStream(new File("res/1.jpg")));

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
        IntBuffer buf = ByteBuffer.allocateDirect(12).order(ByteOrder.nativeOrder()).asIntBuffer();

		glGenTextures(buf);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, t1.getTextureID());

		ByteBuffer textureBuffer = BufferUtils.createByteBuffer(t1.getTextureData().length);
		textureBuffer.put(t1.getTextureData());
		textureBuffer.flip();
		
		GL11.glBindTexture(GL11.GL_TEXTURE_2D, t1.getTextureID());
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
		glTexImage2D(GL_TEXTURE_2D, 0, 3, (int)t1.getWidth(), (int)t1.getHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, textureBuffer);
	
		
	}
	
	public void initGL(){
        glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
        glShadeModel(GL_SMOOTH); // Enable Smooth Shading
        glClearColor(0.4f, 0.4f, 0.7f, 0.0f); // Black Background
        glClearDepth(1.0); // Depth Buffer Setup
        glEnable(GL_DEPTH_TEST); // Enables Depth Testing
        glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do

        glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
        glLoadIdentity(); // Reset The Projection Matrix

        // Calculate The Aspect Ratio Of The Window
        gluPerspective(45.0f, (float) 800 / (float) 600, 0.1f, 100.0f);
        glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix

        // Really Nice Perspective Calculations
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        
        // Really Nice Perspective Calculations
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        ByteBuffer temp = ByteBuffer.allocateDirect(16);
        temp.order(ByteOrder.nativeOrder());
        glEnable(GL_LIGHT1);                          // Enable Light One
        glLight(GL_LIGHT1, GL_AMBIENT, (FloatBuffer)temp.asFloatBuffer().put(ambient).flip());              // Setup The Ambient Light
        glLight(GL_LIGHT1, GL_DIFFUSE, (FloatBuffer)temp.asFloatBuffer().put(diffuse).flip());              // Setup The Diffuse Light
        glLight(GL_LIGHT1, GL_POSITION,(FloatBuffer)temp.asFloatBuffer().put(pos).flip());         // Position The Light
        
        

	}
	
	public static void main(String[] args){
		new Lektion2();
	}
	
}
 
S

Spacerat

Gast
Während der Abarbeitung der Nehe-Tuts meinerseits, ist dieses hier entstanden und zwar eigentlich erst für die Lektionen in den dort gezeigten Bildern (13, 14, 15... da geht's hauptsächlich um Text). Inzwischen ist auch ein Texturloader dabei, aber der ist längst noch nicht fertig, aber für Nehe reicht er allemal. Deinem Code nach zu urteilen, dürfte des Lesson 7 (und nicht 2 ;)) sein. Diese sieht mit meiner Extension-API so aus:
Java:
/*
 *      This Code Was Created By Jeff Molofee 2000
 *      A HUGE Thanks To Fredric Echols For Cleaning Up
 *      And Optimizing The Base Code, Making It More Flexible!
 *      If You've Found This Code Useful, Please Let Me Know.
 *      Visit My Site At nehe.gamedev.net
 */

import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.util.glu.GLU.*;
import static org.lwjgl.opengl.jgl.JGL.*;

import java.awt.Toolkit;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
import java.nio.FloatBuffer;

import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.jgl.JGLTexture;
import org.lwjgl.input.Keyboard;

/**
 * Port of NeHe's Lesson 7 to LWJGL
 * Title: Texture Filters, Lighting & Keyboard Control
 * Uses LWJGL [url=http://www.lwjgl.org/]lwjgl.org - Home of the Lightweight Java Game Library[/url]
 *
 * Be sure that the LWJGL libraries are in your classpath
 *
 * Ported directly from the C++ version
 */
public class Lesson07 {

	private static final Toolkit tk = Toolkit.getDefaultToolkit();
	private static final URL currentDir;

	static {
		try {
			currentDir = new File(".").getAbsoluteFile().toURI().toURL();
		} catch(MalformedURLException e) {
			throw new RuntimeException(e);
		}
	}
	
    private boolean done = false;
    private boolean fullscreen = false;
    private final String windowTitle = "NeHe's OpenGL Lesson 7 for LWJGL (Texture Filters, Lighting & Keyboard Control)";
    private boolean f1 = false;
    private DisplayMode displayMode;

    private boolean light;                                      // Lighting ON / OFF
    private boolean lp;                                         // L Pressed?
    private boolean fp;                                         // F Pressed?
    private float xrot;                                         // X Rotation
    private float yrot;                                         // Y Rotation
    private float xspeed;                                       // X Rotation Speed
    private float yspeed;                                       // Y Rotation Speed
    private float z = -5.0f;                                        // Depth Into The Screen
    private float lightAmbient[] = { 0.5f, 0.5f, 0.5f, 1.0f };  // Ambient Light Values ( NEW )
    private float lightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };      // Diffuse Light Values ( NEW )
    private float lightPosition[] = { 0.0f, 0.0f, 2.0f, 1.0f }; // Light Position ( NEW )
    private int filter;                                         // Which Filter To Use
    private int texture[] = new int[3];                         // Storage for 3 textures

    public static void main(String args[]) {
        boolean fullscreen = false;
        if(args.length>0) {
            if(args[0].equalsIgnoreCase("fullscreen")) {
                fullscreen = true;
            }
        }

        Lesson07 l7 = new Lesson07();
        l7.run(fullscreen);
    }
    public void run(boolean fullscreen) {
        this.fullscreen = fullscreen;
        try {
            init();
            while (!done) {
                mainloop();
                render();
                Display.update();
            }
            cleanup();
        }
        catch (Exception e) {
            e.printStackTrace();
            System.exit(0);
        }
    }
    private void mainloop() {
        if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {       // Exit if Escape is pressed
            done = true;
        }
        if(Display.isCloseRequested()) {                     // Exit if window is closed
            done = true;
        }
        if(Keyboard.isKeyDown(Keyboard.KEY_F1) && !f1) {    // Is F1 Being Pressed?
            f1 = true;                                      // Tell Program F1 Is Being Held
            switchMode();                                   // Toggle Fullscreen / Windowed Mode
        }
        if(!Keyboard.isKeyDown(Keyboard.KEY_F1)) {          // Is F1 Being Pressed?
            f1 = false;
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_L) && !lp) {
            lp=true;
            light=!light;
            if (!light)                             // If Not Light
            {
                glDisable(GL_LIGHTING);       // Disable Lighting
            }
            else                                    // Otherwise
            {
                glEnable(GL_LIGHTING);        // Enable Lighting
            }
        }
        else if (!Keyboard.isKeyDown(Keyboard.KEY_L)) {
            lp=false;
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_F) && !fp) {    // Is F Key Being Pressed?
            fp=true;                                // fp Becomes TRUE
            filter+=1;                              // filter Value Increases By One
            if (filter>2            )               // Is Value Greater Than 2?
            {
                filter=0;                           // If So, Set filter To 0
            }
        }
        else if (!Keyboard.isKeyDown(Keyboard.KEY_F)) {     // Has F Key Been Released?
            fp=false;                               // If So, fp Becomes FALSE
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_PRIOR)) {       // Is Page Up Being Pressed?
            z-=0.0002f;                               // If So, Move Into The Screen
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_NEXT)) {        // Is Page Down Being Pressed?
            z+=0.0002f;                               // If So, Move Towards The Viewer
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {          // Is Up Arrow Being Pressed?
            xspeed-=0.00001f;                          // If So, Decrease xspeed
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {        // Is Down Arrow Being Pressed?
            xspeed+=0.00001f;                          // If So, Increase xspeed
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {       // Is Right Arrow Being Pressed?
            yspeed+=0.00001f;                          // If So, Increase yspeed
        }
        if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {        // Is Left Arrow Being Pressed?
            yspeed-=0.00001f;                          // If So, Decrease yspeed
        }
    }
    private void switchMode() {
        fullscreen = !fullscreen;
        try {
            Display.setFullscreen(fullscreen);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

    private boolean render() {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);          // Clear The Screen And The Depth Buffer

        glLoadIdentity();                          // Reset The Current Modelview Matrix

        glTranslatef(0.0f,0.0f,z);                     // Translate Into/Out Of The Screen By z

        glRotatef(xrot,1.0f,0.0f,0.0f);                        // Rotate On The X Axis By xrot
        glRotatef(yrot,0.0f,1.0f,0.0f);                        // Rotate On The Y Axis By yrot
        glBindTexture(GL_TEXTURE_2D, texture[filter]);                // Select A Texture Based On filter

        glBegin(GL_QUADS);                            // Start Drawing Quads
        // Front Face
        glNormal3f( 0.0f, 0.0f, 1.0f);                 // Normal Pointing Towards Viewer
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 1 (Front)
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 2 (Front)
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Front)
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 4 (Front)
        // Back Face
        glNormal3f( 0.0f, 0.0f,-1.0f);                 // Normal Pointing Away From Viewer
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Back)
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 2 (Back)
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 3 (Back)
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 4 (Back)
        // Top Face
        glNormal3f( 0.0f, 1.0f, 0.0f);                 // Normal Pointing Up
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 1 (Top)
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 2 (Top)
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Top)
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 4 (Top)
        // Bottom Face
        glNormal3f( 0.0f,-1.0f, 0.0f);                 // Normal Pointing Down
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Bottom)
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 2 (Bottom)
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 3 (Bottom)
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 4 (Bottom)
        // Right face
        glNormal3f( 1.0f, 0.0f, 0.0f);                 // Normal Pointing Right
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    // Point 1 (Right)
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    // Point 2 (Right)
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    // Point 3 (Right)
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    // Point 4 (Right)
        // Left Face
        glNormal3f(-1.0f, 0.0f, 0.0f);                 // Normal Pointing Left
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    // Point 1 (Left)
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    // Point 2 (Left)
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    // Point 3 (Left)
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    // Point 4 (Left)
        glEnd();                               // Done Drawing Quads

        xrot+=xspeed;                               // Add xspeed To xrot
        yrot+=yspeed;                               // Add yspeed To yrot
        return true;
    }
    private void createWindow() throws Exception {
        Display.setFullscreen(fullscreen);
        DisplayMode d[] = Display.getAvailableDisplayModes();
        for (int i = 0; i < d.length; i++) {
            if (d[i].getWidth() == 640
                && d[i].getHeight() == 480
                && d[i].getBitsPerPixel() == 32) {
                displayMode = d[i];
                break;
            }
        }
        Display.setDisplayMode(displayMode);
        Display.setTitle(windowTitle);
        Display.create();
    }
    private void init() throws Exception {
        createWindow();

        loadTextures();
        initGL();
    }
    private void loadTextures() {
        texture = loadTexture("Data/Crate.png");
    }
    private void initGL() {
        glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
        glShadeModel(GL_SMOOTH); // Enable Smooth Shading
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background
        glClearDepth(1.0f); // Depth Buffer Setup
        glEnable(GL_DEPTH_TEST); // Enables Depth Testing
        glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do

        glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
        glLoadIdentity(); // Reset The Projection Matrix

        // Calculate The Aspect Ratio Of The Window
        gluPerspective(45.0f, (float) displayMode.getWidth() / (float) displayMode.getWidth(),0.1f,100.0f);
        glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix

        // Really Nice Perspective Calculations
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        ByteBuffer temp = ByteBuffer.allocateDirect(16);
        temp.order(ByteOrder.nativeOrder());
        glLight(GL_LIGHT1, GL_AMBIENT, (FloatBuffer)temp.asFloatBuffer().put(lightAmbient).flip());              // Setup The Ambient Light
        glLight(GL_LIGHT1, GL_DIFFUSE, (FloatBuffer)temp.asFloatBuffer().put(lightDiffuse).flip());              // Setup The Diffuse Light
        glLight(GL_LIGHT1, GL_POSITION,(FloatBuffer)temp.asFloatBuffer().put(lightPosition).flip());         // Position The Light
        glEnable(GL_LIGHT1);                          // Enable Light One
    }
    private void cleanup() {
        Display.destroy();
    }
    /**
     * Texture loading directly from LWJGL examples
     */
    private int[] loadTexture(String path) {
		JGLTexture tex;
		try {
			tex = createTexture(tk.createImage(new URL(currentDir, path)));
	        IntBuffer buf = BufferUtils.createIntBuffer(3);
	        glGenTextures(buf); // Create Texture In OpenGL

	        // Create Nearest Filtered Texture
	        glBindTexture(GL_TEXTURE_2D, buf.get(0));
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	        glTexImage2D(GL_TEXTURE_2D, 0, 4, tex.getWidth(), tex.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, tex.getData());

	        // Create Linear Filtered Texture
	        glBindTexture(GL_TEXTURE_2D, buf.get(1));
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	        glTexImage2D(GL_TEXTURE_2D, 0, 4, tex.getWidth(), tex.getWidth(), 0, GL_RGBA, GL_UNSIGNED_BYTE, tex.getData());

	        // Create MipMapped Texture
	        glBindTexture(GL_TEXTURE_2D, buf.get(2));
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
	        gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tex.getWidth(), tex.getHeight(), GL_RGBA, GL_UNSIGNED_BYTE, tex.getData());

	      return new int[]{ buf.get(0), buf.get(1), buf.get(2) };     // Return Image Addresses In Memory
		} catch (Exception e) {
			return null;
		}        
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Helgon

Bekanntes Mitglied
Hey, vieln vieln dank! Das wird mir sicherlich helfen. Einziges Problem:

Wo kommt der .jgl Import her?


Code:
import static org.lwjgl.opengl.jgl.JGL.*;

Google finde ich nichts und wenn doch nur was von wegen JOGL, aber das ist doch ne andere Lib, und warum ists dann hier jgl und nicht jogl und warum dann auch noch im lwjgl?

Googel war diesmal wirklich nicht sonderlich hilfreich.

Könntest mir wer sagen wo das her kommt / wo ichs herkrieg?

Grüße

Edit: Dann noch ne andere Frage an der Stelle - besonders an dich Fancy.

Bringt es irgendwelche Vorteile jgl, devil.IL oder Slick zum Laden der Texturen zu verwenden, oder ist es damit einfach nur einfacher / oder reicht deine TextureIO Klasse da vollkommen?

Grüße
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Wo kommt der .jgl Import her?...
...Googel war diesmal wirklich nicht sonderlich hilfreich.

Könntest mir wer sagen wo das her kommt / wo ichs herkrieg?
Das kann ich mir lebhaft vorstellen... Fancy brauchst dazu auch nicht Interviewen. In dem Link oben ("dieses hier") steht ja bereits, was es damit auf sich hat. Wenn du davon was findest, dürften die meisten Links in dieses Forum verweisen. Kurzum: JGL ist von mir und wurde zur Darstellung von Text in 3D (also nicht blos Bitmap-Fonts) entwickelt.
[EDIT]@Fancy: Ach ja, wenn du mehr Zeit hast als ich, kannst du JGL ja mal überfliegen und vllt. einige viele Verbesserungsvorschläge machen. Bei den Fonts stört mich nämlich noch ein wenig die Performance bei grösseren Texten. Ich denke, da muss z.B. per Tesselation noch einiges gehen.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Helgon

Bekanntes Mitglied
Ahhhh!

Sry, ich überlebe momentan den Tag immer nur mit Hilfe von Koffein im Gramm Bereich :/ War wohl gestern schon etwas spät.

Vielen Dank!! Das hat mir so unglaublich geholfen! Es ist unglaublich frustrierend, wenn man nix zum laufen kriegt, weil die Tutorial Samples erst gar nicht laufen :( (und wenn man grad (noch :)) nicht mit unglaublicher Sachkompetenz gesegnet ist, wirds echt nervig)

Danke!

Noch eine Frage, ist NATÜRLICH NICHT! undankbar oder so gemeint, aber bieten Slick, devil IL usw. diese ganzen Libs irgendwelche Performance Vorteile etc. (ka was noch eine Rolle spielen könnte) oder gibt es die einfach nur dummen Leuten wie mir die Arbeit zu vereinfachen?

Grüße und nochmal danke! :)

Edit: Hab mir mal die JGL und JGLTexture Klasse angeschaut und muss sagen, dass ichs für nicht so "kompliziert" gehalten habe ein Image reinzuladen (wenn ichs mit dem Schnipsel TextureIO von Fancy vergleiche).

Ich bin grad am grübeln. Kann ich bedenkenlos versuchen weiter zu machen, oder ist es essentiell erstmal das voll und ganz zu verstehen (deine Klassen)?
 
Zuletzt bearbeitet:

Helgon

Bekanntes Mitglied
Was ich mir grad überleg.

Gibt es nicht eine Möglichkeit, die Textur Daten auch über Slick irgendwie zu bekommen? Es gibt ja
Code:
tex.getTextureData()
, aber das sind wohl nicht die, die glu als Parameter erwartet :/

Also

Java:
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tex.getWidth(), tex.getHeight(), GL_RGBA, GL_UNSIGNED_BYTE, tex.getData())

Also wies bei dir über die eigene Methode getData() passiert, aber da steig ich nicht ganz durch :/ wie ichs selbst für Slick implementieren könnte.
 
G

Guest2

Gast
Die gezeigte TextureIO ist primär erstmal ein kleines Stück Code das zeigt, wie man ein Bild in einen Buffer bekommt (mit reinem Java) und den Inhalt dieses Buffers anschließend auf die Grafikkarte schiebt. Imho ist das ein guter Ausgangspunkt, um davon ausgehend die Klasse dann um genau die Funktionen zu erweitern, die man gerade braucht (wie bei Dir jetzt scheinbar die Erzeugung von Mipmaps).

Außerdem ist der Umgang von Ressourcen in OpenGL immer recht ähnlich (ID erzeugen, ID binden, Parameter setzen, Ressourcen hochladen), so das ich es schon für sinnvoll halte das zu verstehen.

In dem Zusammenhang könntest Du Dir auch mal unter OpenGL Common Mistakes die Punkte "Texture upload and pixel reads", "Creating a Texture" und "Automatic mipmap generation" ansehen.

Insbesondere steht dort zum Thema gluBuild2DMipmaps:

http://www.opengl.org/wiki/Common_Mistakes hat gesagt.:
Never use this. Use either GL_GENERATE_MIPMAP (requires GL 1.4) or the glGenerateMipmap function (requires GL 3.0).

(das gilt übrigens für eine ganze Reihe von Funktionen aus glu)


@Spacerat: Ja, wenn ich mal etwas Zeit übrig habe, kann ich da gerne mal einen Blick drauf werfen. Allerdings ist meine Zeit leider auch nur endlich und meine Motivation legacy / depricated Code durchzusehen nur begrenzt. Es kann also etwas dauern. ;)

Viele Grüße,
Fancy
 
S

Spacerat

Gast
Hmm... erinnerst du dich noch an die Sache mit den Buffern? Ebenso verhält es sich mit Textur-APIs. Jedem Tierchen sein Blässierchen. Ich hatte damals für JOGL einen Weg gesucht 3D Text darstellen zu können und zwar ebenso einfach wie es mit WGL in den NeHe-Tuts geht - deswegen heissen die Font-Methoden auch [c]getBitmapFont[/c] bzw. [c]getOutlineFont[/c] und die für die Ausgabe von Text halt [c]printf[/c]. Warum bitte sollte ich anfangen Fontdateien in Java zu lesen und zu parsen, wenn es in der Java-Standard-API bereits Mechanismen dafür gibt? Selbiges überlegte ich mir für die Texturen - ImageLoader gibt es in Java bereits, deswegen stäubte ich mich dagegen, eine Textur per Dateinamen bzw. -url zu erstellen und legte deswegen vielmehr Wert darauf, die Textur beliebige Formate (ARGB, ABGR usw.) wandeln zu können. Alles in allem hat sich das Ergebnis nun in JGL manifestiert.
Nun, ich selber wüsste nicht, was an den durch diese diversen APIs (Slick, Devil usw) zurückgegebenen Buffern anders sein soll als bei JGL. LWJGL und auch JOGL benötigen sie nun mal in dieser Form. Der eigentliche Grund aber, warum ich bei meinen Texturen Images statt Dateinamen übergebe ist jener, da ich schon seit Urzeiten an einem AmigaOS-Datatype (wem's nicht geläufig ist...) ähnlichem Mechanismus für Java arbeite. Ich lade meine Bilder, Sounds und hoffentlich auch bald (vernünftig) 3D-Objekte nur noch über eine simple Codezeile:
Java:
public static <T extends DT_Object> T getFile(URL url); // wahlweise auch (String), (File) oder auch (URL, String)
Dank der Typisierung bekommt man seit Java1.5 eine [c]ClassCastException[/c]wenn man ein Bild (DT_Image) erwartet, obwohl man eine Sounddatei (DT_Audio) geladen hat. Leider ist das ganze noch weniger Spruchreif als JGL und obendrein wüsste ich eh' (immer noch) nicht, wo und wie man eigene Projekte hostet. Dafür gibt's bald 'nen eigenen Server ich denk'.
[EDIT]
...wie bei Dir jetzt scheinbar die Erzeugung von Mipmaps...
Nee, soweit isset noch nicht - muss ja auch nicht... GLU macht das schon. Aber der Hinweis auf den Fehler ist interessant... den hat dann wohl NeHe schon gemacht und ich hab' ihn schlicht geguttenbergert.[/EDIT][EDIT]@Helgon: Verstehen musst du an meinen Klassen nur, wie du sie verwenden kannst jedoch nicht wie diese im Detail funktionieren. Meine Doku ist zwar noch recht dürftig (aber immerhin vorhanden ;)) aber du machst des schon... lass dich nicht abhalten ;)[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Helgon

Bekanntes Mitglied
Ich danke mal wieder für die Antworten :)

@Helgon: Verstehen musst du an meinen Klassen nur, wie du sie verwenden kannst jedoch nicht wie diese im Detail funktionieren. Meine Doku ist zwar noch recht dürftig (aber immerhin vorhanden ) aber du machst des schon... lass dich nicht abhalten

Ja es ist natürlich nur teilweise die Funktionsweise, wie welche Pixel in welches Byte wohin geschoben werden und warum etc.

Natürlich bleib ich dran :)

Ich hab grad einfach weiter gemacht (mim Slick und das ausgelassen wo texParameter notwending sind (sind ja eh nur glaub ich eh nur 1-2 Tutorial + die Fonts) oder eben so umgesetzt das es ohne geht.

Ist echt motivierend zu sehen was man mit OpenGL alles machen kann (und das die Samples auch mal gehen :D)

Aber wie immer.. erstmal grob verstehen und dann selber was basteln, dann festig es sich erst :) - wird aber definitiv spaßig!

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R LWJGL IllegalArgument Exception bei glTexImage2D Spiele- und Multimedia-Programmierung 26
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3
L [Slick2D] Problem bei Speicherfreigabe Spiele- und Multimedia-Programmierung 2
M Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 22
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
J Problem bei pixelgenauer Kollisionsabfrage Spiele- und Multimedia-Programmierung 10
F Problem mit dem Abspielen von byte[] (Audioprogrammierung) Spiele- und Multimedia-Programmierung 2
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
R StringIndexOutOfBoundsException - Problem Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Fu3L Problem mit 3D Noise Spiele- und Multimedia-Programmierung 4
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
T Problem mit ClassLoader und LWJGL Spiele- und Multimedia-Programmierung 5
M Scrolling Repaint Problem Spiele- und Multimedia-Programmierung 2
Samake03 [Problem] layeredPane bzw. Viewport Spiele- und Multimedia-Programmierung 3
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
M Problem mit Gameserver / Datensynchronisation Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
X Geometry Wars Clone Problem Spiele- und Multimedia-Programmierung 4
H Problem mit JMonkeyEngine3 und OgreXML Spiele- und Multimedia-Programmierung 3
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
T Problem mit Speicherverbrauch Spiele- und Multimedia-Programmierung 5
S Programmstruktur Problem! Spiele- und Multimedia-Programmierung 8
BattleMaster246 Problem mit Jogl Spiele- und Multimedia-Programmierung 14
C MP3 Handler-Problem Spiele- und Multimedia-Programmierung 13
C [gelöst] MP3-Codec-Problem Spiele- und Multimedia-Programmierung 2
K Schiebepuzzle Array Zufallszahlen Problem Spiele- und Multimedia-Programmierung 8
J Java 3D Problem Spiele- und Multimedia-Programmierung 2
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
H Repaint-Problem mit Quaxlis Tutorial Spiele- und Multimedia-Programmierung 2
C Java Sound API Clip.Close() Problem Spiele- und Multimedia-Programmierung 1
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben