diff options
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r-- | source/modules/asura-core/graphics/shader.h | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h index 25b36dc..a725ccf 100644 --- a/source/modules/asura-core/graphics/shader.h +++ b/source/modules/asura-core/graphics/shader.h @@ -45,23 +45,18 @@ namespace AsuraEngine void OnUnuse(); /// - /// öԣAsuraֻ֧2ά + /// öԣЩֵframeworkrenderer汻ãImageMesh2DЩԴ + /// normalizedΪtrueݻڸbuffer¹һ255ɫһ + /// 0~1 /// - //int GetAttributeLocation(const std::string& name); - //void SetAttribute(int loc, void* data, uint offset = 0, uint stride = 0); - //void SetAttribute(int loc, GPUBuffer* vbo, uint offset = 0, uint stride = 0); - - /// - /// ǰö - /// - void SetAttribPosition(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribTangent(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribNormal(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribTexcoord0(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribTexcoord1(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribTexcoord2(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribTexcoord3(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - void SetAttribColor(int size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); + void SetAttribPosition(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribTangent(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribNormal(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribColor(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribTexcoord0(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribTexcoord1(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribTexcoord2(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); + void SetAttribTexcoord3(int size, GPUBuffer* vbo, GLsizei offset = 0, GLsizei stride = 0, bool normalized = false); /// /// uniform @@ -98,31 +93,40 @@ namespace AsuraEngine LUAX_DECL_FACTORY(Shader); LUAX_DECL_METHOD(_New); - LUAX_DECL_METHOD(_Use); - LUAX_DECL_METHOD(_Unuse); LUAX_DECL_METHOD(_Load); LUAX_DECL_METHOD(_Update); LUAX_DECL_METHOD(_HasUniform); LUAX_DECL_METHOD(_GetUniformLocation); - LUAX_DECL_METHOD(_SetBuiltInUniforms); LUAX_DECL_METHOD(_SetUniformFloat); LUAX_DECL_METHOD(_SetUniformTexture); LUAX_DECL_METHOD(_SetUniformVector2); LUAX_DECL_METHOD(_SetUniformVector3); LUAX_DECL_METHOD(_SetUniformVector4); LUAX_DECL_METHOD(_SetUniformColor); + // vertex attributes + LUAX_DECL_METHOD(_SetAttribPosition); + LUAX_DECL_METHOD(_SetAttribTangent); + LUAX_DECL_METHOD(_SetAttribNormal); + LUAX_DECL_METHOD(_SetAttribColor); + LUAX_DECL_METHOD(_SetAttribTexcoord0); + LUAX_DECL_METHOD(_SetAttribTexcoord1); + LUAX_DECL_METHOD(_SetAttribTexcoord2); + LUAX_DECL_METHOD(_SetAttribTexcoord3); + // uniform + LUAX_DECL_METHOD(_SetBuiltInUniforms); //----------------------------------------------------------------------------// std::string GetProgramWarnings(); std::string GetShaderWarnings(GLuint shader); + void UpdateSemanticsLocations(); /// - /// AsuraShader壬Ժuniformframeworkлshaderװ + /// AsuraShader壬Ժuniformframeworkлshaderٴηװ /// ν壬ָshaderԶıⲿʱҪṩЩֵ /// ĻҪ /// - enum ASLSemantics + enum Semantics { // MVP SEMANTICS_UNIFORM_MODEL_MATRIX = 0, @@ -154,24 +158,12 @@ namespace AsuraEngine GLuint mVertShader; GLuint mFragShader; - /// - /// Model\View\Projection matrix uniformlocationAsuraҪshader - /// 壺 - /// 1: asura_model_matrix ģ; - /// 2: asura_view_matrix ۲߾ - /// 3: asura_projection_matrix ͶӰ - /// frameworkø壬ֵϷͱ༭еġ - /// + // GLint mMVP[3]; - - /// - /// Եlocation - /// GLint mPosition; GLint mTangent; GLint mNormal; GLint mColor; - // ֧UV GLint mTexcoord0; GLint mTexcoord1; GLint mTexcoord2; |