| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsGLPrerequisites.h"
- #include "BsGpuProgram.h"
- namespace BansheeEngine
- {
- /**
- * @brief GPU program compiled from GLSL and usable by OpenGL.
- */
- class BS_RSGL_EXPORT GLSLGpuProgramCore : public GpuProgramCore
- {
- public:
- ~GLSLGpuProgramCore();
- /**
- * @copydoc GpuProgramCore::isSupported
- */
- bool isSupported() const override;
- /**
- * @brief Gets internal OpenGL handle to the program.
- */
- GLuint getGLHandle() const { return mGLHandle; }
- /**
- * @brief Gets an unique index for this GPU program. Each created GPU program is
- * assigned a unique index on creation.
- */
- UINT32 getProgramID() const { return mProgramID; }
- private:
- friend class GLSLProgramFactory;
- GLSLGpuProgramCore(const String& source, const String& entryPoint, GpuProgramType gptype,
- GpuProgramProfile profile, bool isAdjacencyInfoRequired);
- /**
- * @copydoc GpuProgramCore::initialize
- */
- void initialize() override;
- private:
- UINT32 mProgramID;
- GLuint mGLHandle;
- static UINT32 mVertexShaderCount;
- static UINT32 mFragmentShaderCount;
- static UINT32 mGeometryShaderCount;
- static UINT32 mHullShaderCount;
- static UINT32 mDomainShaderCount;
- static UINT32 mComputeShaderCount;
- };
- }
|