为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 LWJGL 将 C++ OpenGL 代码与 Java 混合?

是否可以使用 LWJGL 将 C++ OpenGL 代码与 Java 混合?

沧海一幻觉 2022-03-10 10:51:19
我想做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();


查看完整回答
反对 回复 2022-03-10
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信