lwjgl3 发布版本: LWJGL 3.1.6

3.1.5以来的变化:

绑定

  • bgfx:已更新至API版本59(高于55)
  • glfw:已更新至预发布3.3.0版本(高于3.3.0预发布版本): 支持锁定键修饰符(GLFW_LOCK_KEY_MODS输入模式,GLFW_MOD_CAPS_LOCKGLFW_MOD_NUM_LOCK) 支持字符串窗口提示(glfwWindowHintStringGLFW_COCOA_FRAME_NAMEGLFW_X11_CLASS_NAMEGLFW_X11_INSTANCE_NAME) 支持显示器&操纵杆用户ponters(glfwSetMonitorUserPointerglfwGetMonitorUserPointerglfwSetJoystickUserPointerglfwGetJoystickUserPointer) 支持窗口内容比例回调(glfwSetWindowContentScaleCallback) *支持游标悬停测试(GLFW_HOVERED)

  • lz4:更新至1.8.1(高于1.8.0)

  • Nuklear:更新至3.00.2(高于2.00.4)
  • OpenVR:已更新至1.0.12(高于1.0.10)
  • rpmalloc:已更新至1.2.2(从1.2.0开始)
  • stb 更新stb_dxt为1.08b(从1.0.7上升) stb_image更新为2.18(从2.16增加) 更新stb_image_write为1.08(从1.07上升) STBIW_ZLIB_COMPRESS可以在运行时用stbi_zlib_compress覆盖。

    stb_truetype更新为1.18(从1.17开始) stb_vorbis更新为1.13b(从1.11开始)

  • tinyfiledialogs:已更新至3.2.9(从3.2.4开始)

  • Vulkan:已更新至1.0.68(高于1.0.65)
  • xxhash:已更新至0.6.4(高于0.6.3)
  • Zstd:已更新至1.3.4(从1.3.2开始) *瑜伽:更新至1.9.0(高于1.7.0)

改进

为核心和所有绑定添加了JSR-305空性注释。 (#344) 启用静态分析工具(FindBugs,IDEs)来检测可能导致NullPointerException的访问。消除这些改善了LWJGL应用程序的质量。 *使用内置无效安全功能的基于JVM的语言实现更好的互操作性。例如,请参阅Kotlin的JSR-305支持

*增加了配置设置来禁用功能查找检查。

  • lmdb:数据库现在在32位和64位体系结构中是二进制兼容的。 (#364) *在32位版本中启用了MDB_VL32

  • par_shapes:修补以支持32位索引和极其密集的网格。

  • stb_truetype:高级字形包装定制的内部结构的暴露成员。 (#358)
  • Tootle:现在支​​持Direct3D光栅化器进行透支优化。

修复

  • JPMS:原生模块现在需要传递相应的Java模块,而不是相反。 (#334) *启用从非模块化路径/ JAR加载共享库。

  • JPMS:module-info文件已经在META-INF / version / 9 /(#334) *所有LWJGL工件现在都是多版本的JAR文件,以避免使用与Java 9不兼容的旧工具的麻烦。

  • JPMS:添加了适当的“需要静态”声明以满足可选绑定互操作依赖关系。 (#369) *修正所有绑定中的javadoc链接损坏。还更新了URL以避免重定向。

  • bgfx:已恢复的默认API线程编码器函数,在3.1.4中被错误地删除。
  • LibOVR:修复了ovr_TraceMessage签名。
  • OpenAL:“AL_SOFT_source_resampler”扩展名的固定功能名称。
  • Tootle:修复了pnClusterRemapOut参数验证。

打破变化

以前接受null /NULL并返回null的几个方法现在需要非null输入。 适用于:struct&callback创建方法和memByteBuffer /memUTF8 /stack.UTF8 / etc。 添加了相应的方法,使用Safe后缀来接受null /NULL,匹配旧的行为。 通过这种更改,常见情况(非空输入)不需要更改代码,并且无警告/无错误。罕见的情况(空输入)是可识别的(后缀),必须妥善处理以消除警告/错误。

在分配失败时返回null /NULL的分配方法,现在抛出OutOfMemoryError。这与“ByteBuffer.allocateDirect”的行为相匹配。 适用于:struct分配方法和memAlloc /memCalloc / etc。 *不适用于通过直接绑定调用分配(例如LibCStdlib.malloc)。

当结构实例未初始化时,不应该返回null的struct成员的Getters永远不应该是NULL,而是抛出'NullPointerException`。 使用Struct :: isNull来测试不受信任的结构实例的指针成员。

  • bgfx:恢复了bgfx_init(_vendorId)bgfx_update_texture_cube(_side)参数的本地映射。 (#368)
  • bgfx:uint16_t位域常量现在映射到int。 (#368)
  • glfw:glfwInitHintString已被重命名为glfwWindowHintString
  • lmdb:必须重新创建在32位体系结构上开发的数据库。 (#364)
  • par_shapes:将par_shapes_mesh :: trianglesuint16_t / ShortBuffer改为uint32_t / IntBuffer
  • stb_rect_pack:stbrp_rect :: was_packed现在映射到Javaboolean