我想做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
提交
取消