Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR supersedes the earlier effort in #50
Specifically it adds a new resource type, the
render-state
, which encapsulates the relevant global OpenGL state in an object that can be swapped out wholesale to represent different state sets.Traditional calls to more "immediately" change state are changed to operations on this state object, and old functions to do the same are deprecated.
This is notably not a complete switch to support render state objects. Parts of Trial and user code will still directly manipulate a render state object, while they should ultimately for best performance on future backends become immutable, and more importantly, discretely enumerated ahead of time like other resource types.
For now this PR merely aims to achieve two things:
Future efforts will need to tackle discrete enumeration of state objects and re-examine how framebuffers, shader-programs, and so on are managed and used.