diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2016-09-20 17:43:13 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2016-09-20 17:50:20 +0300 |
commit | 04bc828fb6cde003e65b3cceb25c24b0aa46250a (patch) | |
tree | 3fa9bfe37bf0bbc105119f120c6239bec9d7f647 | |
parent | 6ebf5c18c396ab8f00000560b44b397cfa0cd018 (diff) |
gawain update: immAttribute for 2i
-rw-r--r-- | source/blender/gpu/gawain/immediate.c | 32 | ||||
-rw-r--r-- | source/blender/gpu/gawain/immediate.h | 6 |
2 files changed, 38 insertions, 0 deletions
diff --git a/source/blender/gpu/gawain/immediate.c b/source/blender/gpu/gawain/immediate.c index 6ae531bf451..ec4797a1507 100644 --- a/source/blender/gpu/gawain/immediate.c +++ b/source/blender/gpu/gawain/immediate.c @@ -468,6 +468,26 @@ void immAttrib4f(unsigned attrib_id, float x, float y, float z, float w) data[3] = w; } +void immAttrib2i(unsigned attrib_id, int x, int y) + { + Attrib* attrib = imm.vertex_format.attribs + attrib_id; + +#if TRUST_NO_ONE + assert(attrib_id < imm.vertex_format.attrib_ct); + assert(attrib->comp_type == GL_INT); + assert(attrib->comp_ct == 2); + assert(imm.vertex_idx < imm.vertex_ct); + assert(imm.primitive != PRIM_NONE); // make sure we're between a Begin/End pair +#endif + + setAttribValueBit(attrib_id); + + int* data = (int*)(imm.vertex_data + attrib->offset); + + data[0] = x; + data[1] = y; + } + void immAttrib3fv(unsigned attrib_id, const float data[3]) { immAttrib3f(attrib_id, data[0], data[1], data[2]); @@ -581,6 +601,12 @@ void immVertex3f(unsigned attrib_id, float x, float y, float z) immEndVertex(); } +void immVertex2i(unsigned attrib_id, int x, int y) + { + immAttrib2i(attrib_id, x, y); + immEndVertex(); + } + void immVertex2fv(unsigned attrib_id, const float data[2]) { immAttrib2f(attrib_id, data[0], data[1]); @@ -604,6 +630,12 @@ void immUniform4f(const char* name, float x, float y, float z, float w) glUniform4f(loc, x, y, z, w); } +void immVertex2iv(unsigned attrib_id, const int data[2]) + { + immAttrib2i(attrib_id, data[0], data[1]); + immEndVertex(); + } + void immUniformColor3ubv(const unsigned char rgb[3]) { const float scale = 1.0f / 255.0f; diff --git a/source/blender/gpu/gawain/immediate.h b/source/blender/gpu/gawain/immediate.h index 1854819cca2..d33f6804084 100644 --- a/source/blender/gpu/gawain/immediate.h +++ b/source/blender/gpu/gawain/immediate.h @@ -41,6 +41,8 @@ void immAttrib2f(unsigned attrib_id, float x, float y); void immAttrib3f(unsigned attrib_id, float x, float y, float z); void immAttrib4f(unsigned attrib_id, float x, float y, float z, float w); +void immAttrib2i(unsigned attrib_id, int x, int y); + void immAttrib3fv(unsigned attrib_id, const float data[3]); void immAttrib4fv(unsigned attrib_id, const float data[4]); @@ -56,9 +58,13 @@ void immEndVertex(void); // and move on to the next vertex void immVertex2f(unsigned attrib_id, float x, float y); void immVertex3f(unsigned attrib_id, float x, float y, float z); +void immVertex2i(unsigned attrib_id, int x, int y); + void immVertex2fv(unsigned attrib_id, const float data[2]); void immVertex3fv(unsigned attrib_id, const float data[3]); +void immVertex2iv(unsigned attrib_id, const int data[2]); + // provide values that don't change for the entire draw call void immUniform4f(const char* name, float x, float y, float z, float w); |