ich brauche irgendeine gui lib für lwjgl2

ich brauche irgendeine gui lib für lwjgl2
Nein, brauchst du nicht.

Du möchtest LWJGL 3 verwenden. LWJGL 2 ist schon viele viele Jahre deprecated und wird nicht mehr maintained und beginnt langsam, zu verfallen und Probleme (gerade mit Mac OS) zu machen: http://forum.lwjgl.org/index.php?topic=6951.msg36546#msg36546
Minecraft (als populärster Client von LWJGL) ist auch schon lange auf LWJGL 3 umgestiegen.

GUI Lösungen für LWJGL 3 sind z.B.:
- https://github.com/kotlin-graphics/imgui
- https://github.com/SpinyOwl/legui
- https://github.com/vurtun/nuklear (bereitgestellt als Binding innerhalb von LWJGL 3)

Für mehr Infos: https://github.com/LWJGL/lwjgl3/issues/101
 
mac OS ist sowieso kompletter müll und giebt kein support für irgendwas außerdem hab ich glfw noch nie verstanden aber wenn du es mir erklärst und mir außerdem etwas giebts was so wie slick texturen lädt:
Java:
Texture texture = null;
        try {
            texture = TextureLoader.getTexture("PNG",
                    new FileInputStream("res/" + fileName + ".png"));
            GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
            GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR);
            GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, -0.4f);
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Tried to load texture " + fileName + ".png , didn't work");
            System.exit(-1);
        }
dann meinetwegen aber sonst nicht
 
lwjgl 2 ist einfacher du kannst mir wohl kaum erzählen das das hier:
Java:
GLFWErrorCallback errorCallback;
    GLFWKeyCallback keyCallback;
    GLFWFramebufferSizeCallback fsCallback;
    Callback debugProc;
    
    
    glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err));
        if (!glfwInit())
            throw new IllegalStateException("Unable to initialize GLFW");

        glfwDefaultWindowHints();
        glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
        glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);

        window = glfwCreateWindow(width, height, "Hello World!", NULL, NULL);
        if (window == NULL)
            throw new RuntimeException("Failed to create the GLFW window");

        glfwSetKeyCallback(window, keyCallback = new GLFWKeyCallback() {
            public void invoke(long window, int key, int scancode, int action, int mods) {
                if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE)
                    glfwSetWindowShouldClose(window, true);
            }
        });
        glfwSetFramebufferSizeCallback(window, fsCallback = new GLFWFramebufferSizeCallback() {
            public void invoke(long window, int w, int h) {
                if (w > 0 && h > 0) {
                    width = w;
                    height = h;
                }
            }
        });

        GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
        glfwSetWindowPos(window, (vidmode.width() - width) / 2, (vidmode.height() - height) / 2);
        try (MemoryStack frame = MemoryStack.stackPush()) {
            IntBuffer framebufferSize = frame.mallocInt(2);
            nglfwGetFramebufferSize(window, memAddress(framebufferSize), memAddress(framebufferSize) + 4);
            width = framebufferSize.get(0);
            height = framebufferSize.get(1);
        }
        glfwShowWindow(window);
    }
    
    //renderloop
    glfwMakeContextCurrent(window);
    //render stuff here
    
    if (!destroyed) {
                    glfwSwapBuffers(window);
                }
einfacher ist als das hier:
Java:
public static void createDisplay(){       
        /*ContextAttribs attribs = new ContextAttribs(1,3)
        .withForwardCompatible(true)
        .withProfileCore(true);*/
        try {
            Display.setDisplayMode(new DisplayMode(WIDTH,HEIGHT));
            Display.create();
            Display.setTitle("title");
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
        
        
        GL11.glViewport(0,0, WIDTH, HEIGHT);
    }

//render loop
Display.sync(FPS_CAP);
        Display.update();
//-------------------
public static void closeDisplay(){
        Display.destroy();
    }

//main noch bevor irgendwas
DisplayManager.createDisplay();
 
Du vergleichst hier auch Äpfel mit Birnen. Der von dir gezeigte LWJGL 3 / GLFW Code macht ja auch viel mehr als dein bisschen LWJGL 2 Code....
 
ich kann ja mal eben lwjgl3 in mein proejkt reintun anstatt lwjgl 2 dann kann ich zählen welche zeilen lwjgl code sind
 
man brauch ja auch mehr glfw code als lwjgl2
Schwachsinn. Der LWJGL 2 Code, den du zeigst, ist äquivalent zu dem LWJGL 3 / GLFW Code hier:
Java:
glfwInit();
long window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World!", glfwGetPrimaryMonitor(), NULL);
glfwMakeContextCurrent(window);
glfwShowWindow(window);
GL.createCapabilities();
while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // render..
    glfwSwapBuffers(window);
    glfwPollEvents();
}
Jetzt hör auf, rumzuheulen, und nutze einfach LWJGL 3 bzw. GLFW. Ist auf kurze und lange Sicht die wesentlich bessere Alternative! :)

EDIT: Außerdem ist das Window Setup und die äußere Event-Loop Schleife eine einmalige Sache, für die man ein einziges Mal vielleicht 10 Minuten Recherche und Coding investieren muss. Und dann ist man damit durch...
Streng genommen, ist es vollkommen egal, ob das Window Setup nun 10 oder 50 Zeilen kostet... Who cares? Das ist nicht der Aufwandstreiber in einem Projekt. Und wenn du das ein einziges Mal hast, dann kannst du genauso wie in LWJGL 2 in LWJGL 3 einfach statische OpenGL Methoden aufrufen. Da ändert sich gar nichts.
 
Zuletzt bearbeitet:
Strenggenommen ist das s. g. Boilerplate Code. ;) (Kaum Änderungen, viel Codierarbeit, kaum Nutzen, wenig Funktionalität) Aber umso leichter sich zu merken. :)
 
Schwachsinn. Der LWJGL 2 Code, den du zeigst, ist äquivalent zu dem LWJGL 3 / GLFW Code hier:
Java:
glfwInit();
long window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World!", glfwGetPrimaryMonitor(), NULL);
glfwMakeContextCurrent(window);
glfwShowWindow(window);
GL.createCapabilities();
while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // render..
    glfwSwapBuffers(window);
    glfwPollEvents();
}
Jetzt hör auf, rumzuheulen, und nutze einfach LWJGL 3 bzw. GLFW. Ist auf kurze und lange Sicht die wesentlich bessere Alternative! :)

EDIT: Außerdem ist das Window Setup und die äußere Event-Loop Schleife eine einmalige Sache, für die man ein einziges Mal vielleicht 10 Minuten Recherche und Coding investieren muss. Und dann ist man damit durch...
Streng genommen, ist es vollkommen egal, ob das Window Setup nun 10 oder 50 Zeilen kostet... Who cares? Das ist nicht der Aufwandstreiber in einem Projekt. Und wenn du das ein einziges Mal hast, dann kannst du genauso wie in LWJGL 2 in LWJGL 3 einfach statische OpenGL Methoden aufrufen. Da ändert sich gar nichts.
die ganzen natives sind jetzt .jar anstatt .dll immernoch gleich einbinden oder wie z.b lwjgl jar einbinden war btw essen zwischendurch
 
nicht zu vergessen keine Vector und matrix klassen welche ich benötige
Wer nicht will, findet Gründe. Wer will, findet Wege: https://github.com/JOML-CI/JOML
LWJGL Blogeintrag: https://blog.lwjgl.org/maths-library/
Zu empfehlende JOML Wikieinträge:
- https://github.com/JOML-CI/JOML/wiki/Common-Pitfalls
- https://github.com/JOML-CI/JOML/wiki/Migrating-from-LWJGL-2

EDIT: Ich empfehle dir auch, einmal https://lwjgl.org/customize einen Besuch abzustatten. Dort kannst du dir alles nötige zusammenstellen: 12468
 
Zuletzt bearbeitet:
Jesus Christ... ich hab dir doch vorhin ein GitHub Repository mit unzähligen Beispiel genannt. Desweiteren gibt es unfassbar viele GLFW Tutorials/Dokumentation und Ressourcen (wie z.B. die GLFW Dokumentation) ... mach doch bitte einmal die Augen auf.
 
aber nicht mehr so wie vorher
Code:
The method translate(Vector3fc, Matrix4f) in the type Matrix4f is not applicable for the arguments (Vector2f, Matrix4f, Matrix4f)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben