{"id":23119231,"url":"https://github.com/over-run/overrungl","last_synced_at":"2025-08-17T00:31:47.586Z","repository":{"id":64160500,"uuid":"524365086","full_name":"Over-Run/overrungl","owner":"Over-Run","description":"Overrun Game Library is a high-performance library implemented with Java 24, enables cross-platform access to a set of C library bindings, and provides some useful utilities.","archived":false,"fork":false,"pushed_at":"2025-08-15T07:38:47.000Z","size":19301,"stargazers_count":16,"open_issues_count":8,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T09:22:47.039Z","etag":null,"topics":["bindings","glfw","java","java-24","java24","openal","opengl","overrungl","project-panama","stb","vulkan"],"latest_commit_sha":null,"homepage":"https://over-run.github.io/overrungl/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Over-Run.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-13T10:20:34.000Z","updated_at":"2025-08-15T07:38:51.000Z","dependencies_parsed_at":"2024-01-05T13:44:48.710Z","dependency_job_id":"41e71fb8-25fc-494d-b376-b65af92c004a","html_url":"https://github.com/Over-Run/overrungl","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Over-Run/overrungl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Over-Run%2Foverrungl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Over-Run%2Foverrungl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Over-Run%2Foverrungl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Over-Run%2Foverrungl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Over-Run","download_url":"https://codeload.github.com/Over-Run/overrungl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Over-Run%2Foverrungl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270600637,"owners_count":24614250,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","glfw","java","java-24","java24","openal","opengl","overrungl","project-panama","stb","vulkan"],"created_at":"2024-12-17T05:32:13.805Z","updated_at":"2025-08-17T00:31:47.550Z","avatar_url":"https://github.com/Over-Run.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OverrunGL - Overrun Game Library\n\n![License](https://img.shields.io/github/license/Over-Run/overrungl)\n\n![Maven Central](https://img.shields.io/maven-central/v/io.github.over-run/overrungl)\n![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.over-run/overrungl?server=https%3A%2F%2Fs01.oss.sonatype.org)\n\n[![Java CI with Gradle](https://github.com/Over-Run/overrungl/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Over-Run/overrungl/actions/workflows/gradle.yml)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8279/badge)](https://www.bestpractices.dev/projects/8279)\n\n## Overview\n\n```java\nvoid main() {\n    // invoke native functions via static methods\n    glfwInit();\n    // use MemorySegment to represent memory addresses\n    MemorySegment window = glfwCreateWindow(\n        800, 600,\n        // use MemoryUtil::allocString to allocate string and manage by GC\n        MemoryUtil.allocString(\"Title\"),\n        MemorySegment.NULL,\n        MemorySegment.NULL\n    );\n    \n    int width, height;\n    // use MemoryStack for one-time and quick allocation\n    try (var stack = MemoryStack.pushLocal()) {\n        // use MemoryStack::alloc*Ptr to allocate memory\n        var pWidth = stack.allocIntPtr();\n        var pHeight = stack.allocIntPtr();\n        \n        glfwGetFramebufferSize(window, pWidth.segment(), pHeight.segment());\n        \n        // use accessors in *Ptr to read and write memory\n        width = pWidth.value();\n        height = pHeight.value();\n    }\n    \n    // for OpenGL, create instance of wrappers\n    var gl = new GL(GLFW::glfwGetProcAddress);\n    // invoke OpenGL functions via instance methods\n    gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);\n    // for Vulkan, load functions with GLFW\n    VK.create(GLFW::glfwGetInstanceProcAddress);\n}\n```\n\n## Introduction\n\nOverrun Game Library is a high-performance library implemented with Java 24,\nwhich enables cross-platform access to a set of C library bindings, providing various useful utilities.\n\n### Comparing with LWJGL 3\n\n[LWJGL 3](https://github.com/LWJGL/lwjgl3) is also a Java library that enables cross-platform access.\n\nLWJGL 3 uses JNI to access native functions, in OverrunGL, however,\nthe [FFM API](https://openjdk.org/jeps/454) is used, which makes the linking to native functions more convenient\nas well as providing better memory management.\n\n## Getting Started\n\nYou can check our [wiki](https://github.com/Over-Run/overrungl/wiki) or\nthe [samples](modules/samples/src/test/java/overrungl/demo).\n\nCheck [discussions](https://github.com/Over-Run/overrungl/discussions) in case you have trouble in setup works, such as environment configuring.\n\nFeel free to ask questions as long as you have searched in discussions and found no one had the same question.\n\n## Import as a Dependency\n\nWe provided a modules customizer [here](https://over-run.github.io/overrungl-gen/). The customizer is the recommended way to generate dependency declarations.\n\n- Platform Maven coordinate: `io.github.over-run:overrungl-bom`\n- Core module Maven coordinate: `io.github.over-run:overrungl`\n- For others: `io.github.over-run:overrungl-\u003cmodule-name\u003e`\n\nFor example:\n\n```kotlin\ndependencies {\n    implementation(platform(\"io.github.over-run:overrungl-bom:\u003cVERSION\u003e\"))\n    implementation(\"io.github.over-run:overrungl\")\n    implementation(\"io.github.over-run:overrungl-glfw\")\n    runtimeOnly(\"io.github.over-run:overrungl-glfw::natives-\u003cOS\u003e-\u003cARCH\u003e\")\n}\n```\n\n\u003c!--### Using -SNAPSHOT Versions\n\nWe publish `-SNAPSHOT` versions frequently.\n\nFor `-SNAPSHOT` versions, you can check\nthe [list of available versions](https://s01.oss.sonatype.org/content/repositories/snapshots/io/github/over-run/overrungl/maven-metadata.xml)\nand include this maven repository:\n\n```kotlin\nrepositories {\n    maven(\"https://s01.oss.sonatype.org/content/repositories/snapshots\")\n}\n```--\u003e\n\n### Enable native access\n\nYou must enable the access to restricted methods by adding a VM argument or a manifest attribute.\nThe customizer has already included this.\n\n```\n--enable-native-access=overrungl.core,...\n```\n\n## List of Supported Bindings\n\n### Khronos APIs\n\n| Library                                   | Description                                                                                                                                                                                                    |\n|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [OpenGL](https://www.khronos.org/opengl/) | The most widely adopted 2D and 3D graphics API in the industry, bringing thousands of applications to a wide variety of computer platforms.                                                                    |\n| [Vulkan](https://www.khronos.org/vulkan/) | A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms. |\n\n### Display and Input\n\n| Library                                                                          | Description                                                                                                                                                                                                                                |\n|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [GLFW](http://www.glfw.org/)                                                     | Create multiple windows, handle user input (keyboard, mouse, gaming peripherals) and manage contexts. Also features multi-monitor support, clipboard access, file drag-n-drop, and [much more](http://www.glfw.org/docs/latest/news.html). |\n| [Native File Dialog Extended](https://github.com/btzy/nativefiledialog-extended) | A small C library that portably invokes native file open, folder select and file save dialogs.                                                                                                                                             |\n\n### Audio\n\n| Library                                 | Description                                                                                                            |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------|\n| [OpenAL](https://www.openal.org/)       | A cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications. |\n| [OpenAL Soft](https://openal-soft.org/) | An LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API.                                  |\n\n### Graphics\n\n| Library                                                                                      | Description                                        |\n|----------------------------------------------------------------------------------------------|----------------------------------------------------|\n| [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) | Easy to integrate Vulkan memory allocation library |\n\n\n### [stb](https://github.com/nothings/stb) - single-file public domain libraries for C/C++\n\n| Library           | Description                                                                     |\n|-------------------|---------------------------------------------------------------------------------|\n| stb_easy_font     | Quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc.        |\n| stb_image         | Image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |\n| stb_image_resize2 | Resize images larger/smaller with good quality.                                 |\n| stb_image_write   | Image writing to disk: PNG, TGA, BMP                                            |\n| stb_perlin        | Revised Perlin noise (3D input, 1D output).                                     |\n| stb_rect_pack     | Simple 2D rectangle packer with decent quality.                                 |\n| stb_truetype      | Parse, decode, and rasterize characters from truetype fonts.                    |\n| stb_vorbis        | Decode ogg vorbis files from file/memory to float/16-bit signed output.         |\n\n### Other\n\n| Library                                 | Description                                           |\n|-----------------------------------------|-------------------------------------------------------|\n| [JOML](https://github.com/JOML-CI/JOML) | A Java math library for OpenGL rendering calculations |\n\n## Release Notes\n\nSee [doc/notes](doc/notes/README.md).\n\n## Additions\n\nThe latest Javadoc can be found [here](https://over-run.github.io/overrungl/).\n\n[//]: # (### Credits)\n\n[//]: # ([\u003cimg src=\"https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png\" alt=\"JetBrains Logo \u0026#40;Main\u0026#41; logo.\" width=\"128\" height=\"128\"\u003e]\u0026#40;https://jb.gg/OpenSourceSupport\u0026#41;)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fover-run%2Foverrungl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fover-run%2Foverrungl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fover-run%2Foverrungl/lists"}