-
Notifications
You must be signed in to change notification settings - Fork 4
/
TODO.txt
38 lines (31 loc) · 2.15 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# TODO
## Code changes and examples that would benefit the framework
+ Flag to launch, save a screenshot, and quit.
+ Autograder
+ "Your code goes here" in different files.
- A way to turn on or off the visualization of the skeleton itself.
- Finish animation (file loading, pose space, rotation interpolation)
- Move animation code to a branch?
- mesh normalization matrix goes into view, not applyTransformation
- GUI dialogs
+ Drawables of a pyramid, one per bone transformed to its rest orientation, with a copy of the uniforms and an extra index that says which to apply.
+ Make a version based on glfw.
+ Qt is used for windowing and some cross-platform path manipulation. The interesting code should all be separated across the GLGUI (Qt) to GLScene (no Qt) divide. The mouse event class does leak across, but that should be easy to change. To rip out path manipulation, one can either assume "/" as the path separator, which windows can actually handle, or one can use the C++17 filesystem class. To implement live reloading, one can implement filewatcher with polling (stat() is pretty much cross platform or there is C++17 filesystem::last_write_time) or else James Wynn's FileWatcher is cross-platform: https://github.com/jameswynn/simplefilewatcher
- More examples:
- image processing
- ray marching a la shadertoy
- animation
- ambient occlusion
- Framebuffer objects https://open.gl/framebuffers
- Drawable has a Framebuffer
- Framebuffer can be default (need a captureDefaultID() to be called at init time): https://stackoverflow.com/questions/11617013/why-would-glbindframebuffergl-framebuffer-0-result-in-blank-screen-in-cocos2d
// glBindFramebuffer( GL_FRAMEBUFFER, 0 );
GLint dfb;
glGetIntegerv( GL_FRAMEBUFFER_BINDING, &dfb );
glBindFramebuffer( GL_FRAMEBUFFER, dfb );
- Framebuffer can set color and depth textures
- Texture2D needs a constructor that takes width and height and leaves m_image_path blank; reload() needs to skip the upload in this case.
- Texture2D could use a save( path ) method.
- Framebuffer demos:
- render to face of cube
- 2D post-processing