summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r--source/modules/asura-core/graphics/shader.h152
1 files changed, 75 insertions, 77 deletions
diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h
index dc8dbe0..c535570 100644
--- a/source/modules/asura-core/graphics/shader.h
+++ b/source/modules/asura-core/graphics/shader.h
@@ -20,100 +20,98 @@
#include "vertex_buffer.h"
#include "index_buffer.h"
-namespace AsuraEngine
+namespace_begin(AsuraEngine)
+namespace_begin(Graphics)
+
+///
+/// һshaderһڲʼ乲ijShaderuniformsͶݣֻṩ uniformsuseɫ
+/// ķ༭ÿshaderͨshaderҵuniforms¶frameworkmaterial
+/// á
+///
+class Shader ASURA_FINAL
+ : public Scripting::Portable<Shader>
+ , public AEIO::Renewable
{
- namespace Graphics
- {
-
- ///
- /// һshaderһڲʼ乲ijShaderuniformsͶݣֻṩ uniformsuseɫ
- /// ķ༭ÿshaderͨshaderҵuniforms¶frameworkmaterial
- /// á
- ///
- class Shader ASURA_FINAL
- : public Scripting::Portable<Shader>
- , public AEIO::Renewable
- {
- public:
-
- Shader();
-
- ~Shader();
-
- static void SetActive(Shader* shader);
- static Shader* GetActive();
-
- bool Load(const std::string& vert, const std::string& frag) ASURA_THROW(Exception);
-
- // ʹSetActiveлshaderʱ
- void OnEnable();
- void OnDisable();
- // Draw call֮
- void OnUsed();
+public:
+
+ Shader();
+
+ ~Shader();
+
+ static void SetActive(Shader* shader);
+ static Shader* GetActive();
+
+ bool Load(const std::string& vert, const std::string& frag) ASURA_THROW(Exception);
+
+ // ʹSetActiveлshaderʱ
+ void OnEnable();
+ void OnDisable();
+ // Draw call֮
+ void OnUsed();
- void SetAttribute(int loc, VertexBuffer* vbo, uint offseti = 0, uint stridei = 0, bool normalized = false);
- int GetAttributeLocation(const std::string& attribute);
- void DisableAttribute(int loc);
+ void SetAttribute(int loc, VertexBuffer* vbo, uint offseti = 0, uint stridei = 0, bool normalized = false);
+ int GetAttributeLocation(const std::string& attribute);
+ void DisableAttribute(int loc);
- bool HasUniform(const std::string& uniform);
- uint GetUniformLocation(const std::string& uniform);
- void SetUniformFloat(uint loc, float value);
- void SetUniformVector2(uint loc, const Math::Vector2f& vec2);
- void SetUniformVector3(uint loc, const Math::Vector3f& vec3);
- void SetUniformVector4(uint loc, const Math::Vector4f& vec4);
- void SetUniformColor(uint loc, const Color& color);
- void SetUniformMatrix44(uint loc, const Math::Matrix44& mat44);
- bool SetUniformTexture(uint loc, const Texture& texture);
+ bool HasUniform(const std::string& uniform);
+ uint GetUniformLocation(const std::string& uniform);
+ void SetUniformFloat(uint loc, float value);
+ void SetUniformVector2(uint loc, const Math::Vector2f& vec2);
+ void SetUniformVector3(uint loc, const Math::Vector3f& vec3);
+ void SetUniformVector4(uint loc, const Math::Vector4f& vec4);
+ void SetUniformColor(uint loc, const Color& color);
+ void SetUniformMatrix44(uint loc, const Math::Matrix44& mat44);
+ bool SetUniformTexture(uint loc, const Texture& texture);
- float GetUniformFloat(uint loc);
- AEMath::Vector2f GetUniformVector2(uint loc);
- AEMath::Vector3f GetUniformVector3(uint loc);
- AEMath::Vector4f GetUniformVector4s(uint loc);
- AEMath::Matrix44 GetUniformMatrix44(uint loc);
+ float GetUniformFloat(uint loc);
+ AEMath::Vector2f GetUniformVector2(uint loc);
+ AEMath::Vector3f GetUniformVector3(uint loc);
+ AEMath::Vector4f GetUniformVector4s(uint loc);
+ AEMath::Matrix44 GetUniformMatrix44(uint loc);
- GLuint GetGLProgram();
+ GLuint GetGLProgram();
- static uint GetGLTextureUnitCount();
+ static uint GetGLTextureUnitCount();
- private:
+private:
- bool CompileVertexShader(const std::string& vert, std::string& outError);
- bool CompileFragementShader(const std::string& frag, std::string& outError);
+ bool CompileVertexShader(const std::string& vert, std::string& outError);
+ bool CompileFragementShader(const std::string& frag, std::string& outError);
- std::string GetProgramWarnings();
- std::string GetShaderWarnings(GLuint shader);
+ std::string GetProgramWarnings();
+ std::string GetShaderWarnings(GLuint shader);
- GLuint m_Program;
- GLuint m_VertShader;
- GLuint m_FragShader;
+ GLuint m_Program;
+ GLuint m_VertShader;
+ GLuint m_FragShader;
- luaxport:
+luaxport:
- LUAX_DECL_FACTORY(Shader);
+ LUAX_DECL_FACTORY(Shader);
- LUAX_DECL_METHOD(_New);
- LUAX_DECL_METHOD(_Load);
- LUAX_DECL_METHOD(_Update);
- LUAX_DECL_METHOD(_HasUniform);
- LUAX_DECL_METHOD(_GetUniformLocation);
- LUAX_DECL_METHOD(_SetUniformFloat);
- LUAX_DECL_METHOD(_SetUniformTexture);
- LUAX_DECL_METHOD(_SetUniformVector2);
- LUAX_DECL_METHOD(_SetUniformVector3);
- LUAX_DECL_METHOD(_SetUniformVector4);
- LUAX_DECL_METHOD(_SetUniformColor);
+ LUAX_DECL_METHOD(_New);
+ LUAX_DECL_METHOD(_Load);
+ LUAX_DECL_METHOD(_Update);
+ LUAX_DECL_METHOD(_HasUniform);
+ LUAX_DECL_METHOD(_GetUniformLocation);
+ LUAX_DECL_METHOD(_SetUniformFloat);
+ LUAX_DECL_METHOD(_SetUniformTexture);
+ LUAX_DECL_METHOD(_SetUniformVector2);
+ LUAX_DECL_METHOD(_SetUniformVector3);
+ LUAX_DECL_METHOD(_SetUniformVector4);
+ LUAX_DECL_METHOD(_SetUniformColor);
- LUAX_DECL_METHOD(_GetAttributeLocation);
- LUAX_DECL_METHOD(_SetAttribute);
- LUAX_DECL_METHOD(_DisableAttribute);
+ LUAX_DECL_METHOD(_GetAttributeLocation);
+ LUAX_DECL_METHOD(_SetAttribute);
+ LUAX_DECL_METHOD(_DisableAttribute);
- LUAX_DECL_METHOD(_SetBuiltInUniforms);
+ LUAX_DECL_METHOD(_SetBuiltInUniforms);
- };
+};
- typedef Shader GpuProgram;
+typedef Shader GpuProgram;
- }
-}
+namespace_end
+namespace_end
#endif \ No newline at end of file