Releases: hbatagelo/abcg
v3.1.3
v3.1.2
- @abacchi00 (André Bacchi): fix: ensure the web build runs correctly.
- Fixed
cmake_minimum_required()deprecation warnings. - Disabled warnings for vendored libraries in WASM builds.
v3.1.1
v3.1.0
- Use extra stack space when building for WASM.
- Updated external libraries (Dear ImGui v1.89.4; {fmt} 10.0.0; volk 1.3.250).
- Force flush to stdout after each invocation of fmt::print to make it work with MSYS2.
abcg::flipHorizontallyandabcg::flipVerticallynow accepts an l-value reference to a SDL surface instead of a non-null pointer.- Moved
abcg::toRedString,abcg::toYellowStringandabcg::toBlueStringtoabcgUtil.hpp. - General improvements (fixed typos, code style, etc).
v3.0.0
v3.0.0
New features
-
Added support for building in Visual Studio with MSVC. For that to work, GLEW, SDL2 and SDL2_image development libraries must be installed and set up as follows: the GLEW installation directory must be added to the system Path variable; the environment variables
SDL2DIRandSDL2IMAGEDIRmust be set to the installation directory of SDL2 and SDL2_image, respectively. Debugging is also supported. However, building multiple executables is not supported in VS. Thus, make sure to use a singleadd_subdirectory()command in theCMakeLists.txtof the root directory. Also notice that the default output directory will beout/buildinstead ofbuildif the project is built in the IDE. -
Added support for building with MSVC in VS Code. Multiple executables are supported, as well as debugging. Below is an example of a
launch.jsonfor debugging the "Hello, World!" project:{ "version": "0.2.0", "configurations": [ { "name": "C++ Launch (Windows)", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}/build/bin/helloworld/helloworld.exe", "symbolSearchPath": "${workspaceFolder}/build/bin/Debug", "console": "integratedTerminal", "args": [], "stopAtEntry": false } ] } -
Updated
abcg::createOpenGLProgramwith support for additional shader types and no dependance onabcg::OpenGLWindow. The function now accepts an object of typeabcg::ShaderSourcecontaining the paths or codes of any combination of shaders supported by OpenGL (vertex, fragment, geometry, tess control/evaluation, and compute shaders). The function also accepts a boolean as a second argument to toggle on/off exceptions on build errors. By default, exception throwing is enabled. -
As an alternative to
abcg::createOpenGLProgram, it is possible to split the build process into smaller parts by callingabcg::triggerOpenGLShaderCompile,abcg::checkOpenGLShaderCompile,abcg::triggerOpenGLShaderLink, andabcg::checkOpenGLShaderLinkin sequence. This can be useful to prevent halting the application when building complex programs. -
Added
abcg::Application::getBasePathandabcg::Application::getAssetsPathas static member functions. -
The HTML element ID used for registering the fullscreen callback function can now be set with
abcg::WindowSettings::fullscreenElementID(default is#canvas). -
abcg::loadOpenGLTextureandabcg::loadOpenGLCubemapnow accepts creation info structuresabcg::OpenGLTextureCreateInfoandabcg::OpenGLCubemapCreateInfo, respectively. -
Added
abcg::hashCombineandabcg::hashCombineSeedfunctions to easily combine hash values. -
Added support for Vulkan.
Breaking changes
- ABCg filenames changed to camel case.
abcg::OpenGLWindow::getAssetsPathreplaced withabcg::Application::getAssetsPath.abcg::OpenGLWindow::createProgramFromFileandabcg::OpenGLWindow::createProgramFromStringremoved. Useabcg::createOpenGLPrograminstead.abcg::OpenGLWindow::handleEventrenamed toabcg::OpenGLWindow::onEvent.abcg::OpenGLWindow::initializeGLrenamed toabcg::OpenGLWindow::onCreate.abcg::OpenGLWindow::paintGLrenamed toabcg::OpenGLWindow::onPaint.abcg::OpenGLWindow::paintUIrenamed toabcg::OpenGLWindow::onPaintUI.abcg::OpenGLWindow::resizeGLrenamed toabcg::OpenGLWindow::onResize.abcg::OpenGLWindow::terminateGLrenamed toabcg::OpenGLWindow::onDestroy.- Namespace
abcg::openglremoved. abcg::opengl::loadTexturerenamed toabcg::loadOpenGLTexture.abcg::opengl::loadCubemaprenamed toabcg::loadOpenGLCubemap.abcg::Applicationdoes not take ownership ofabcg::OpenGLWindowanymore.abcg::Application::runnow accepts an lvalue reference toabcg::OpenGLWindow.abcg_string.hppandabcg_string.cppremoved.- The static member functions of
abcg::Exception, namelyRuntime,OpenGL,SDL, andSDLImage, are now classes of their own:abcg::RuntimeError,abcg::OpenGLError,abcg::SDLError, andabcg::SDLImageError. This simplifies the syntax for throwing ABCg exceptions. For instance,throw abcg::Exception{abcg::Exception::runtime(...)}now becomesthrow abcg::RuntimeError(...). - Default value of
abcg::OpenGLSettings::stencilBufferSizechanged from 8 to 0. abcg::OpenGLSettings::vsyncrenamed toabcg::OpenGLSettings::vSync.abcg::OpenGLWindow::onResizeparameters changed fromint width, int heighttoglm::ivec2 size.
Other changes
- Updated external libraries (Dear ImGui v1.86; {fmt} 8.1.1; GSL 4.0.0).
- Minimum required version for CMake increased to 3.21.
abcg::OpenGLWindow::getDeltaTime()markednoexcept.
v2.0.1
v2.0.1
Bug Fixes
- Fixed flickering effect when
glClearis not called for each frame. For this fix to work,abcg::OpenGLSettings::preserveWebGLDrawingBuffermust betrueeven when building for desktop.
v2.0.0
Breaking changes
abcg::Application::runnow takes by value a unique pointer toabcg::OpenGLWindow. Sincestd::unique_ptrcannot be copied, the caller must either usestd::moveor pass the pointer as an rvalue. This makes clear the intent of transferring ownership of the pointer, which was not explicit in the previous version that takes an lvalue reference.- Support for running multiple windows has been dropped. Multiple windows weren't working properly on Emscripten builds and aren't used in the course.
abcg::opengl::loadCubemapnow transforms the cube map textures to a right-handed coordinate system by default. A small loading overhead is incurred because some of the bitmaps are flipped vertically and horizontally. This behavior can be disabled by setting the (new) parameterrightHandedSystemtofalse.
Other changes
abcg::Exception::OpenGLnow generates a string describing all OpenGL error messages returned byglGetErrorwhen there are multiple errors.- All OpenGL functions from OpenGL ES 2.0 and ES 3.0 can now be qualified with the
abcgnamespace (e.g.abcg::glActiveTexture(0)) for automatic error handling in debug builds. This is an alternative to theGL_CHECKmacro used in many engines to check for errors before and after each GL call. - Updated external libraries (Dear ImGui v1.84; cppitertools v2.1; {fmt} 8.0.1).
v1.0.0
- Initial release, used during the first academic term of 2021.