HighLevelTODO.txt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. Camelot use case:
  2. Application::startUp("RenderSystem", "RenderManager") <- Initializes all modules. Provide Reference render system and render manager (Maybe directly provide .dll name here)
  3. RenderWindow* window = new RenderWindow(width, height, /*etc*/); <- Automatically registers with Application
  4. GameObject cameraObj = new GameObject("MainCamera"); // Automatically registers with SceneManager
  5. Camera* newCamera = new Camera(cameraObj, renderTarget (i.e. window), Rect area, aspect, FOV, iso/proj, /*etc*/); // Component
  6. Application::renderLoop();
  7. Application::shutDown()
  8. ------------------------------------------
  9. Application::renderLoop INTERNALS: // TODO - Most of this should be a part of a RenderManager, so we can employ better rendering
  10. techniques like deferred and forward rendering, transparently
  11. Query scene manager and get all cameras
  12. Sort cameras based on render targets
  13. For each render target
  14. Render cameras one by one
  15. - Each camera queries scene manager for all visible entities // Scene manager employs spatial partitioning and frustum culling to
  16. speed up the search
  17. - Objects are sorted according to a render queue
  18. - And sent to the render system one by one
  19. - Set object pass
  20. - Set object vertex/index buffer
  21. - Render
  22. Swap frame buffers if needed
  23. --------------------------------------------
  24. Create shader simply by just providing source and setting parameters. No additional calls to createParameters and such shit.
  25. --------------------------------------------
  26. Loading of mesh/texture/material should be a simple Resource.Load. Returns a ResourcePtr which is a managed ptr to resource. Resource
  27. holds a pointer to its source, and it can be in a loaded or unloaded state. If we try to use an unloaded resource, a dummy resource is
  28. provided.
  29. --------------------------------------------
  30. IMPORTANT: Develop scene manager and rest of things mentioned here in CamelotRenderer project, and then port it all together to