OpenGLRenderer.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "../GameCode4/interfaces.h"
  3. #include <memory>
  4. //
  5. // struct ConstantBuffer_Matrices - Chapter X, page Y
  6. //
  7. struct alignas(16) ConstantBuffer_Matrices
  8. {
  9. glm::mat4 m_WorldViewProj;
  10. glm::mat4 m_World;
  11. };
  12. //
  13. // struct ConstantBuffer_Material - Chapter X, page Y
  14. //
  15. struct alignas(16) ConstantBuffer_Material
  16. {
  17. glm::vec4 m_vDiffuseObjectColor;
  18. glm::vec4 m_vAmbientObjectColor;
  19. bool m_bHasTexture;
  20. glm::vec3 m_vUnused;
  21. };
  22. #define MAXIMUM_LIGHTS_SUPPORTED (8)
  23. //
  24. // struct ConstantBuffer_Lighting - Chapter X, page Y
  25. //
  26. struct alignas(16) ConstantBuffer_Lighting
  27. {
  28. glm::vec4 m_vLightDiffuse[MAXIMUM_LIGHTS_SUPPORTED];
  29. glm::vec4 m_vLightDir[MAXIMUM_LIGHTS_SUPPORTED];
  30. glm::vec4 m_vLightAmbient;
  31. unsigned int m_nNumLights;
  32. glm::vec3 m_vUnused;
  33. };
  34. class OpenGLRenderer46 : public IRenderer
  35. {
  36. public:
  37. OpenGLRenderer46() { }
  38. virtual int VOnRestore() override;
  39. virtual void VSetBackgroundColor(unsigned char bgA, unsigned char bgR, unsigned char bgG, unsigned char bgB) override;
  40. virtual void VShutdown() override;
  41. virtual bool VPreRender() override;
  42. virtual bool VPostRender() override;
  43. virtual void VCalcLighting(Lights *lights, int maximumLights) { }
  44. virtual void VSetWorldTransform(glm::mat4 m);
  45. virtual void VSetViewTransform(glm::mat4 m);
  46. virtual void VSetProjectionTransform(glm::mat4 m);
  47. virtual std::shared_ptr<IRenderState> VPrepareAlphaPass() override;
  48. virtual std::shared_ptr<IRenderState> VPrepareSkyBoxPass() override;
  49. };