gitextract_m_lvfbi1/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── Tutorial1_Window/ │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ └── source/ │ │ └── OGL3D/ │ │ ├── Game/ │ │ │ └── OGame.cpp │ │ └── Window/ │ │ └── OWindow.cpp │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial2_0_CrossPlatformEngine_Windows/ │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ └── OGraphicsEngine.h │ │ │ ├── Math/ │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── OGame.cpp │ │ │ │ └── Win32/ │ │ │ │ └── CWin32Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ └── Win32/ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ └── CWin32Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial2_1_CrossPlatformEngine_macOS/ │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ └── OGraphicsEngine.h │ │ │ ├── Math/ │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ └── Win32/ │ │ │ │ └── CWin32Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ └── Win32/ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ └── CWin32Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial2_2_CrossPlatformEngine_Linux/ │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ └── OGraphicsEngine.h │ │ │ ├── Math/ │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial3_DrawingTriangle/ │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.h │ │ │ │ └── OVertexArrayObject.h │ │ │ ├── Math/ │ │ │ │ ├── ORect.h │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── OVertexArrayObject.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial4_Shaders/ │ ├── Assets/ │ │ └── Shaders/ │ │ ├── BasicShader.frag │ │ └── BasicShader.vert │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.h │ │ │ │ ├── OShaderProgram.h │ │ │ │ └── OVertexArrayObject.h │ │ │ ├── Math/ │ │ │ │ ├── ORect.h │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── OShaderProgram.cpp │ │ │ │ ├── OVertexArrayObject.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial5_Animations/ │ ├── Assets/ │ │ └── Shaders/ │ │ ├── BasicShader.frag │ │ └── BasicShader.vert │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.h │ │ │ │ ├── OShaderProgram.h │ │ │ │ ├── OUniformBuffer.h │ │ │ │ └── OVertexArrayObject.h │ │ │ ├── Math/ │ │ │ │ ├── ORect.h │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── OShaderProgram.cpp │ │ │ │ ├── OUniformBuffer.cpp │ │ │ │ ├── OVertexArrayObject.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial6_Matrix/ │ ├── Assets/ │ │ └── Shaders/ │ │ ├── BasicShader.frag │ │ └── BasicShader.vert │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.h │ │ │ │ ├── OShaderProgram.h │ │ │ │ ├── OUniformBuffer.h │ │ │ │ └── OVertexArrayObject.h │ │ │ ├── Math/ │ │ │ │ ├── OMat4.h │ │ │ │ ├── ORect.h │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── OShaderProgram.cpp │ │ │ │ ├── OUniformBuffer.cpp │ │ │ │ ├── OVertexArrayObject.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user ├── Tutorial7_Cube/ │ ├── Assets/ │ │ └── Shaders/ │ │ ├── BasicShader.frag │ │ └── BasicShader.vert │ ├── Game/ │ │ └── main.cpp │ ├── OGL3D/ │ │ ├── include/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ └── OGame.h │ │ │ ├── Graphics/ │ │ │ │ ├── OGraphicsEngine.h │ │ │ │ ├── OShaderProgram.h │ │ │ │ ├── OUniformBuffer.h │ │ │ │ └── OVertexArrayObject.h │ │ │ ├── Math/ │ │ │ │ ├── OMat4.h │ │ │ │ ├── ORect.h │ │ │ │ ├── OVec2.h │ │ │ │ ├── OVec3.h │ │ │ │ └── OVec4.h │ │ │ ├── OPrerequisites.h │ │ │ └── Window/ │ │ │ └── OWindow.h │ │ ├── source/ │ │ │ └── OGL3D/ │ │ │ ├── Game/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGame.mm │ │ │ │ ├── OGame.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32Game.cpp │ │ │ │ └── X11/ │ │ │ │ └── CX11Game.cpp │ │ │ ├── Graphics/ │ │ │ │ ├── Cocoa/ │ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ │ ├── OGraphicsEngine.cpp │ │ │ │ ├── OShaderProgram.cpp │ │ │ │ ├── OUniformBuffer.cpp │ │ │ │ ├── OVertexArrayObject.cpp │ │ │ │ ├── Win32/ │ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ │ └── X11/ │ │ │ │ ├── CX11Globals.h │ │ │ │ └── CX11GraphicsEngine.cpp │ │ │ └── Window/ │ │ │ ├── CCocoaWindow.mm │ │ │ ├── CWin32Window.cpp │ │ │ └── CX11Window.cpp │ │ └── vendor/ │ │ └── glad/ │ │ ├── include/ │ │ │ ├── KHR/ │ │ │ │ └── khrplatform.h │ │ │ └── glad/ │ │ │ ├── glad.h │ │ │ ├── glad_glx.h │ │ │ └── glad_wgl.h │ │ └── src/ │ │ ├── glad.c │ │ ├── glad_glx.c │ │ └── glad_wgl.c │ ├── OpenGLGame.pro │ ├── OpenGLGame.sln │ ├── OpenGLGame.vcxproj │ └── OpenGLGame.vcxproj.user └── Tutorial8_EntitySystem_Basics/ ├── Assets/ │ └── Shaders/ │ ├── BasicShader.frag │ └── BasicShader.vert ├── Game/ │ ├── MyGame.cpp │ ├── MyGame.h │ ├── MyPlayer.cpp │ ├── MyPlayer.h │ └── main.cpp ├── OGL3D/ │ ├── include/ │ │ └── OGL3D/ │ │ ├── All.h │ │ ├── Entity/ │ │ │ ├── OEntity.h │ │ │ └── OEntitySystem.h │ │ ├── Game/ │ │ │ └── OGame.h │ │ ├── Graphics/ │ │ │ ├── OGraphicsEngine.h │ │ │ ├── OShaderProgram.h │ │ │ ├── OUniformBuffer.h │ │ │ └── OVertexArrayObject.h │ │ ├── Math/ │ │ │ ├── OMat4.h │ │ │ ├── ORect.h │ │ │ ├── OVec2.h │ │ │ ├── OVec3.h │ │ │ └── OVec4.h │ │ ├── OPrerequisites.h │ │ └── Window/ │ │ └── OWindow.h │ ├── source/ │ │ └── OGL3D/ │ │ ├── Entity/ │ │ │ ├── OEntity.cpp │ │ │ └── OEntitySystem.cpp │ │ ├── Game/ │ │ │ ├── Cocoa/ │ │ │ │ └── CCocoaGame.mm │ │ │ ├── OGame.cpp │ │ │ ├── Win32/ │ │ │ │ └── CWin32Game.cpp │ │ │ └── X11/ │ │ │ └── CX11Game.cpp │ │ ├── Graphics/ │ │ │ ├── Cocoa/ │ │ │ │ └── CCocoaGraphicsEngine.mm │ │ │ ├── OGraphicsEngine.cpp │ │ │ ├── OShaderProgram.cpp │ │ │ ├── OUniformBuffer.cpp │ │ │ ├── OVertexArrayObject.cpp │ │ │ ├── Win32/ │ │ │ │ └── CWin32GraphicsEngine.cpp │ │ │ └── X11/ │ │ │ ├── CX11Globals.h │ │ │ └── CX11GraphicsEngine.cpp │ │ └── Window/ │ │ ├── CCocoaWindow.mm │ │ ├── CWin32Window.cpp │ │ └── CX11Window.cpp │ └── vendor/ │ └── glad/ │ ├── include/ │ │ ├── KHR/ │ │ │ └── khrplatform.h │ │ └── glad/ │ │ ├── glad.h │ │ ├── glad_glx.h │ │ └── glad_wgl.h │ └── src/ │ ├── glad.c │ ├── glad_glx.c │ └── glad_wgl.c ├── OpenGLGame.pro ├── OpenGLGame.sln ├── OpenGLGame.vcxproj └── OpenGLGame.vcxproj.user