Fehler beim Imgui mit Maven

Nico1999

Aktives Mitglied
ich versuche ImGui für ein graphisches menü zu benutzen, dass über meiner simulation liegen soll.
ich bekomme diesen Fehler
Assertion failed: GImGui != __null && "No current context. Did you call ImGui::CreateContext() and ImGui::SetCurrentContext() ?", file /tmp/imgui/jni/imgui.cpp, line 3478
ich glaube das hängt mit der Maven dependency zusammen bin mir aber net sicher.
hier meine maven dependency dazu
Java:
 <dependency>
            <groupId>io.github.spair</groupId>
            <artifactId>imgui-java-binding</artifactId>
            <version>1.82.1</version>
        </dependency>
        <dependency>
            <groupId>io.github.spair</groupId>
            <artifactId>imgui-java-app</artifactId>
            <version>1.82.2</version>
        </dependency>
 

KonradN

Super-Moderator
Mitarbeiter
Frag doch mal ChatGPT :)

Der Fehler alleine weist Dich erst einmal auf die C++ Problematik hin:
This error message typically indicates that you are calling an ImGui function without having a current ImGui context. ImGui is a user interface library for C++, and it requires that you create a context and set it as the current context before you can use any of its functions.

To fix this error, you will need to make sure that you have called both ImGui::CreateContext() and ImGui::SetCurrentContext() before calling any other ImGui functions. These functions should be called once, at the beginning of your program, before you start using ImGui.

Here is an example of how you might do this:

Copy code
#include <imgui.h>

int main()
{
// Create an ImGui context.
ImGui::CreateContext();

// Set the current context.
ImGui::SetCurrentContext(ImGui::GetCurrentContext());

// Your program code here...

return 0;
}

If you are still having issues after making sure that you have called ImGui::CreateContext() and ImGui::SetCurrentContext(), it's possible that the context has been deleted or unset somehow. Make sure that you are not calling any functions that might delete the context or unset it as the current context.

Da Du aber die Java Bindings nutzt habe ich dann noch einmal java-imgui-bindings davor gesetzt:

It looks like you are using the java-imgui-bindings library, which is a Java binding for the ImGui C++ library. The error message you are seeing is similar to the one that you might see when using the C++ version of ImGui, but it is specific to the Java binding.

To fix this error, you will need to make sure that you have called both ImGui.createContext() and ImGui.setCurrentContext() before calling any other ImGui functions. These functions should be called once, at the beginning of your program, before you start using ImGui.

Here is an example of how you might do this:

Copy code
import org.iceburg.javaImGui.ImGui;

public class MyProgram {
public static void main(String[] args) {
// Create an ImGui context.
ImGui.createContext();

// Set the current context.
ImGui.setCurrentContext(ImGui.getCurrentContext());

// Your program code here...
}
}

If you are still having issues after making sure that you have called ImGui.createContext() and ImGui.setCurrentContext(), it's possible that the context has been deleted or unset somehow. Make sure that you are not calling any functions that might delete the context or unset it as the current context.

Ich habe imgui noch nie verwendet, aber das sieht bezüglich der Fehlermeldung erst einmal sehr einleuchtend aus.

Aber: Laut der Github Beschreibung muss man das nicht selbst aufrufen. Da hat man einen Aufbau wie:
Java:
import imgui.ImGui;
import imgui.app.Application;

public class Main extends Application {
    @Override
    protected void configure(Configuration config) {
        config.setTitle("Dear ImGui is Awesome!");
    }

    @Override
    public void process() {
        ImGui.text("Hello, World!");
    }

    public static void main(String[] args) {
        launch(new Main());
    }
}
Und da kümmert sich die launch Logik um alles:
Die Application class hat in der Dokumentation:

Life-cycle​

The entry point for ImGui applications is the Application class and launch(Application) method. It initializes application instance and starts the main application loop.

  1. configure(Configuration) It's called before window creation, so only basic application setups are expected.
  2. Window.initWindow(Configuration) Method creates application window.
  3. Window.initImGui(Configuration) Method initializes Dear ImGui context. Could be used to do Dear ImGui setup as well.
  4. preRun() Method called once, before application loop.
  5. Window.preProcess() Method called every frame, before Window.process().
  6. Window.process() Method is meant to be overridden with user application logic.
  7. Window.postProcess() Method called every frame, after Window.process().
  8. postRun() Method called once, after application loop.
  9. Window.disposeImGui() Destroys Dear ImGui context.
  10. Window.disposeWindow() Destroys application window.

Daher ist meine Frage: Hast Du denn launch aufgerufen? Oder hast Du Deine Applikation anders aufgebaut?
 

Nico1999

Aktives Mitglied
Frag doch mal ChatGPT :)
was ist damit gemeint ?

ich tue mir generell noch bissle schwer überhaupt mit maven

im tutorial steht auch das die dependency so aussehen sollen

Java:
<dependency>
   <groupId>io.github.spair</groupId>
   <artifactId>imgui-java-binding</artifactId>
   <version>${imgui-java.version}</version>
</dependency>
<dependency>
    <groupId>io.github.spair</groupId>
    <artifactId>imgui-java-${native.target}</artifactId>
    <version>${imgui-java.version}</version>
    <scope>runtime</scope>
</dependency>

allerdings funktiert dann maven nicht also ka was ich da tun soll.

also die klasse wo ich quasi Imgui benutze ist diese hier

Code:
package org.lwjglb.engine.graph;

import imgui.*;
import imgui.type.ImInt;
import org.joml.Vector2f;
import org.lwjglb.engine.*;
import org.lwjglb.engine.scene.Scene;

import java.nio.ByteBuffer;
import java.util.*;

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

public class GuiRender {

    private GuiMesh guiMesh;
    private Vector2f scale;
    private ShaderProgram shaderProgram;
    private Texture texture;
    private UniformsMap uniformsMap;

    public GuiRender(Window window) {
        List<ShaderProgram.ShaderModuleData> shaderModuleDataList = new ArrayList<>();
        shaderModuleDataList.add(new ShaderProgram.ShaderModuleData("src/main/resources/shaders/gui.vert", GL_VERTEX_SHADER));
        shaderModuleDataList.add(new ShaderProgram.ShaderModuleData("src/main/resources/shaders/gui.frag", GL_FRAGMENT_SHADER));
        shaderProgram = new ShaderProgram(shaderModuleDataList);
        createUniforms();
        createUIResources(window);
    }

    public void cleanup() {
        shaderProgram.cleanup();
        texture.cleanup();
    }

    private void createUIResources(Window window) {
        ImGui.createContext();//hier ist auf jeden fall das createContext

        ImGuiIO imGuiIO = ImGui.getIO();
        imGuiIO.setIniFilename(null);
        imGuiIO.setDisplaySize(window.getWidth(), window.getHeight());

        ImFontAtlas fontAtlas = ImGui.getIO().getFonts();
        ImInt width = new ImInt();
        ImInt height = new ImInt();
        ByteBuffer buf = fontAtlas.getTexDataAsRGBA32(width, height);
        texture = new Texture(width.get(), height.get(), buf);

        guiMesh = new GuiMesh();
    }

    private void createUniforms() {
        uniformsMap = new UniformsMap(shaderProgram.getProgramId());
        uniformsMap.createUniform("scale");
        scale = new Vector2f();
    }

    public void render(Scene scene) {
        IGuiInstance guiInstance = scene.getGuiInstance();//interface mit zwei methoden drawGui und handleGuiInput
        if (guiInstance == null) {
            return;
        }
        guiInstance.drawGui();

        shaderProgram.bind();

        glEnable(GL_BLEND);
        glBlendEquation(GL_FUNC_ADD);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glDisable(GL_DEPTH_TEST);
        glDisable(GL_CULL_FACE);

        glBindVertexArray(guiMesh.getVaoId());

        glBindBuffer(GL_ARRAY_BUFFER, guiMesh.getVerticesVBO());
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, guiMesh.getIndicesVBO());

        ImGuiIO io = ImGui.getIO();
        scale.x = 2.0f / io.getDisplaySizeX();
        scale.y = -2.0f / io.getDisplaySizeY();
        uniformsMap.setUniform("scale", scale);

        ImDrawData drawData = ImGui.getDrawData();
        int numLists = drawData.getCmdListsCount();
        for (int i = 0; i < numLists; i++) {
            glBufferData(GL_ARRAY_BUFFER, drawData.getCmdListVtxBufferData(i), GL_STREAM_DRAW);
            glBufferData(GL_ELEMENT_ARRAY_BUFFER, drawData.getCmdListIdxBufferData(i), GL_STREAM_DRAW);

            int numCmds = drawData.getCmdListCmdBufferSize(i);
            for (int j = 0; j < numCmds; j++) {
                final int elemCount = drawData.getCmdListCmdBufferElemCount(i, j);
                final int idxBufferOffset = drawData.getCmdListCmdBufferIdxOffset(i, j);
                final int indices = idxBufferOffset * ImDrawData.SIZEOF_IM_DRAW_IDX;

                texture.bind();
                glDrawElements(GL_TRIANGLES, elemCount, GL_UNSIGNED_SHORT, indices);
            }
        }

        glEnable(GL_DEPTH_TEST);
        glEnable(GL_CULL_FACE);
        glDisable(GL_BLEND);
    }

    public void resize(int width, int height) {
        ImGuiIO imGuiIO = ImGui.getIO();
        imGuiIO.setDisplaySize(width, height);
    }
}

sry das dass jetzt ein bissle lang geworden ist
 

KonradN

Super-Moderator
Mitarbeiter
Also dieses ChatGPT findet sich unter https://chat.openai.com/chat - falls Du das auch etwas ausprobieren willst.

Das entscheidende ist nicht der Code dort sondern wie Du die Applikation Initialisierst. Eine Applikation muss richtig initialisiert werden!

Dazu dient der launch Aufruf bei Application - Hast Du beim Start genau so eine Konstellation?

Wenn nicht, dann wäre die nächste Frage: Stellst Du sicher, dass der Context initialisiert wurde? Die Aufrufe hat ja ChatGPT gezeigt, die da notwendig sind.

Ersteres wäre die typische Applikation mit der Library. Das mit der manuellen initialisierung ist nur, wenn die UI an eine bestehende Applikation dran kommen soll (wieso auch immer).
 

Nico1999

Aktives Mitglied
das mit der Applikation benutze ich nicht ich benutze auch nicht in irgenteiner Form extends Applikation

das hier ist meine init () methode in der Main (bin mir nicht sicher ob das gemeint ist)

Java:
 @Override
    public void init(Window window, Scene scene, Render render) {
        Model cubeModel = ModelLoader.loadModel("cube-model",
                "src/main/resources/models/cube/cube.obj", scene.getTextureCache());
        scene.addModel(cubeModel);

        cubeEntity = new Entity("cube-entity", cubeModel.getId());
        cubeEntity.setPosition(0,0,-2);
        scene.addEntity(cubeEntity);
    }
Es wäre ganz gut zu wissen ob ich das mit den Maven richtig gemacht habe weil, da denke ich liegt dann der Fehler.

Es stehen bei der Ai sache jetzt so dinge wie codecompletion und textcompletion, aber das macht doch eh schon die IDEA ?

und warum funktiert das was die letze Maven dependency nicht die oben gezeigt habe das mit den {} klammern
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Dann fehlt Dir die Initialisierung von imgui und daher kommt der Fehler.

Da wäre der Versuch, vorab einmal die folgenden Zeilen auszuführen:
Java:
ImGui.createContext();
ImGui.setCurrentContext(ImGui.getCurrentContext());

Damit wird der Fehler hoffentlich verschwinden.

Es wäre ganz gut zu wissen ob ich das mit den Maven richtig gemacht habe weil, da denke ich liegt dann der Fehler.
Dann würdest Du beim bauen Fehler bekommen. Das ist aber doch wohl nicht der Fall. Bei dem Ausschnitt
XML:
<dependency>
   <groupId>io.github.spair</groupId>
   <artifactId>imgui-java-binding</artifactId>
   <version>${imgui-java.version}</version>
</dependency>
<dependency>
    <groupId>io.github.spair</groupId>
    <artifactId>imgui-java-${native.target}</artifactId>
    <version>${imgui-java.version}</version>
    <scope>runtime</scope>
</dependency>
musst Du auch eine Property imgui-java.version mit der zu nutzenden Version definieren. Evtl. hast Du das beim Eintragen nicht beachtet?

Aber Du scheinst das ja irgendwie gelöst zu haben, denn sonst wärst Du nicht auf den Laufzeitfehler gestoßen.

Es stehen bei der Ai sache jetzt so dinge wie codecompletion und textcompletion, aber das macht doch eh schon die IDEA ?
Da müsstest Du genauer sagen, wo das wie steht. Irgendwie sehe ich das nicht.
 

Nico1999

Aktives Mitglied
Dann würdest Du beim bauen Fehler bekommen. Das ist aber doch wohl nicht der Fall. Bei dem Ausschnitt
XML:
<dependency>
   <groupId>io.github.spair</groupId>
   <artifactId>imgui-java-binding</artifactId>
   <version>${imgui-java.version}</version>
</dependency>
<dependency>
    <groupId>io.github.spair</groupId>
    <artifactId>imgui-java-${native.target}</artifactId>
    <version>${imgui-java.version}</version>
    <scope>runtime</scope>
</dependency>
doch dann bekomme ich einen bauen fehler bei der implementation daher habe ich irgentwie im web gesucht und hab das dann so gemacht

hiermit bekomme ich keinen Fehler allerdings bin ich mir auch net sicher ob ich dann das richtige benutzt habe

Java:
<dependency>
            <groupId>io.github.spair</groupId>
            <artifactId>imgui-java-binding</artifactId>
            <version>1.82.1</version>
        </dependency>
        <dependency>
            <groupId>io.github.spair</groupId>
            <artifactId>imgui-java-app</artifactId>
            <version>1.82.2</version>
        </dependency>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
K Applet Fehler beim Starten Tools - Maven, Gradle, Ant & mehr 12
J Fehler beim Parsen von web.xml mit web-app 2.5 Tools - Maven, Gradle, Ant & mehr 2
D Fehler beim Applet laden! Tools - Maven, Gradle, Ant & mehr 9
I Fehler beim Signieren der JAR Dateien für Webstart Tools - Maven, Gradle, Ant & mehr 1
G Fehler beim Laden des Applets Tools - Maven, Gradle, Ant & mehr 7
R fehler beim übernehmen von applets Tools - Maven, Gradle, Ant & mehr 3
G Eclipse wirft Fehler trotzalledem dass die pom richtig durchläuft Tools - Maven, Gradle, Ant & mehr 2
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
R Maven Fehler im pom.xml Tools - Maven, Gradle, Ant & mehr 0
T Applet Applet und IText wirft Incompatible magic value 1008813135 Fehler Tools - Maven, Gradle, Ant & mehr 6
H Maven M2E - keine Syntaxprüfung, Fehler, etc... Tools - Maven, Gradle, Ant & mehr 2
B ANT soll Fehler ignorieren Tools - Maven, Gradle, Ant & mehr 6
T Maven Build-Fehler, NoClassDefFoundError Exception Tools - Maven, Gradle, Ant & mehr 5
Z Maven Fehler Tools - Maven, Gradle, Ant & mehr 3
S Fehler im IE, aber nicht in der IDE - wie finden? Tools - Maven, Gradle, Ant & mehr 6
A Fehler bei Junit Tests über Ant Tools - Maven, Gradle, Ant & mehr 2
S Fehler in einem Upload - Applet (nicht gelöst!!) Tools - Maven, Gradle, Ant & mehr 2
C Webstart Fehler (verifizierung) nach update auf 1.5 Tools - Maven, Gradle, Ant & mehr 4
H Spracherkennung mit Applet / Policy bzw. Security Fehler Tools - Maven, Gradle, Ant & mehr 2
M WebStart Verknüpfung reinstalliert sich - Fehler in JNLP? Tools - Maven, Gradle, Ant & mehr 4
O Browser inkompatiblität des Applet oder anderer Fehler? Tools - Maven, Gradle, Ant & mehr 4
T jnlp-Datei: Fehler in Zeile 0? Tools - Maven, Gradle, Ant & mehr 6
M Browser Fehler bei Applet: java.security.AccessControl. Tools - Maven, Gradle, Ant & mehr 6
G Fehler bei Math.signum(.) Tools - Maven, Gradle, Ant & mehr 2
V schon wieder.applet geht nicht (Fehler: not found) Tools - Maven, Gradle, Ant & mehr 10
G Ein undefinierbarer Fehler. Tools - Maven, Gradle, Ant & mehr 7
B Java Fehler, weiß aber nicht wie er behoben wird. :'( Tools - Maven, Gradle, Ant & mehr 10
M Java applet fehler Tools - Maven, Gradle, Ant & mehr 2
C jar Fehler? Text wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 11
K Java Applet mit Lauftext, kleiner Fehler? Tools - Maven, Gradle, Ant & mehr 6
M Fehler im Aplplet! Nur wo? Tools - Maven, Gradle, Ant & mehr 6
J Fehler bein Ausführen von Applets in JBuilder Tools - Maven, Gradle, Ant & mehr 6
T HTTP 504 Fehler bei DataInputStream Tools - Maven, Gradle, Ant & mehr 17
F Applet bring Fehler im Browser Tools - Maven, Gradle, Ant & mehr 2
G Webcam läuft nur bis Java VM 1.4 ab 1.5 gibts fehler Tools - Maven, Gradle, Ant & mehr 2
R LiveConnect find den fehler net Tools - Maven, Gradle, Ant & mehr 7
C Fehler bei Drucken im Applet Tools - Maven, Gradle, Ant & mehr 3
T Fehler in Uhrzeitapplet (vor ein paar tagen gings noch) Tools - Maven, Gradle, Ant & mehr 19
B Fehler - Applet notinited in nicht IE 6 Browsers Tools - Maven, Gradle, Ant & mehr 3
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
H Problem beim Verschieben der main-class -> A jni error has occured, please check... Tools - Maven, Gradle, Ant & mehr 9
pkm Beim Deployen wird ein Package nicht gefunden, obwohl aus Buildpath. Tools - Maven, Gradle, Ant & mehr 0
X Maven Dependencies beim install mit in die Jar einbinden Tools - Maven, Gradle, Ant & mehr 6
E Maven Probleme beim Arquillian Deployen Tools - Maven, Gradle, Ant & mehr 0
B Webstart Java Webstart hängt sich beim Laden auf! Tools - Maven, Gradle, Ant & mehr 8
P Classpath beim Ausführen eines SQL-Scripts per ANT angeben Tools - Maven, Gradle, Ant & mehr 2
E Ant Beim zusammenfassen von CSV-Dateien nur bestimmt spalten auswählen Tools - Maven, Gradle, Ant & mehr 27
F Problem beim Kompilieren ohne IDE Tools - Maven, Gradle, Ant & mehr 5
P Maven Download-Probleme beim Build Tools - Maven, Gradle, Ant & mehr 5
S Webstart Problem beim Start von Webstart Tools - Maven, Gradle, Ant & mehr 4
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
newcron Applet Keine warnung beim starten von Applets, die auf die HD zugreifen? Tools - Maven, Gradle, Ant & mehr 2
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
reibi Maven : Resourcen NICHT mit einbinden beim Builden Tools - Maven, Gradle, Ant & mehr 10
E Verzögerung beim Refresh (F5) mit einem Applet verursachen Tools - Maven, Gradle, Ant & mehr 16
T beim Kompilieren änderungen vornehmen Tools - Maven, Gradle, Ant & mehr 5
G Frage zur JARs beim deployen Tools - Maven, Gradle, Ant & mehr 5
S Ladebalken beim laden des Applets Tools - Maven, Gradle, Ant & mehr 9
G Problem beim deployen eines Applets Tools - Maven, Gradle, Ant & mehr 8
C JApplet soll beim Aufruf nicht neustarten Tools - Maven, Gradle, Ant & mehr 3
M Code ausführen beim Browser schließen / Alternative zu stop? Tools - Maven, Gradle, Ant & mehr 5
J Problem beim schreibenden Dateizugriff Tools - Maven, Gradle, Ant & mehr 7
H Applet Access Denied - Beim zugriff auf eine .txt Datei Tools - Maven, Gradle, Ant & mehr 8
G Browser stürtzt beim Appletaufruf ab Tools - Maven, Gradle, Ant & mehr 2
U Probleme beim Reloaden des Applets im Browser Tools - Maven, Gradle, Ant & mehr 9
D E/A-Ausnahme beim lesen (Applet will nicht starten) Tools - Maven, Gradle, Ant & mehr 3
P Problem beim Senden einer Datei Tools - Maven, Gradle, Ant & mehr 5
M Applet startet beim zweiten Aufruf nicht mehr? Tools - Maven, Gradle, Ant & mehr 4
A Probleme beim Anzeigen des Applets Tools - Maven, Gradle, Ant & mehr 5
saxos1983 Fehlerüberprüfung beim Laden von Bilder Tools - Maven, Gradle, Ant & mehr 3
Y falsches password beim signieren von applet Tools - Maven, Gradle, Ant & mehr 4
H Probleme beim Applet signieren Tools - Maven, Gradle, Ant & mehr 10
S Access Denied beim Bild laden Tools - Maven, Gradle, Ant & mehr 7
R access denied beim Java Applet Tools - Maven, Gradle, Ant & mehr 5
D Problem beim einbinden von jar und class datei Tools - Maven, Gradle, Ant & mehr 8
S Informationen beim Benutzer ablegen Tools - Maven, Gradle, Ant & mehr 4
P Eclipse Problem beim JAR-erstellen Tools - Maven, Gradle, Ant & mehr 5
A access denied beim anzeigen von Bildern Tools - Maven, Gradle, Ant & mehr 2
G Wie überprüft man beim Image ob es geklickt wurde? Tools - Maven, Gradle, Ant & mehr 9
D problem beim auslesen von text aus einem textfeld... Tools - Maven, Gradle, Ant & mehr 15
E Card beim CardLayoutManager mit paint() bemalen??? Tools - Maven, Gradle, Ant & mehr 4
R Code beim Beenden eines Applets ausführen? Tools - Maven, Gradle, Ant & mehr 1

Ähnliche Java Themen

Neue Themen


Oben