summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/shader.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-04-13 20:15:07 +0800
committerchai <chaifix@163.com>2019-04-13 20:15:07 +0800
commit866e00474be3bfe0e7dac73b720af0b9ebf7109a (patch)
tree36c44e99352e2d582b4f2f1dbd4e9e672a54f2cf /source/modules/asura-core/graphics/shader.h
parentb5b43bac50ad58949e70bcd1a34b1e6c4765fd51 (diff)
*misc
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r--source/modules/asura-core/graphics/shader.h41
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;
+
};
}