learn-opengl-golang - Learn OpenGL Tutorials in Go

  •        38

This is setup has only been tested on macOS. I am currently working with the 4.1 core profile on macOS, which is the latest version that ships with it. I didn't want to delve into upgrading that manually. I figured I would get linux machine at a later time if I needed to use newer features in the API. The nice thing about go-gl is that you can install multiple profiles and write different programs targeting different version of OpenGL.

https://github.com/raedatoui/learn-opengl-golang

Tags
Implementation
License
Platform

   




Related Projects

GLM - OpenGL Mathematics (GLM)

  •    C++

OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications. GLM provides classes and functions designed and implemented with the same naming conventions and functionality than GLSL so that anyone who knows GLSL, can use GLM as well in C++.

OpenGL - OpenGL 3 and 4 with GLSL

  •    C

OpenGL 3 and 4 with GLSL

OpenGL Mathematics (GLM)

  •    C++

OpenGL Mathematics (GLM) is a C++ mathematics library for 3D software based on the OpenGL Shading Language (GLSL) specification.

vispy - Main repository for Vispy

  •    Python

If you're in the first category, you can already start using VisPy. VisPy offers a Pythonic, NumPy-aware, user-friendly interface for OpenGL ES 2.0 called gloo. You can focus on writing your GLSL code instead of dealing with the complicated OpenGL API - VisPy takes care of that automatically for you. If you're in the second category, we're starting to build experimental high-level plotting interfaces. Notably, VisPy now ships a very basic and experimental OpenGL backend for matplotlib.

raylib - A simple and easy-to-use library to learn videogames programming

  •    C

raylib is a simple and easy-to-use library to learn videogames programming. raylib is highly inspired by Borland BGI graphics lib and by XNA framework and it's specially well suited for prototyping, tooling, graphical applications, embedded systems and education.


glbinding - A C++ binding for the OpenGL API, generated using the gl.xml specification.

  •    C++

glbinding is a cross-platform C++ binding for the OpenGL API. glbinding leverages modern C++11 features like enum classes, lambdas, and variadic templates, instead of relying on macros; all OpenGL symbols are real functions and variables. It provides type-safe parameters, per feature API header, lazy function resolution, multi-context and multi-thread support, global and local function callbacks, meta information about the generated OpenGL binding and the OpenGL runtime, as well as tools and examples for quick-starting your projects. Based on the OpenGL API specification (gl.xml) glbinding is generated using python scripts and templates that can be easily adapted to fit custom needs.

angle - A conformant OpenGL ES implementation for Windows, Mac and Linux.

  •    C++

The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support.ANGLE v1.0.772 was certified compliant by passing the ES 2.0.3 conformance tests in October 2011. ANGLE also provides an implementation of the EGL 1.4 specification.

globjects - C++ library strictly wrapping OpenGL objects.

  •    C++

globjects is a cross-platform C++ wrapper for OpenGL API objects. globjects provides object-oriented interfaces to the OpenGL API (3.0 and higher). It reduces the amount of OpenGL code required for rendering and facilitates coherent OpenGL use by means of an additional abstraction layer to glbinding and GLM. Common rendering tasks and processes are automated and missing features of specific OpenGL drivers are partially simulated or even emulated at run-time.

OpenGL Software Development Kit

  •    C++

The Unofficial OpenGL SDK is a collection of utility libraries designed to make it easy to learn the exciting world of 3D programming with the OpenGL library. This project is not associated with The Khronos Group.

glsl-optimizer - GLSL optimizer based on Mesa's GLSL compiler

  •    C++

A C++ library that takes GLSL shaders, does some GPU-independent optimizations on them and outputs GLSL or Metal source back. Optimizations are function inlining, dead code removal, copy propagation, constant folding, constant propagation, arithmetic optimizations and so on. Apparently quite a few mobile platforms are pretty bad at optimizing shaders; and unfortunately they also lack offline shader compilers. So using a GLSL optimizer offline before can make the shader run much faster on a platform like that. See performance numbers in this blog post.

webgl-fundamentals - WebGL lessons that start with the basics

  •    HTML

This is a series of lessons or tutorials about WebGL. Unlike most WebGL lessons these are not based off of OpenGL. OpenGL is 20 years old. The lessons of OpenGL don't match well with WebGL. The APIs have changed too much. The ideas of OpenGL and OpenGL tutorials are out of date with WebGL, OpenGL ES 2.0 and the land of shaders.

webgl2-fundamentals - WebGL 2 lessons starting from the basics

  •    HTML

This is a series of lessons or tutorials about WebGL2. Unlike most WebGL lessons these are not based off of OpenGL. OpenGL is 20 years old. The lessons of OpenGL don't match well with WebGL. The APIs have changed too much. The ideas of OpenGL and OpenGL tutorials are out of date with WebGL, OpenGL ES 3.0 and the land of shaders.

GPUImage3 - GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal

  •    Swift

GPUImage 3 is the third generation of the GPUImage framework, an open source project for performing GPU-accelerated image and video processing on Mac and iOS. The original GPUImage framework was written in Objective-C and targeted Mac and iOS, the second iteration rewritten in Swift using OpenGL to target Mac, iOS, and Linux, and now this third generation is redesigned to use Metal in place of OpenGL. The objective of the framework is to make it as easy as possible to set up and perform realtime video processing or machine vision against image or video sources. Previous iterations of this framework wrapped OpenGL (ES), hiding much of the boilerplate code required to render images on the GPU using custom vertex and fragment shaders. This version of the framework replaces OpenGL (ES) with Metal. Largely driven by Apple's deprecation of OpenGL (ES) on their platforms in favor of Metal, it will allow for exploring performance optimizations over OpenGL and a tighter integration with Metal-based frameworks and operations.

XBImageFilters - OpenGL ES 2-based image and real-time camera filters for iOS

  •    Objective-C

XBImageFilters allows you to obtain filtered versions of any image or from the camera in realtime. It uses OpenGL ES 2 to filter the images through fragment shaders you write yourself so you can filter your images in whatever way you want and it is super fast. In this screenshot of the sample we have on the top half of the screen a regular UIImageView with contentMode set to UIViewContentModeTop, and on the bottom half a XBFilteredImageView with the same image with contentMode set to UIViewContentModeBottom and a filter [a GLSL fragment shader] that outputs the luminance of the pixel color.

glslang - Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator

  •    C++

The above page includes where to get binaries, and is kept up to date regarding the feature level of glslang. An OpenGL and OpenGL ES shader front end and validator.

ExoPlayerFilter - This library uses OpenGL Shaders to apply effects on ExoPlayer video at Runtime

  •    Java

This library uses OpenGL Shaders to apply effects on ExoPlayer video at Runtime and depends EXOPlayer core 2.7.0. Create SimpleExoPlayer instance. In this case, play MP4 file. Read this if you want to play other video formats.

ShaderConductor - ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages

  •    C++

ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages. Note that this project is still in an early stage, and it is under active development.

Desktop OpenGL ES

  •    

Desktop OpenGL ES is an OpenGL ES 1.1 to desktop OpenGL wrapper. dgles intends to ease development of software that uses OpenGL ES.

glo - OpenGL Overload: OpenGL implementation on top of Vulkan

  •    C++

OpenGL Overload (GLO) aims at being a cross-platform implementation of OpenGL and building a streamline and modern APIs friendly OpenGL like API. While Vulkan is a great explict graphics API, it's effortable only for a small part of the ecosystem. Furthermore, the multiplication of proprietary graphics APIs has fragmented the ecosystem.