Bs.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include <boost/ptr_container/ptr_vector.hpp>
  2. #include "Bs.h"
  3. #include "Renderer.h"
  4. #include "Scene/Scene.h"
  5. #include "Resources/ShaderProg.h"
  6. #include "Resources/Model.h"
  7. #include "Scene/ModelNode.h"
  8. #include "Resources/Material.h"
  9. #include "Resources/Mesh.h"
  10. namespace R {
  11. //==============================================================================
  12. // Destructor =
  13. //==============================================================================
  14. Bs::~Bs()
  15. {}
  16. //==============================================================================
  17. // createFbo =
  18. //==============================================================================
  19. void Bs::createFbo()
  20. {
  21. try
  22. {
  23. fbo.create();
  24. fbo.bind();
  25. fbo.setNumOfColorAttachements(1);
  26. glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
  27. GL_TEXTURE_2D, r.getPps().getPrePassFai().getGlId(), 0);
  28. glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
  29. GL_TEXTURE_2D, r.getMs().getDepthFai().getGlId(), 0);
  30. fbo.checkIfGood();
  31. fbo.unbind();
  32. }
  33. catch(std::exception& e)
  34. {
  35. throw EXCEPTION("Failed to create blending stage FBO");
  36. }
  37. }
  38. //==============================================================================
  39. // createRefractFbo =
  40. //==============================================================================
  41. void Bs::createRefractFbo()
  42. {
  43. try
  44. {
  45. refractFbo.create();
  46. refractFbo.bind();
  47. refractFbo.setNumOfColorAttachements(1);
  48. glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
  49. GL_TEXTURE_2D, refractFai.getGlId(), 0);
  50. glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
  51. GL_TEXTURE_2D, r.getMs().getDepthFai().getGlId(), 0);
  52. refractFbo.checkIfGood();
  53. refractFbo.unbind();
  54. }
  55. catch(std::exception& e)
  56. {
  57. throw EXCEPTION("Failed to create blending stage refract FBO");
  58. }
  59. }
  60. //==============================================================================
  61. // init =
  62. //==============================================================================
  63. void Bs::init(const RendererInitializer& /*initializer*/)
  64. {
  65. createFbo();
  66. Renderer::createFai(r.getWidth(), r.getHeight(), GL_RGBA8, GL_RGBA,
  67. GL_FLOAT, refractFai);
  68. createRefractFbo();
  69. refractSProg.loadRsrc("shaders/BsRefract.glsl");
  70. }
  71. //==============================================================================
  72. // run =
  73. //==============================================================================
  74. void Bs::run()
  75. {
  76. /// @todo
  77. }
  78. } // end namesapce