我想做Java應用程序。使用 CEF3 庫。CEF 是在任何應用程序中嵌入 Google Chrome 瀏覽器的庫。而 LWJGL 用于用 Java 編寫 GL 代碼。但在使用 CEF 之前,基本問題是如何混合 C++ 和 Java。Java main 將 C++ 部分調用為 DLLC++ 部分創建窗口并設置 GL 上下文在消息循環中,C++ 再次回調 Java 部分以在 Java 中進行一些 GL 工作。以下測試代碼失敗并顯示消息:本機方法中的致命錯誤:線程 [main,5,main]:沒有當前上下文或調用了當前上下文中不可用的函數。JVM 將中止執行。在 org.lwjgl.opengl.GL11.glColor3f(Native Method)在 Main.run(Main.java:18)在 Main.cppmain(Native Method)在 Main.main(Main.java:10)可能是因為 Java 部分不知道 C++ 部分創建的 GL 上下文。我的問題是如何設置 GL 上下文以便 C++ 和 Java 都可以調用 GL 函數?主.javaimport org.lwjgl.opengl.GL11;public class Main implements Runnable { { System.loadLibrary("cppgl"); } public static void main(String[] args) { Main me = new Main(); me.cppmain(me); } private native void cppmain(Runnable callback); @Override public void run() { // callback from cpp GL11.glColor3f(1.0f, 0.0f, 1.0f); }}
1 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
在從 java 進行任何渲染之前,您應該在開始時調用一次。
// This line is critical for LWJGL's interoperation with GLFW's
// OpenGL context, or any context that is managed externally.
// LWJGL detects the context that is current in the current thread,
// creates the GLCapabilities instance and makes the OpenGL
// bindings available for use.
GL.createCapabilities();
添加回答
舉報
0/150
提交
取消