diff options
author | chai <chaifix@163.com> | 2019-04-13 20:15:07 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-04-13 20:15:07 +0800 |
commit | 866e00474be3bfe0e7dac73b720af0b9ebf7109a (patch) | |
tree | 36c44e99352e2d582b4f2f1dbd4e9e672a54f2cf /source/modules/asura-core/graphics/shader.h | |
parent | b5b43bac50ad58949e70bcd1a34b1e6c4765fd51 (diff) |
*misc
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r-- | source/modules/asura-core/graphics/shader.h | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h index a725ccf..9bb745e 100644 --- a/source/modules/asura-core/graphics/shader.h +++ b/source/modules/asura-core/graphics/shader.h @@ -17,7 +17,8 @@ #include "gl.h" #include "color.h" #include "texture.h" -#include "gpu_buffer.h" +#include "vertex_buffer.h" +#include "index_buffer.h" namespace AsuraEngine { @@ -45,18 +46,23 @@ namespace AsuraEngine void OnUnuse(); /// + /// Disable֮ǰSetAttribXXXattributesÿdrawcallʱᱻglá + /// + void DisableAttribArraies(); + + /// /// öԣЩֵframeworkrenderer汻ãImageMesh2DЩԴ /// normalizedΪtrueݻڸbuffer¹һ255ɫһ /// 0~1 /// - 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); + void SetAttribPosition(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribTangent(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribNormal(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribColor(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribTexcoord0(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribTexcoord1(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribTexcoord2(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); + void SetAttribTexcoord3(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false); /// /// uniform @@ -132,6 +138,8 @@ namespace AsuraEngine SEMANTICS_UNIFORM_MODEL_MATRIX = 0, SEMANTICS_UNIFORM_VIEW_MATRIX, SEMANTICS_UNIFORM_PROJECTION_MATRIX, + // ʱɫ + SEMANTICS_UNIFORM_DRAW_COLOR, // SEMANTICS_ATTRIBUTE_POSITION, // @@ -149,6 +157,18 @@ namespace AsuraEngine SEMANTICS_COUNT }; + enum Attribute + { + ATTRIBUTE_POSITION = 1, + ATTRIBUTE_TANGENT = 1 << 1, + ATTRIBUTE_NORMAL = 1 << 2, + ATTRIBUTE_COLOR = 1 << 3, + ATTRIBUTE_TEXCOORD0 = 1 << 4, + ATTRIBUTE_TEXCOORD1 = 1 << 5, + ATTRIBUTE_TEXCOORD2 = 1 << 6, + ATTRIBUTE_TEXCOORD3 = 1 << 7, + }; + /// /// Asura shader ַͳһ /// @@ -157,6 +177,7 @@ namespace AsuraEngine GLuint mProgram; GLuint mVertShader; GLuint mFragShader; + GLuint mDrawColor; // GLint mMVP[3]; @@ -169,6 +190,8 @@ namespace AsuraEngine GLint mTexcoord2; GLint mTexcoord3; + int mEnabledAttributes; + }; } |