#pragma once #include "../GameCode4/interfaces.h" #include // // struct ConstantBuffer_Matrices - Chapter X, page Y // struct alignas(16) ConstantBuffer_Matrices { glm::mat4 m_WorldViewProj; glm::mat4 m_World; }; // // struct ConstantBuffer_Material - Chapter X, page Y // struct alignas(16) ConstantBuffer_Material { glm::vec4 m_vDiffuseObjectColor; glm::vec4 m_vAmbientObjectColor; bool m_bHasTexture; glm::vec3 m_vUnused; }; #define MAXIMUM_LIGHTS_SUPPORTED (8) // // struct ConstantBuffer_Lighting - Chapter X, page Y // struct alignas(16) ConstantBuffer_Lighting { glm::vec4 m_vLightDiffuse[MAXIMUM_LIGHTS_SUPPORTED]; glm::vec4 m_vLightDir[MAXIMUM_LIGHTS_SUPPORTED]; glm::vec4 m_vLightAmbient; unsigned int m_nNumLights; glm::vec3 m_vUnused; }; class OpenGLRenderer46 : public IRenderer { public: OpenGLRenderer46() { } virtual int VOnRestore() override; virtual void VSetBackgroundColor(unsigned char bgA, unsigned char bgR, unsigned char bgG, unsigned char bgB) override; virtual void VShutdown() override; virtual bool VPreRender() override; virtual bool VPostRender() override; virtual void VCalcLighting(Lights *lights, int maximumLights) { } virtual void VSetWorldTransform(glm::mat4 m); virtual void VSetViewTransform(glm::mat4 m); virtual void VSetProjectionTransform(glm::mat4 m); virtual std::shared_ptr VPrepareAlphaPass() override; virtual std::shared_ptr VPrepareSkyBoxPass() override; };