{"id":16752390,"url":"https://github.com/wumpf/glhelper","last_synced_at":"2025-04-10T15:53:00.465Z","repository":{"id":25100188,"uuid":"28521319","full_name":"Wumpf/glhelper","owner":"Wumpf","description":"Helper \u0026 thin abstraction classes for OpenGL 4.5","archived":false,"fork":false,"pushed_at":"2015-11-26T22:23:59.000Z","size":306,"stargazers_count":15,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-24T13:43:44.066Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/Wumpf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-26T21:12:33.000Z","updated_at":"2023-05-28T22:54:42.000Z","dependencies_parsed_at":"2022-08-23T19:01:03.919Z","dependency_job_id":null,"html_url":"https://github.com/Wumpf/glhelper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wumpf%2Fglhelper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wumpf%2Fglhelper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wumpf%2Fglhelper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wumpf%2Fglhelper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wumpf","download_url":"https://codeload.github.com/Wumpf/glhelper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248245627,"owners_count":21071529,"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","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":[],"created_at":"2024-10-13T02:46:52.181Z","updated_at":"2025-04-10T15:53:00.445Z","avatar_url":"https://github.com/Wumpf.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"glhelper\n========\n\nHelper \u0026amp; thin abstraction classes for OpenGL **4.5**.  \n_No compromises!_ Assumes full availability of direct state access, texture/buffer storage and so on.\n\nThis is **not** a complete API abstraction, rather a bunch of helper classes!\n\nPlatform/Programming Language\n--------\n* Makes heavy use of some C++11 stuff like enum class, initializer lists, variadic templates...\n* Should be platform independent but I only tested win x64 NVIDIA. \n\nDevelopment\n--------\nUsed in some personal (experimental!) projects. Functionallity is mostly extendend on personal necessity.  \nHowever, feedback from fellow OpenGL users is warmly welcome :) \nI am aware of the lack of unit tests. But since I lack time and motivation to write them, I just use the projects using this library as (bad-coverage) tests.\n\nContents\n--------\n* Shader abstraction\n  * File loading\n  * `#include` parsing \u0026 resolve\n  * Reflection via OpenGL functions (e.g. for uniform variable positions etc.)\n    * Info can be used to fill arbitrary memory\n  * \"hooks\" for reloading (very useful for recompile on file change)\n* Buffer\n  * Can be used as Vertex/Index/Uniform/ShaderStorage/IndirectDraw/IndirectDispatch -Buffer\n  * Memorizes creation information and bindings (avoids redundant ones)\n  * Various checks for wrapped functionallity\n* Persistent Ring-Buffer \n  * Helper class on top of buffer to provide an easy interface for a low driver overhead write-only ring buffer (\"AZDO style\")\n  * Warns automatically if GPU-CPU syncs happen\n* Vertex Array Object\n  * Comfortable abstraction for usage as vertex format declaration  \n    (possible using ARB_vertex_attrib_binding, which is Core in OpenGL 4.3)\n* Textures\n  * Memorizes creation information and bindings (avoids redundant ones)\n  * 2D, 3D, Views\n* TextureBufferView\n  * Wrapper for Buffer to use it as texture buffer\n* Sampler\n  * Simplified creation\n  * Reuse of already created sampler objects (all existing ones are hashed)\n* Framebuffer\n  * Easy creation from multiple textures\n* State Wrapping\n  * [Only glEnable/Disable so far]\n  * Redundant state change checking and enums\n* Error handling \u0026 Check mechanism\n* Wraps many OpenGL defines in enums to avoid invalid GL calls and provide an overview over all possibilities\n\nNotes on how to use\n--------\n* Not intended to be compiled into a library. Just add the code to the project and add your own glhelperconfig.hpp.  \n(just copy defaultconfig/glhelperconfig.hpp and change it according to your needs)  \n* Assumes that there is a OpenGL header \u003cGL/GL.h\u003e which defines everything that is needed (I use GLEW).  \n* Context creation etc. is (intentionally) up to the user!\n  * I recommend GLFW :)\n \nTodos\n--------\n(just notes, in no specific order)\n* multi bind-functions for vertex/index/uniform/shaderstorage buffers\n* better buffer destructor: Iterates currently over all possible bindings to update intern binding tables\n* add support for cube textures\n* add support for 2d texture arrays\n* add support for 3d texture arrays\n* add wrapper for drawing and viewport settings\n* add wrapper for glGet\n  * at least for constant device properties like texture size, UBO padding, ...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwumpf%2Fglhelper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwumpf%2Fglhelper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwumpf%2Fglhelper/lists"}