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.h60
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;