All Projects → acdemiralp → Gl

acdemiralp / Gl

Licence: bsl-1.0
Header-only C++17 wrapper for OpenGL 4.6 Core Profile.

Programming Languages

cpp11
221 projects

Projects that are alternatives of or similar to Gl

Gl4es
GL4ES is a OpenGL 2.1/1.5 to GL ES 2.0/1.1 translation library, with support for Pandora, ODroid, OrangePI, CHIP, Raspberry PI, Android, Emscripten and AmigaOS4.
Stars: ✭ 333 (+131.25%)
Mutual labels:  wrapper, opengl
Tinyengine
Tiny OpenGL Wrapper / 3D Engine in C++
Stars: ✭ 251 (+74.31%)
Mutual labels:  wrapper, opengl
Pyglfw
Python bindings for GLFW
Stars: ✭ 136 (-5.56%)
Mutual labels:  opengl
Forge
High Performance Visualization
Stars: ✭ 140 (-2.78%)
Mutual labels:  opengl
Ore Infinium
Ore Infinium, Open Source multiplayer Terraria-inspired Sci-fi game, focused on technology, devices and researching. Written in Kotlin (JVM), LibGDX. Cross platform
Stars: ✭ 139 (-3.47%)
Mutual labels:  opengl
Mailjet Apiv3 Nodejs
[API v3] Official Mailjet API v3 NodeJS wrapper
Stars: ✭ 137 (-4.86%)
Mutual labels:  wrapper
Serpent
Cross-platform gaming kit in the D programming language
Stars: ✭ 140 (-2.78%)
Mutual labels:  opengl
Galacritty
WIP GTK terminal emulator based on Alacritty
Stars: ✭ 136 (-5.56%)
Mutual labels:  opengl
Gl vk threaded cadscene
OpenGL and Vulkan comparison on rendering a CAD scene using various techniques
Stars: ✭ 143 (-0.69%)
Mutual labels:  opengl
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-4.17%)
Mutual labels:  opengl
Androidcamera
🔥🔥🔥自定义Android相机(仿抖音 TikTok),其中功能包括视频人脸识别贴纸,美颜,分段录制,视频裁剪,视频帧处理,获取视频关键帧,视频旋转,添加滤镜,添加水印,合成Gif到视频,文字转视频,图片转视频,音视频合成,音频变声处理,SoundTouch,Fmod音频处理。 Android camera(imitation Tik Tok), which includes video editor,audio editor,video face recognition stickers, segment recording,video cropping, video frame processing, get the first video frame, key frame, v…
Stars: ✭ 2,112 (+1366.67%)
Mutual labels:  opengl
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+1387.5%)
Mutual labels:  opengl
Asana Api Php Class
A dependency free, lightweight PHP class that acts as wrapper for Asana API. Lets make things fast and easy! :)
Stars: ✭ 137 (-4.86%)
Mutual labels:  wrapper
Ytdlrc
☁️ Downloads videos and metadata with youtube-dl and moves each file on completion to an rclone remote
Stars: ✭ 140 (-2.78%)
Mutual labels:  wrapper
Python Twitch Client
Python wrapper for Twitch API
Stars: ✭ 137 (-4.86%)
Mutual labels:  wrapper
Heed
A fully typed LMDB/MDBX wrapper with minimum overhead
Stars: ✭ 142 (-1.39%)
Mutual labels:  wrapper
Daemon
The Dæmon game engine. With some bits of ioq3 and XreaL.
Stars: ✭ 136 (-5.56%)
Mutual labels:  opengl
Awesome Android Ndk
🔥 全面深入地掌握NDK技术,成为下一波5G时代的浪潮儿~
Stars: ✭ 138 (-4.17%)
Mutual labels:  opengl
Libvdpau Va Gl
VDPAU driver with OpenGL/VAAPI backend
Stars: ✭ 139 (-3.47%)
Mutual labels:  opengl
Nimble
An OpenGL renderer with a modern and extensible rendering pipeline.
Stars: ✭ 144 (+0%)
Mutual labels:  opengl

GL

Complete C++17 wrapper for OpenGL 4.6 Core Profile.


Dependencies

  • OpenGL
  • GLEW
  • CUDA (optional, for interoperation support)

Building

  • Follow the cmake build process for locating the dependencies.
  • Toggle CUDA_INTEROP_SUPPORT for CUDA interoperation support. Note that the build will ask for the location of Cuda upon enabling this option.

Getting Started

Creating and uploading data to buffers:

#include <gl/all.hpp>

void buffer_example()
{
  gl::buffer buffer;
  
  std::vector<float> vertices(32);
  buffer.set_data(sizeof(float) * vertices.size(), vertices.data());
}

Creating and uploading data to textures:

#include <gl/all.hpp>

void texture_example()
{
  gl::texture_1d texture_1d;
  texture_1d.set_min_filter(GL_LINEAR);
  texture_1d.set_mag_filter(GL_LINEAR);
  texture_1d.set_wrap_s    (GL_CLAMP );
  
  std::array<float, 32> scalars;
  texture_1d.set_storage   (0, GL_RGBA, sizeof(float) * scalars.size());
  texture_1d.set_sub_image (0, 0, scalars.size(), GL_RGBA, GL_FLOAT, scalars.data());
}

Creating shaders and attaching them to programs:

#include <gl/all.hpp>

void shader_program_example()
{
  gl::shader vert_shader(GL_VERTEX_SHADER);
  vert_shader.load_source("vert_example.glsl");

  gl::shader frag_shader(GL_FRAGMENT_SHADER);
  frag_shader.load_source("frag_example.glsl");

  gl::program program;
  program.attach_shader(vert_shader);
  program.attach_shader(frag_shader);
  program.link();
  program.use();
  program.set_uniform(program.uniform_location("example_uniform"), 42);
  program.unuse();
}

Extensions

For adding GLM support to type-inferring uniform variable setters of the shader program, simply #include <gl/auxiliary/glm_uniforms.hpp>.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].