Simple game engine with complete export to scripting language
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

53 linhas
1.0 KiB

  1. #ifndef BLUECORE_RENDER_QUEUE_H
  2. #define BLUECORE_RENDER_QUEUE_H
  3. #include "RenderDevice.h"
  4. namespace BlueCore
  5. {
  6. class RenderItem : public Referenced
  7. {
  8. public:
  9. virtual void render(RenderDevice *) const = 0;
  10. };
  11. class RenderQueue : public Referenced
  12. {
  13. struct QueueItem
  14. {
  15. QueueItem(RenderItem *renderitem, const Vector3& vector,
  16. const Quaternion& quat) :
  17. item(renderitem), position(vector), orientation(quat)
  18. {
  19. }
  20. ref_ptr<RenderItem> item;
  21. Vector3 position;
  22. Quaternion orientation;
  23. };
  24. std::list<QueueItem> _OpaqueItems;
  25. std::list<QueueItem> _TransparentItems;
  26. public:
  27. void addOpaqueItem(RenderItem *item, const Vector3& position,
  28. const Quaternion& orientation);
  29. void addTransparentItem(RenderItem *item, const Vector3& position,
  30. const Quaternion& orientation);
  31. const std::list<QueueItem>& getOpaqueItems();
  32. const std::list<QueueItem>& getTransparentItems();
  33. void clear();
  34. void render(RenderDevice *device) const;
  35. };
  36. } // namespace BluewCore
  37. #endif // BLUECORE_RENDER_QUEUE_H