【问题标题】:Does adding Android jars to a jogl or Java 3d project cause problems?将 Android jar 添加到 jogl 或 Java 3d 项目会导致问题吗?
【发布时间】:2017-12-15 21:37:46
【问题描述】:

我重建了一个我曾经在旧 Mac 上运行的项目并添加了 Android jar,因为我想在将来迁移到该项目并在项目中对其进行测试。程序执行,但 Swing 应用程序、JOGL 和 Java 3D 程序不再打开或渲染。可能有连续的过程。他们会执行还是有什么问题。

【问题讨论】:

    标签: java android swing jogl java-3d


    【解决方案1】:

    通过添加 Android jar,我假设您是指 Android SDK。将这些添加到 Java 项目破坏为 Java != Android。 (这部分在聊天和提问中已经讨论过无数次了,JDK和Android SDK不一样,字节码不同等等)

    Swing 在 Android 中不存在。 Java3D1 也没有。 Android 依赖于嵌入式 OpenGL ES 支持、框架(例如 LibGDX)、引擎(例如 Unity)或类似 LWJGL 的东西来访问 OpenGL API。请注意,Android 运行 OpenGL ES,它基本上是一个轻量级的 OpenGL(API 较少是一个区别)

    JOGL 确实支持 Android,而且看起来更容易转换,因为 API 没有分开

    另外,与Java相比,android有一个完全不同的系统。例如,有活动,不使用主要方法,有布局(.xml 或创建 View 对象的新实例,例如 SurfaceView 或 GLSurfaceView,但按钮也可以工作)

    我的观点是,如果你想将桌面 OpenGL 项目转换为 Android,由于主要的 API 差异,你必须重新编写大部分项目。

    因此,除非您采取措施使其可在 Android 上运行,否则它们不会执行。而且你最好开始一个新项目,以确保你获得了一个 Android 项目所需的所有依赖项(sdk 是一回事,但还有清单、gradle 插件等)

    1:Java3D 对 Android 有一些支持,但还不是功能齐全的 API

    【讨论】:

    • 很抱歉与您矛盾,但 Java3D 1.7.0 有一些 Android 支持(由我们的新维护者 Phil 实现)。 JOGL 在“桌面 API”和 Android 之间没有强分离,它有自己的 OpenGL ES 绑定,唯一的主要区别是使用专用活动。制作两个单独的项目以区分 Android 和其他支持的平台是可行的方法,但您仍然可以制作第三个项目,两者的父项目,以存储公共源代码,这是使用 JOGL 的主要兴趣以我的拙见,在 Android 项目中。
    • @gouessej 所以 JOGL 有非独立的绑定,而 Java3D 有一个几乎不能正常工作的绑定。仍然没有改变它的制作方式存在差异的事实
    • JOGL 2 有自己的名为 NEWT 的窗口工具包,它不需要 AWT,它是 Android 下的优秀候选者,因为不支持 AWT(Swing 也是,我同意你的观点)。它允许编写在桌面和嵌入式环境下运行的 OpenGL ES 代码。在我看来,必须使用不同的 API 与 OpenGL ES 和 JOGL 交互是没有意义的,甚至包含 OpenGL 和 OpenGL ES 都支持的一些函数子集,例如 com.jogamp.opengl.GL2ES2。
    • 我的观点是,如果您想将桌面 OpenGL 项目转换为 Android,并且如果您将 NEWT 与 OpenGL 和 OpenGL ES 的公共子集一起使用,您仍然需要为特定于操作系统的源创建单独的项目代码为 JVM != Dalvik Virtual Machine / Android RunTime 但您仍然可以保持与操作系统无关的源代码不变。仅当大多数代码使用仅受 Java 而不是 Android 支持的 API 时,“您必须重写其中的大部分内容”才是正确的。我不否认 Java 和 Android 使用不同的工具集、打包方法等......
    • 也许这篇文章有帮助:forum.jogamp.org/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2019-08-16
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多