TextureUtils::loadAndRegisterTexture() added flags to toggle mipmaps and anisotropic filtering
ModelLoader::_loadObjFile() checks if current face has texture coordinates in addition to entire model
v 5.6.0 - 24 Oct 2024
Fixed GPU memory leak of not deleting cube IBOs
Add CSCI441::OpenGLUtils::checkOpenGLError() method to check the error queue
When requesting an OpenGL 4.3+ debug context, register debug callback
v 5.5.0 - 18 Oct 2024
TextureUtils::loadAndRegister2DTexture() can silence error message
MD5Model silences all but final texture fail messages during load
ShaderProgram uses glm::value_ptr() for passing vectors and matrices to program uniforms
Include glad/gl.h in materials.hpp for GLfloat to exist if file included on its own
Patched bug with objects.hpp wire objects not resetting the polygon mode back for the front_and_back properly
v 5.4.1 - 26 Aug 2024
Updated README
v 5.4.0 - 26 Aug 2024
Updated glm dependency to v1.0.1
Added half sphere and dome to HUD example
Fixed shader uniform debug output typos
OpenGLUtils: Does not print full list of extensions with OpenGL statistics, created a separate function that can be called for full listing
MD5Camera: fixed bug where inverseQ normalization was being discarded and not set
MD5Model: added GLM_ENABLE_EXPERIMENTAL for quaternion header to match GLM v1.0.1
OrthographicCamera: fixed bug where _updateProjectionMatrix was not declared inline
v 5.3.0 - 16 Aug 2024
Removed [[nodiscard]] from ModelLoader::draw() to silence warnings. Currently method always returns true so the return value isn't applicable.
Changed format of extensions listing header
Added abstract PerspectiveCamera class to house aspect ratio, field of view, near/far clip planes. When any is updated, the perspective projection matrix is recomputed
Added abstract OrthographicCamera class to house left, right, bottom, top, near, far clip planes
v 5.2.0 - 15 Aug 2024
OpenGLEngine tracks the state of the Caps Lock and Num Lock keys during key callbacks
OpenGL queries checks Point Size Range
Added functions to convert material float arrays into a glm object
Use glm::value_ptr() instead of &[0] to access beginning of data array
Query all available OpenGL extensions
Display the list in OpenGLUtils when printing info
Store a set of available extensions in OpenGLEngine to do a quick boolean query to check if a specific extension exists
Moved revision history into dedicated changelog file
Replacing cmath dependency with glm references (PI specifically)
Warnings removed
v 4.9.1 - 20 Sep 2023
Fixed doxygen version number
v 4.9.0 - 20 Sep 2023
Fixed aspect ratio calculation in OpenGL3DEngine
Fixed MD5Model destruction if error loading model
Removed internal references to glUniform*() and replaced with glProgramUniform*() to not change bound program state
Cleaned up documentation
v 4.8.0 - 14 Sep 2023
OpenGL3DEngine can handle events that have an effect on the arcball camera movement
v 4.7.0 - 07 Sep 2023
Big3 implemented on classes as appropriate
Classes and methods open/close as appropriate
v 4.6.1 - 06 Sep 2023
Cannot copy MD5 Models
v 4.6.0 - 06 Sep 2023
Created MD5Model class to load, display, and animate md5mesh + md5anim files
Deleted copy constructor and copy assignment operator for ShaderProgram and ComputeShaderProgram to prevent shader program objects from being copied and then deallocated on the GPU
TextureUtils::loadAndRegisterTexture() now has a trailing parameter to specify if the image should be flipped when loaded or not (defaults to flip = true)
v 4.5.0 - 31 Aug 2023
Camera stores projection matrix along with view matrix
ArcballCam, FixedCam, FreeCam operate with perspective projections
MD5Camera class loads and steps through frames of md5camera file
MD5Camera operates with perspective projection
v 4.4.0 - 29 Aug 2023
ShaderProgram::getProgramStages() returns GLbitfield of shader stages
v 4.3.0 - 25 Aug 2023
Improved and consistent web documentation using a consistent style for all public facing classes and members, methods, and namespaces
Minor performance improvements
v 4.2.0 - 25 Aug 2023
setupGLEW() and cleanupGLEW() made private members of OpenGLEngine
Improving web documentation using a consistent style
v 4.1.1 - 24 Aug 2023
Cleaned up order of includes
Fixed publishing to GitHub pages
v 4.1.0 - 24 Aug 2023
Improving web documentation using a consistent style
v 4.0.0 - 21 Aug 2023
Refactored protected class member naming scheme from _xyz to mXyz
Improving web documentation
v 3.12.1 - 18 Aug 2023
Improving web documentation
v 3.12.0 - 18 Aug 2023
Consistently use only single precision and GLfloat typedef for OS X Metal compatibility
v 3.11.0 - 20 Apr 2023
Fixed renaming bug in ModelLoader _AUTO_GEN_NORMALS and properly initialize to false
Removed memory leaks in object generation of cylinder, disk, sphere, and torus
v 3.10.2 - 26 Oct 2022
Cleaned up Camera class warnings
Replaced OpenGL3DEngine internal arcball implementation with ArcballCam object
v 3.10.1 - 09 Sep 2022
Camera::_clampCameraPhi() explicitly checking against floats instead of double
v 3.10.0 - 06 Aug 2022
Added capability for ShaderProgram to write to/load from binary - if supported by driver
ModelLoader no longer internal applies using namespace std; and qualifies all STL types
v 3.9.0 - 05 Nov 2021
ModelLoader can query number of vertices and indices within model
TextureUtils load method will roll back to ppm loader if stb_image fails to load ppm
Reversed top fan winding order for spheres
v 3.8.0 - 07 Oct 2021
Resolved Issue #2 for OBJ files with negative indices. The negative indices weren't unique and needed to offset before caching
v 3.7.1 - 07 Oct 2021
Fixed get polygon mode bug where it returns two values
Objects and Teapot only enable attribute locations if they are not -1. Prevents an invalid enum error
v 3.7.0 - 06 Oct 2021
Improved encapsulation of Arcball radius modification
Drawing objects now resets glPolygonMode to previous value instead of just forcing GL_FILL
When deleting a Shader Program, check the deletion status
Adding 3D texture coordinates to indexed cube and adding entry point to explicitly drawCubeMap()
Corrected normals for indexed cube
Changed object and teapot internal variables from static to inline to support multi-compilation and single use across multiple contexts
v 3.6.0 - 15 Sep 2021
Created a concrete ArcBall Cam implementation
v 3.5.0 - 13 Sep 2021
Added full getter suite to Camera class
v 3.4.1 - 10 Sep 2021
Fixed bug within SimpleShader when the SimpleShader was used split across multiple class objects
v 3.4.0 - 08 Sep 2021
Created a concrete Fixed Camera implementation that can be positioned but doesn't move
Fixed FreeCam being included across multiple object files
v 3.3.0 - 06 Sep 2021
Created an abstract Camera class to store parameters and to make camera objects
Created a concrete FreeCam implementation
v 3.2.1 - 31 Aug 2021
Reworked SimpleShader::popTransformation() to always re-multiply the model matrix and not use the inverse calculation to avoid precision errors
v 3.2.0 - 30 Aug 2021
Cleaning up code style
Removed deprecated functions in ShaderUtils
Removed printLog() in ShaderUtils forcing explicit use of printShaderLog(), printProgramLog(), printProgramPipelineLog()
Removed loadBMP() and loadTGA() in TextureUtils. Use stb_image library instead
Improved efficiency of setting VBO attribute locations for teapot
Sidestepped the precision error in SimpleShader2 (and therefore SimpleShader3) when popping and multiplying by the inverse by adding a resetTransformationMatrix() method which clears the stack and sets the model matrix to the identity
v 3.1.0 - 21 May 2021
Removed all ShaderProgram::setUniform(). Use ShaderProgram::setProgramUniform() instead.
v 3.0.0 - 21 May 2021
Reworked ModelLoader.hpp to first set attribute locations then specify the shader handle. This allows for the model to be used with separable programs and shader pipelines.