LearnOpenGL

Code repository of all OpenGL chapters from the book and its accompanying website https://learnopengl.com (by JoeyDeVries)
C++

Stats

Basic LearnOpenGL repo stats
38
5,517
6.1
14 days ago

JoeyDeVries/LearnOpenGL is an open source project licensed under GNU General Public License v3.0 or later which is an OSI approved license.

LearnOpenGL Alternatives

Similar projects and alternatives to LearnOpenGL

  • GitHub repo build-your-own-x

    🤓 Build your own (insert technology here)

  • GitHub repo Code-Server

    VS Code in the browser

  • GitHub repo CppCoreGuidelines

    The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++

  • GitHub repo GLFW

    A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input

  • GitHub repo SFML

    Simple and Fast Multimedia Library

  • GitHub repo Mumble

    Mumble is an Open Source, low-latency, high quality voice chat software

  • GitHub repo glad

    Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.

  • GitHub repo FastNoise

    Fast Portable Noise Library - C# C++ C Java HLSL

  • GitHub repo tutorials

    This holds the tutorials for GameTutorials.com (by gametutorials)

  • GitHub repo OpenSimplex2

    Successors to OpenSimplex Noise, plus updated OpenSimplex.

  • GitHub repo CIDLib

    The CIDLib general purpose C++ development environment

  • GitHub repo LearnOpenTK

    A port of learnopengl.com's tutorials to OpenTK and C#.

  • GitHub repo vulkan-guide

    Introductory guide to vulkan. (by vblanco20-1)

  • GitHub repo assignments

  • GitHub repo souffle-haskell

    Haskell bindings for the Souffle datalog language

  • GitHub repo adventofcode

    Advent of Code solutions of 2015, 2016, 2017, 2018, 2019 and 2020 in Scala

  • GitHub repo CQC

    CQC (Charmed Quark Controller) a commercial grade, full featured, software based automation system. CQC is built on our CIDLib C++ development system, which is also available here on GitHub.

  • GitHub repo xll

    Excel add-in library

  • GitHub repo Noise-Extras

    Noise & related code pieces that I didn't feel needed whole repos all to themselves.

  • GitHub repo testing-opengl

    My own tutorial (for myself) for OpenGL based development

NOTE: The number of mentions on this list indicates mentions on common posts. Hence, a higher number means a better LearnOpenGL alternative or higher similarity.

Posts

Posts where LearnOpenGL has been mentioned. We have used some of these posts to build our list of alternatives and similar projects - the last one was on 2021-05-03.
  • What are the best learning path from a beginner to advance
    reddit.com/r/opengl | 2021-05-08
    -After this is done, you should have a basic understading of OpenGL. Find a simple idea you would like to make and start coding (I find Sebastian Lague's coding adventures series very inspiring). At some point, you will get stuck with something you don't know how to do, wether it is a post processing effect, or an optimisation of your code. Go look that up on the internet or on learnopengl.com but don't follow a step by step tutorial, always try to code things yourself from the principles you learned.
  • DirectX or OpenGL
    https://learnopengl.com/ - here's a good website for learning the core principles and some in-practice usage of modern OpenGL
  • What's the coolest thing you've created with c++?
    reddit.com/r/cpp | 2021-05-03
    Honestly I just started with Introduction - Vulkan Tutorial (vulkan-tutorial.com) , but once I got the basic vulkan concepts down I also went through Learn OpenGL, extensive tutorial resource for learning Modern OpenGL and the chernos youtube videos for the broader game engine concepts.
  • Uniform data issues
    reddit.com/r/opengl | 2021-05-03
    #version 450 layout(location=0) out vec4 FragColor; layout(location=0) in vec3 fpos; layout(location=1) in vec3 fnorm; layout(location=2) in vec3 ffwd; layout(location=3) in vec3 ftan; layout(location=4) in vec2 fuv; layout(std140, set=0, binding=0) uniform CameraMat { mat4 CamMatrix; }; layout(std140, set=0,binding=1) uniform ModelMat { mat4 ModelMatrix; }; layout(set=1,binding=0) uniform texture2D diff_tex; layout(set=1,binding=1) uniform sampler diff_sam; layout(set=2,binding=0) uniform texture2D bump_tex; layout(set=2,binding=1) uniform sampler bump_sam; layout(set=3,binding=0) uniform texture2D spec_tex; layout(set=3,binding=1) uniform sampler spec_sam; layout(set=4,binding=0) uniform texture2D emissive_tex; layout(set=4,binding=1) uniform sampler emissive_sam; //Ambient lighting: https://learnopengl.com/ somewhere. //SpotLights and Point Lights: https://learnopengl.com/Lighting/Light-casters layout(std140, set=5, binding=0) uniform AmbientLightData { vec4[4] ALDR; }; layout(std140, set=6, binding=0) uniform PointLightData { vec4 PLDR[32]; }; float calcAttenuation(vec3 a, float d) { return 1.0/(a.x*a.y*d+a.z*d*d); } mat4 calcLookAt(vec3 fwrd, vec3 up) { vec3 zA = normalize(ffwd); vec3 xA = normalize(cross(up,zA)); vec3 yA = cross(zA, xA); float xDot = -dot(xA,vec3(0,0,0)); float yDot = -dot(yA,vec3(0,0,0)); float zDot = -dot(zA,vec3(0,0,0)); return mat4(xA.x, yA.x, zA.x,0, xA.y, yA.y, zA.y,0, xA.z, yA.z, zA.z,0, xDot, yDot, zDot,1); } vec3 calcAmbientLight(vec3 ambientLC,float ambientLI) { return ambientLC*ambientLI; } vec3 calcDiffuseLight(vec3 p, vec3 n, vec3 lp, vec3 lc) { vec3 ld = normalize(lp-p); //Lighpos-pos float diff = max(dot(n,ld),0); return lc*diff; //return vec3(diff); } vec3 calcPointLight(vec3 p, vec3 n, vec3 lp, vec3 lc, vec3 la) { vec3 ld = normalize(lp-p); float diff = max(dot(n,ld),0); float dist = length(lp-p); float att = calcAttenuation(la,dist); return lc*diff*att; } void main() { vec3 alc = ALDR[0].xyz; //Ambient Light Color float ali = ALDR[0].w; //Ambient Light Intensity vec3 dlp = ALDR[1].xyz; //Diffuse Light Position vec3 slp = vec3(ALDR[1].w,ALDR[2].xy); //Spotlight Position vec3 slc = vec3(ALDR[2].zw, ALDR[2].x);//Spotlight Color. vec3 slt = vec3(ALDR[3].yzw); //SpotLight Threshold. vec4 diffuse = texture(sampler2D(diff_tex,diff_sam), fuv); vec4 snorm = texture(sampler2D(bump_tex,bump_sam), fuv); vec4 emmisive = texture(sampler2D(emissive_tex,emissive_sam), fuv); // vec4 spec = texture(sampler2D(spec_tex,spec_sam),fuv); mat4 lookatMat = calcLookAt(ffwd, fnorm); mat4 sampledLookAtMat = calcLookAt(vec3(0,0,-1),normalize(snorm.xyz)); vec3 trueNorm = vec3((lookatMat*sampledLookAtMat)*vec4(fnorm,1)); vec3 finalColor = vec3(0.0); finalColor=(alc); // finalColor += calcAmbientLight(alc, ali); // finalColor +=calcDiffuseLight(fpos,trueNorm,dlp,diffuse.rgb); int plq=int(PLDR[0]); for(int i=0;i
  • Any good tutorials/Websites?
    reddit.com/r/opengl | 2021-04-30
    If for some reason you can't find it, learnopengl.com is a great start
  • is it possible to get a metallic effect without a texture ?
    reddit.com/r/opengl | 2021-04-30
    Go see this OpenGL tutorial
  • Few simple questions about OpenGL?
    reddit.com/r/opengl | 2021-04-29
    As far as good resources, https://learnopengl.com/ is often suggested, and for me, I learned a lot going through thebennybox's youtube tutorial on engine dev. It's got its flaws, but he does teach a lot of the fundamentals well. There also may be other better quality tutorials on Youtube considering thebennybox's content is quite old. I also like The Cherno's game engine series videos.
    reddit.com/r/opengl | 2021-04-29
    learnopengl.com is great, but Googleduckduckgo is always your friend :) Also The Cherno on YouTube has great series on both C++ and OpenGL. not really complete, but i'd recommend it if you're an "auditory learner". it teaches you pretty much all the basics
    reddit.com/r/opengl | 2021-04-29
  • Book for computer graphics?
    Highly recommend Learn OpenGL: https://learnopengl.com/
  • where the heck do i start?
    reddit.com/r/opengl | 2021-04-27
    I'm starting out too, currently reading LearnOpenGL which uses C++ but I've been following along in C. If you're comfortable using the C equivalent math library (CGLM) and poling around the documentation a little it's not that hard.
  • How do you organize your shaders?
    reddit.com/r/opengl | 2021-04-25
    I've been following the tutorials from learnopengl.com and a question I keep asking myself as I continue is: how do you organize all these different shaders?
  • 3D Game Shaders for Beginners
    news.ycombinator.com | 2021-04-25
    I can recommend this very much. Together with https://learnopengl.com/ I learned most I know about graphics.

    The same thread in 2019: https://news.ycombinator.com/item?id=19895218

  • Last semester: Software Engineering but Love Game Dev
    reddit.com/r/gamedev | 2021-04-24
    Hi, I assume you are using OpenGL in school? Try this tutorial out: https://learnopengl.com/. It covers the basics from setting up to the game loop and the rendering pipeline before moving on to more advanced topics like writing shaders for phong shading etc.
  • How can a foss enthusiast learn game dev without the use of proprietary garbage?
    reddit.com/r/gamedev | 2021-04-23
    https://learnopengl.com/ A pretty decent set of tutorials about using openGL... it is fairly c/c++ but for the most part it is applicable to any 'normal' openGL wrapper regardless of language.