Browse Source

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);
vectorfields
Vladimír Vondruš 14 years ago
parent
commit
9461f780c4
  1. 52
      src/Buffer.h

52
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<size_t size, class T> 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<GLenum>(target), size, data, static_cast<GLenum>(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<size_t size, class T> 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<size_t size, class T> 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<GLenum>(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<size_t size, class T> 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

Loading…
Cancel
Save