2D-Render Probleme LWJGL 2 (Java)

Saturn91

Mitglied
Hi
Einleitung
Nach dem ich nun bereits seit ca. einem Jahr lerne Java Spiele zu programmiere (Snake, Tetris und die Anfänge eines popeligen RPG's laufen bereits), hab ich mich entschieden das ganze ein wenig profesioneller anzugehen und mich einmal an der LWJGL 2 zu versuchen.
Dazu habe ich auch einige super Youtube Tutorials gefunden:

z.B.
Oskar Veerhoek macht englische Tutorials für die LWJGL, vielleicht hilft das anderen Einsteigern.

Idee
Um das erlernte anzuwenden und zu verstehen wollte ich mich vorerst an ein einfacheres Projekt machen. Da ich mich vor allem für die 2D Programmierung interssiere (vorerst ;) ) , habe ich mir zum Ziel gesetzt eine Art Space Invaders zu programmieren (also eins dieser von-links-nach-rechts-flieg-Raumschiff-abballer-Spiele - die nennt man doch so oder:rolleyes:?)

Problem
Vorerst scheitere ich leider noch ein wenig an der Anzeige meiner Sprites (also der animationbilder) meiner Raumschiffe (das Game steckt also noch mehr als in der Anfangsphase).
Um die einzelnen Sprites auf dem Bildschirm anzuzeigen benutze ich Texturen.
Ich würde nun gerne mein Raumschiff vor einem Hintergrund rendern (siehe Beispiel)

Screenshot%202015-12-12%2018.53.40.png


Das Resultat sieht jedoch eher so aus:
Die Transparenz des Raumschiffes wird also nicht erkannt und durch die schwarze Hintergrundgrafik ersetzt.

Screenshot%202015-12-12%2020.07.24.png


Ich hab jetzt schon ne ganze Weile rumgesucht und find die Lösung nicht... Da ich was die LWJGL angeht noch ein absoluter Neuling bin, such ich jedoch vielleicht nach den falschen Begriffen...:confused:

Der Code mit dem das Ganze programmiert wurde:
Computer: Windows 7, 64bit
Java: jdk 1.8.060, jre 1.8.0_65
LWJGL: 2.9.3

Die Klasse Launcher
(hier befindet sich die Main methode)
Startet die Anwendung, hier kann ich bestimmen wie gross das Fenster werden soll:

Java:
package Game;

import java.awt.Dimension;
import java.awt.Toolkit;

public class Launcher {
    private static int width;
    private static int height;
    private static Dimension screenSize;
    public static void main(String[] args){
    
        //für fullscreen
        //setFullscreen();
    
        //für Window
        setWindowSize(1250, 750);
        GameMainLoop game = new GameMainLoop("ErathWarper");             //instanz of game erstellen
    }
    public static void setFullscreen(){
    
        screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        width = (int) screenSize.getWidth();
        height = (int) screenSize.getHeight();                        //width = 1920:1080 at my PC
    }

    public static void setWindowSize(int x_width, int y_height){
        width = x_width;
        height = y_height;
        screenSize = new Dimension(x_width, y_height);
    }

    public static Dimension getScreenSize() {
        return screenSize;
    }
}


Die Klasse GameMainLoop
Hier wird das Fenster erstellt und die anzeige ausprogrammiert (wird später in weitere Klassen ausgelagert).

Java:
package Game;


import static org.lwjgl.opengl.GL11.*;

import org.lwjgl.opengl.*;
import org.lwjgl.*;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;

public class GameMainLoop {

    //time calculation variables
    private long lastFrame;
    long TimeDelta = 0;
    int ticks = 0;
    long biggestDelta = 0;

    private Texture spaceShip;
    private Texture background;

    //initialisize Textures


    public GameMainLoop(String title){
    
        buildDisplay(title);
    
        initOpenGL();
            
        initGraphics();
    
        //initialisize the timer
        lastFrame = getTime();
    
        while(!Display.isCloseRequested()){
        
            printTickLine();
        
            render(getDelta());
            tick();
        
            Display.update();
            Display.sync(60);                     //sets the framerate to 60!
                    
        }
    
        Display.destroy();
    }

//    ***************************initialisation Methodes*************************************************************************************
    private void buildDisplay(String title){
        try {
            Display.setDisplayMode(new DisplayMode(Launcher.getScreenSize().width, Launcher.getScreenSize().height));
            Display.setTitle(title);
            Display.create();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void initOpenGL(){
        //initialisize openGL
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Launcher.getScreenSize().getWidth(), Launcher.getScreenSize().getHeight(), 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);
    
    }

    private void initGraphics(){
        spaceShip = loadTexture("SpaceShip");
        background = loadTexture("Background");
    }

    //*****************************Update Methodes ********************************************************************
    private void printTickLine(){
        if(Sys.getTime() - lastFrame >= biggestDelta){
            biggestDelta = Sys.getTime() - lastFrame;
        }
        TimeDelta +=  Sys.getTime() - lastFrame;
        ticks++;
        if(TimeDelta >= 1000){
            TimeDelta = 0;
            System.out.println("Ticks: " + ticks + "  biggest Timedelta = " + biggestDelta + "ms");
            ticks = 0;
            biggestDelta = 0;
        }
    }

    private void tick(){
    
    }

    //******************************Time Methodes *************************************************************
    private long getTime(){
        return (Sys.getTime() * 1000) /Sys.getTimerResolution();
    }

    private int getDelta(){
        long currentTime = getTime();
        int delta = (int)( currentTime - lastFrame);
        lastFrame = getTime();
        return delta;
    }

    //******************************Render and Texture Methodes ***********************************************

    private void render(int delta){
        glClear(GL_COLOR_BUFFER_BIT);    //for 3d add "| GL_Depht_Buffer_BIT"
    
        //Render
    
        background.bind();
    
        glBegin(GL_QUADS);
            glTexCoord2f(0, 0);        //UpperLeft
            glVertex2i(0, 0);
        
            glTexCoord2f(1, 0);        //UpperRight
            glVertex2i((int)Launcher.getScreenSize().getWidth(), 0);
        
            glTexCoord2f(1, 1);        //DownRight
            glVertex2i((int)Launcher.getScreenSize().getWidth(), (int)Launcher.getScreenSize().getHeight());
        
            glTexCoord2f(0, 1);        //DownLeft
            glVertex2i(0, (int)Launcher.getScreenSize().getHeight());
        glEnd();
    
        spaceShip.bind();
    
        glBegin(GL_QUADS);
            glTexCoord2f(0, 0);        //UpperLeft
            glVertex2i(200, 200);
        
            glTexCoord2f(1, 0);        //UpperRight
            glVertex2i(300, 200);
        
            glTexCoord2f(1, 1);        //DownRight
            glVertex2i(300, 300);
        
            glTexCoord2f(0, 1);        //DownLeft
            glVertex2i(200, 300);
        glEnd();
    }

    public Texture loadTexture(String key){
        try {
            return TextureLoader.getTexture("PNG", new FileInputStream(new File("res/" + key + ".png")));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.err.println("coudn't load " + key + " Texture");
        return null;
    }
}

So da seht ihr mein Problem ;).
Gibt es unter euch LWJGL - Heros die gewillt sind mir zu helfen, das wäre super.
Fehlende Informationen gebe ich euch gerne noch in weiteren Nachrichten!

Vielen Dank im Voraus

lg Saturn91/Manuel
 
Zuletzt bearbeitet:

Saturn91

Mitglied
Hi ^^
ähm bitte haut mich jetzt nicht aber ich hab grad selbst die Lösung gefunden!

man muss folgendes zum Code hinzufügen:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

und zwar am Ende der initOpenGL() Methode

Code:
private void initOpenGL(){
        //initialisize openGL
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Launcher.getScreenSize().getWidth(), Launcher.getScreenSize().getHeight(), 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
       
    }

Vielleicht hilfts einem anderen Anfänger!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
TreCore Render Texture in libGDX Spiele- und Multimedia-Programmierung 5
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
E Scaling Probleme Spiele- und Multimedia-Programmierung 6
J Probleme bei Pong Spiele- und Multimedia-Programmierung 9
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
J YoutubeAPI Livestream probleme Spiele- und Multimedia-Programmierung 3
G [LibGDX] Button Klick Probleme Spiele- und Multimedia-Programmierung 1
T Probleme mit JButton Spiele- und Multimedia-Programmierung 5
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
P Probleme mit VLCJ Spiele- und Multimedia-Programmierung 0
F Probleme bei der Soundwiedergabe Spiele- und Multimedia-Programmierung 0
S Probleme bei Breakout - Brick kollision Spiele- und Multimedia-Programmierung 2
F BlueJ Ufospiel Probleme Spiele- und Multimedia-Programmierung 1
B Probleme mit AndEngine in Android Spiele- und Multimedia-Programmierung 1
M 2048, 3 kleine Probleme Spiele- und Multimedia-Programmierung 4
A Probleme mit Darstellung von Umgebungen mittels mehrdimensionaler Arrays Spiele- und Multimedia-Programmierung 8
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
J Perfomance Probleme beim eigenen Editor Spiele- und Multimedia-Programmierung 1
K Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 10
Q LWJGL - Alpha-Probleme Spiele- und Multimedia-Programmierung 2
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
K Probleme mit .jar Spiele- und Multimedia-Programmierung 12
L Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 3
D Probleme mit der Runnable jar Datei Spiele- und Multimedia-Programmierung 3
D Probleme mit objekt initializirung mit Mouselistener Spiele- und Multimedia-Programmierung 10
Black_ixx Hintergrund & Koordinaten Probleme Spiele- und Multimedia-Programmierung 2
B Probleme mit Texturen Spiele- und Multimedia-Programmierung 7
Maxim6394 Probleme bei Sidescroller Spiele- und Multimedia-Programmierung 5
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
T Probleme mit Skysphere in Opengl Spiele- und Multimedia-Programmierung 4
B Probleme mit redraw() Spiele- und Multimedia-Programmierung 3
Gossi Quaxlis 2D Tutorial....Probleme nach hinzufügen der Kollisionsabfrage Spiele- und Multimedia-Programmierung 16
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
S Probleme mit Tutorial Spiele- und Multimedia-Programmierung 3
T Probleme mit AffineTransform Spiele- und Multimedia-Programmierung 13
W Probleme mit Mouselook Spiele- und Multimedia-Programmierung 2
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 5
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 2
M [Spiel] Kartenspiel Leben und Tod Tips und Probleme Spiele- und Multimedia-Programmierung 7
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Steev Probleme mit Kameraausrichtung bei ISO-Map Spiele- und Multimedia-Programmierung 3
R MediaPlayer macht Probleme Spiele- und Multimedia-Programmierung 2
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
prakdi Probleme mit Quaxlis tutorial Spiele- und Multimedia-Programmierung 5
D Java Pong Probleme Spiele- und Multimedia-Programmierung 7
T Java Sound Probleme Spiele- und Multimedia-Programmierung 8
P probleme mit key event Spiele- und Multimedia-Programmierung 11
T Bekanntes Heli Spiel -> Aber Probleme damit Spiele- und Multimedia-Programmierung 30
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
O Ampel - Probleme mit der Farbgebung Spiele- und Multimedia-Programmierung 16
F Probleme bei Bewegung Spiele- und Multimedia-Programmierung 7
P Probleme mit Vista und JOGL Spiele- und Multimedia-Programmierung 2
P Probleme mit Wolkenbewegung Spiele- und Multimedia-Programmierung 5
W Probleme mit dem setTextureCoordinate Spiele- und Multimedia-Programmierung 3
D Probleme beim Download von GIF-Bildern Spiele- und Multimedia-Programmierung 4
S Probleme mit dem Licht und dem KeyListener Spiele- und Multimedia-Programmierung 2
L Probleme Bei Pong Programmierung Spiele- und Multimedia-Programmierung 2
D Probleme bei ATI Karten bekannt? Spiele- und Multimedia-Programmierung 4
H Probleme bei Rotation Spiele- und Multimedia-Programmierung 9
X Probleme. Spiele- und Multimedia-Programmierung 2
E Probleme mit Kollisionserkennung ! Spiele- und Multimedia-Programmierung 2
F Probleme mit selbsterstelltem transparenten PNG Spiele- und Multimedia-Programmierung 5
S probleme mit material Spiele- und Multimedia-Programmierung 2
W Probleme beim entfernen von Childs im HauptSceneGraph Spiele- und Multimedia-Programmierung 8
N Pong - noch 2 kleinere Probleme Spiele- und Multimedia-Programmierung 16
M Probleme mit WaveFront-Object - Datei Spiele- und Multimedia-Programmierung 7
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
D Gomoku --- Probleme bei Instanzierung Spiele- und Multimedia-Programmierung 2
G Probleme beim installieren java 3d linux Spiele- und Multimedia-Programmierung 4
G Sound Probleme Spiele- und Multimedia-Programmierung 2
S Probleme mit Canvas! Spiele- und Multimedia-Programmierung 2
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13
C Probleme mit Java3D (sun.awt.DrawingSurface) in Java 5 Spiele- und Multimedia-Programmierung 10
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
N Probleme mit View Spiele- und Multimedia-Programmierung 3
coolian lwjgl glfw window zeigt nur grau an Spiele- und Multimedia-Programmierung 0
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
V LWJGL GUI Spiele- und Multimedia-Programmierung 1
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
C GLSL Shaderprogrammierung in LWJGL 3 Spiele- und Multimedia-Programmierung 12
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
G LWJGL .obj .mtl loader Spiele- und Multimedia-Programmierung 3
G 2D animationen LWJGL Spiele- und Multimedia-Programmierung 0
pcfreak9000 "Allgemeine" Performance verbessern (LWJGL 2) Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
G lwjgl verwendung Spiele- und Multimedia-Programmierung 6
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
E LWJGL glGenVertexArrays() erzeugt doppelte IDs Spiele- und Multimedia-Programmierung 3
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
K No Lwjgl Spiele- und Multimedia-Programmierung 2
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben