A simple canvas for testing out various topics and rendering techniques in computer graphics using the OpenGL rendering pipeline. This framework was built to quickly test some low-level graphics features and to learn how they work in OpenGL. Future versions may consider using the SPIR-V open source ecosystem to support Vulkan or OpenCL.
- Premake5, Visual Studio 2019 + optional extensions: GLSL Language Integration and Visual Assist
- GLEW (version 2.1.0), or better GLAD, and GLM (version 0.9.2 or above)
- FreeGLUT (v3.0.0 MSVC Package), or GLFW (version 3.3.2) for finer control
- stb (image loader), or better SOIL, SOIL2 for more image utilities, and spdlog (logging library)
- Assimp (pre-compiled libraries not cross-platform, use vcpkg to compile from source code)
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install assimp # x86 build
./vcpkg.exe install assimp:x64-windows # x64 build
The Premake Lua scripts will handle the workspace/project/build settings for all configurations and platforms for us, there's no need to set things up in Visual Studio by hand. To build the application, simply run
git clone https://github.com/neo-mashiro/sketchpad.git
cd sketchpad/
vendor/premake/premake5.exe vs2019
As an aside, it is recommended to use spaces everywhere instead of tabs. In case the tab size of the editor and the website rendering the source code do not meet, indentation can be very messy. For example, there are so many hard-to-read repos on Github that use inconsistent indentation in the same file, because they are mixing four spaces with two tabs (of size 2) in the IDE, which is then converted to eight spaces on Github...
- (WIP) add screenshot: select startup project in the solution's properties window
- (WIP) add screenshot: keyboard controls, message boxes, mouse controls, motions, etc.
- scene1 name (come up with a name for each scene): detailed description (summarize the model, theory and techniques applied in this scene and what to expect)
- scene2 name