From 9461f780c433f38564cb434ece8b455f9e6a6e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 21 Aug 2012 18:15:40 +0200 Subject: [PATCH] Ability to set buffer (sub)data from fixed-size array. Currently you had to do this, even if sizeof(data) was known at compile time: GLfloat data[] = { 2.0f, -1.5f, 3.0f, 7.0f }; buffer.setData(sizeof(data), data, usage); Now it's enough to do this: buffer.setData(data, usage); --- src/Buffer.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/Buffer.h b/src/Buffer.h index c76260f3e..54af31cf4 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -237,6 +237,19 @@ class Buffer { setData(_defaultTarget, size, data, usage); } + /** + * @brief Set buffer data + * @param data Fixed-size array with data + * @param usage %Buffer usage + * + * Sets buffer data with default target. More convenient for setting + * data from fixed-size arrays than + * setData(GLsizeiptr, const GLvoid*, Usage). + */ + template inline void setData(const T(&data)[size], Usage usage) { + setData(_defaultTarget, data, usage); + } + /** * @brief Set buffer data * @param data Vector with data @@ -260,6 +273,19 @@ class Buffer { glBufferData(static_cast(target), size, data, static_cast(usage)); } + /** + * @brief Set buffer data + * @param target %Target + * @param data Fixed-size array with data + * @param usage %Buffer usage + * + * More convenient for setting data from fixed-size arrays than + * setData(Target, GLsizeiptr, const GLvoid*, Usage). + */ + template inline void setData(Target target, const T(&data)[size], Usage usage) { + setData(target, size*sizeof(T), data, usage); + } + /** * @brief Set buffer data * @param target %Target @@ -282,6 +308,19 @@ class Buffer { setSubData(_defaultTarget, offset, size, data); } + /** + * @brief Set buffer subdata + * @param offset Offset + * @param data Fixed-size array with data + * + * Sets buffer subdata with default target. More convenient for + * setting data from fixed-size arrays than + * setSubData(GLintptr, GLsizeiptr, const GLvoid*). + */ + template inline void setSubData(GLintptr offset, const T(&data)[size]) { + setSubData(_defaultTarget, offset, data); + } + /** * @brief Set buffer subdata * @param offset Offset @@ -305,6 +344,19 @@ class Buffer { glBufferSubData(static_cast(target), offset, size, data); } + /** + * @brief Set buffer subdata + * @param target %Target + * @param offset Offset + * @param data Fixed-size array with data + * + * More convenient for setting data from fixed-size arrays than + * setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*). + */ + template inline void setSubData(Target target, GLintptr offset, const T(&data)[size]) { + setSubData(target, offset, size*sizeof(T), data); + } + /** * @brief Set buffer subdata * @param target %Target