Quadrat Textur lädt als Dreieck

Diskutiere Quadrat Textur lädt als Dreieck im Spiele- und Multimedia-Programmierung Forum; Hallo, ich habe ein Problem. Ich schaue mir zurzeit ein Java Tower Defense Tutorial an. In der Folge ([MEDIA]) wird eine Textur in das Spiel...

  1. Jakob1234
    Jakob1234 Neues Mitglied
    Hallo, ich habe ein Problem. Ich schaue mir zurzeit ein Java Tower Defense Tutorial an. In der Folge () wird eine Textur in das Spiel geladen die Textur soll Quadartisch sein aber bei mir ist sie Dreieckig. upload_2018-11-19_19-12-40.png

    Der Code aus der Klasse Artist:
    Code (Java):
    package helpers;

    import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
    import static org.lwjgl.opengl.GL11.GL_PROJECTION;
    import static org.lwjgl.opengl.GL11.GL_QUADS;
    import static org.lwjgl.opengl.GL11.glBegin;
    import static org.lwjgl.opengl.GL11.glLoadIdentity;
    import static org.lwjgl.opengl.GL11.glMatrixMode;
    import static org.lwjgl.opengl.GL11.glOrtho;
    import static org.lwjgl.opengl.GL11.glVertex2f;

    import java.io.IOException;
    import java.io.InputStream;

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

    import org.lwjgl.LWJGLException;
    import org.lwjgl.opengl.Display;
    import org.lwjgl.opengl.DisplayMode;
    import org.newdawn.slick.opengl.Texture;
    import org.newdawn.slick.opengl.TextureLoader;
    import org.newdawn.slick.util.ResourceLoader;

    public class Artist {
     
        public static final int WIDTH = 1280, HEIGHT = 960;
     
        public static void BeginSession() {
            Display.setTitle("Stone Defense");
            try {
                Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
                Display.create();
            } catch (LWJGLException e) {
                e.printStackTrace();
            }
         
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();      
            glOrtho(0, WIDTH, HEIGHT, 0, 1, -1);
            glMatrixMode(GL_MODELVIEW);
            glEnable(GL_TEXTURE_2D);
        }
     
        public static void DrawQuad(float x, float y, float width, float height) {
            glBegin(GL_QUADS);
            glVertex2f(x, y); //Top left corner
            glVertex2f(x + width, y); //Top right corner
            glVertex2f(x + width, y + height); //Bottom right corner
            glVertex2f(x, y + height); //Bottom left corner
            glEnd();
        }
     
        public static void DrawQuadTex(Texture tex, float x, float y, float width, float height) {
            tex.bind();
            glTranslatef(x, y, 0);
            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
            glVertex2f(0, 0);
            glTexCoord2f(1, 0);
            glVertex2f(width, 0);
            glTexCoord2f(1, 1);
            glVertex2f(1, 1);
            glVertex2f(width, height);
            glTexCoord2f(0, 1);
            glVertex2f(0, height);
            glEnd();
            glLoadIdentity();
         
        }
     
        public static Texture LoadTexture(String path, String fileType) {
            Texture tex = null;
            InputStream in = ResourceLoader.getResourceAsStream(path);
            try {
                tex = TextureLoader.getTexture(fileType, in);
            } catch (IOException e) {          
                e.printStackTrace();
            }
            return tex;      
        }

    }
    Aus Tile:
    Code (Java):
    package data;

    import org.newdawn.slick.opengl.Texture;

    public class Tile {
     
        private float x, y, width, height;
        private Texture texture;
     
        public Tile(float x, float y, float width, float height, Texture texture) {
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
        }
     

    }
    Und aus Boot:
    Code (Java):
    package data;

    import org.lwjgl.LWJGLException;
    import org.lwjgl.opengl.Display;
    import org.lwjgl.opengl.DisplayMode;
    import org.newdawn.slick.opengl.Texture;

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

    import static helpers.Artist.*;

    public class Boot {
     
        public Boot() {
         
            BeginSession();
         
         
         
            Texture t = LoadTexture("res/dirt64.png", "PNG");
            Texture t2 = LoadTexture("res/Grass_1.png", "PNG");
            while(!Display.isCloseRequested()) {
             
                DrawQuadTex(t, 0, 0, 64, 64);
                DrawQuadTex(t2, 64, 0, 64, 64);
             
             
             
             
                Display.update();
                Display.sync(60);
             
             
            }
         
            Display.destroy();
        }
     
        public static void main(String[] args) {
            new Boot();
        }

    }
    Es würde mich freuen wenn ihr mir helfen könnt danke!
     
    Zuletzt von einem Moderator bearbeitet: 19. Nov. 2018
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. httpdigest
    httpdigest Aktives Mitglied
    Sorry, aber folgendes macht keinen Sinn:
    Code (Java):
    public static void DrawQuadTex(Texture tex, float x, float y, float width, float height) {
      tex.bind();
      glTranslatef(x, y, 0);
      glBegin(GL_QUADS);
      glTexCoord2f(0, 0);
      glVertex2f(0, 0);
      glTexCoord2f(1, 0);
      glVertex2f(width, 0);
      glTexCoord2f(1, 1);
      glVertex2f(1, 1);// <- wieso (1, 1)?? sollte wohl eher (width, height) sein?
      glVertex2f(width, height); // <- nochmal ein vertex?! Jetzt ist das Ganze kein Quad mehr, da du 5 vertices zeichnest
      glTexCoord2f(0, 1);
      glVertex2f(0, height); // <- das hier ist der 5. Vertex
      glEnd();
      glLoadIdentity();
    }
     
    JuKu und Jakob1234 gefällt das.
  4. Jakob1234
    Jakob1234 Neues Mitglied
    Vielen Dank! Das war der Fehler ich war schon am Verzweifeln aber jetzt geht es großen Dank.
    Ich hab noch eine Frage wie hast du meinen Code so geschickt, dass es wie soll ich sagen schön wie ein Code im Editor aussieht gemacht?
     
  5. JuKu
    JuKu Aktives Mitglied
    Mit BB Codes hat er das gemacht (Leerzeichen weglassen): [ code ]//Code[ /code ]
     
  6. Wenn du Java lernen möchtest, empfehlen wir dir dieses Online-Training hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Quadrat Textur lädt als Dreieck - Ähnliche Themen

Magisches Quadrat
Magisches Quadrat im Forum Allgemeine Java-Themen
Loesen von quadratischen Gleichungen
Loesen von quadratischen Gleichungen im Forum Java Basics - Anfänger-Themen
Quadratzahlen rückwerts ausgeben
Quadratzahlen rückwerts ausgeben im Forum Hausaufgaben
Quadrat mit Diagonalen
Quadrat mit Diagonalen im Forum Java Basics - Anfänger-Themen
Quadrate in Rechteck packen
Quadrate in Rechteck packen im Forum Allgemeine Java-Themen
Thema: Quadrat Textur lädt als Dreieck