Browse Source

Removed set*Data(Target, ...) functions from Buffer.

They didn't make sense at all (and even less with DSA, where target
doesn't need to be specified anywhere), the only usage in BufferedImage
was misunderstood from the beginning.
vectorfields
Vladimír Vondruš 14 years ago
parent
commit
684a1ee712
  1. 137
      src/Buffer.h
  2. 2
      src/BufferedImage.cpp

137
src/Buffer.h

@ -74,9 +74,7 @@ class MAGNUM_EXPORT Buffer {
/**
* @brief %Buffer target
*
* @see bind(Target), unbind(Target),
* setData(Target, GLsizeiptr, const GLvoid*, Usage),
* setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
* @see bind(Target), unbind(Target)
*/
enum class Target: GLenum {
/** Used for storing vertex attributes. */
@ -170,7 +168,7 @@ class MAGNUM_EXPORT Buffer {
/**
* @brief %Buffer usage
*
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
* @see setData(GLsizeiptr, const GLvoid*, Usage)
*/
enum class Usage: GLenum {
/**
@ -313,11 +311,11 @@ class MAGNUM_EXPORT Buffer {
* @param data Pointer to data
* @param usage %Buffer usage
*
* Sets buffer data with default target.
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
* @see bind(), @fn_gl{BufferData}
*/
inline void setData(GLsizeiptr size, const GLvoid* data, Usage usage) {
setData(_defaultTarget, size, data, usage);
bind();
glBufferData(static_cast<GLenum>(_defaultTarget), size, data, static_cast<GLenum>(usage));
}
/**
@ -325,13 +323,10 @@ class MAGNUM_EXPORT Buffer {
* @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).
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
* @see setData(GLsizeiptr, const GLvoid*, Usage).
*/
template<std::size_t size, class T> inline void setData(const T(&data)[size], Usage usage) {
setData(_defaultTarget, data, usage);
setData(size*sizeof(T), data, usage);
}
/**
@ -339,62 +334,15 @@ class MAGNUM_EXPORT Buffer {
* @param data Vector with data
* @param usage %Buffer usage
*
* Sets buffer data with default target.
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
* @see setData(GLsizeiptr, const GLvoid*, Usage)
*/
template<class T> inline void setData(const std::vector<T>& data, Usage usage) {
setData(_defaultTarget, data, usage);
setData(data.size()*sizeof(T), data.data(), usage);
}
/** @overload */
template<std::size_t size, class T> inline void setData(const std::array<T, size>& data, Usage usage) {
setData(_defaultTarget, data, usage);
}
/**
* @brief Set buffer data
* @param target %Target
* @param size Data size
* @param data Pointer to data
* @param usage %Buffer usage
*
* @see bind(Target), @fn_gl{BufferData}
*/
inline void setData(Target target, GLsizeiptr size, const GLvoid* data, Usage usage) {
bind(target);
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).
*
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
*/
template<std::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
* @param data Vector with data
* @param usage %Buffer usage
*
* @see setData(Target, GLsizeiptr, const GLvoid*, Usage)
*/
template<class T> inline void setData(Target target, const std::vector<T>& data, Usage usage) {
setData(target, data.size()*sizeof(T), data.data(), usage);
}
/** @overload */
template<std::size_t size, class T> inline void setData(Target target, const std::array<T, size>& data, Usage usage) {
setData(target, data.size()*sizeof(T), data.data(), usage);
setData(data.size()*sizeof(T), data.data(), usage);
}
/**
@ -403,11 +351,11 @@ class MAGNUM_EXPORT Buffer {
* @param size Data size
* @param data Pointer to data
*
* Sets buffer subdata with default target.
* @see setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
* @see bind(), @fn_gl{BufferSubData}
*/
inline void setSubData(GLintptr offset, GLsizeiptr size, const GLvoid* data) {
setSubData(_defaultTarget, offset, size, data);
bind();
glBufferSubData(static_cast<GLenum>(_defaultTarget), offset, size, data);
}
/**
@ -415,13 +363,10 @@ class MAGNUM_EXPORT Buffer {
* @param offset Offset in the buffer
* @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*).
* @see setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
* @see setSubData(GLintptr, GLsizeiptr, const GLvoid*)
*/
template<std::size_t size, class T> inline void setSubData(GLintptr offset, const T(&data)[size]) {
setSubData(_defaultTarget, offset, data);
setSubData(offset, size*sizeof(T), data);
}
/**
@ -429,61 +374,15 @@ class MAGNUM_EXPORT Buffer {
* @param offset Offset in the buffer
* @param data Vector with data
*
* Sets buffer subdata with default target.
* @see setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
* @see setSubData(GLintptr, GLsizeiptr, const GLvoid*)
*/
template<class T> inline void setSubData(GLintptr offset, const std::vector<T>& data) {
setSubData(_defaultTarget, offset, data);
setSubData(offset, data.size()*sizeof(T), data.data());
}
/** @overload */
template<std::size_t size, class T> inline void setSubData(GLintptr offset, const std::array<T, size>& data) {
setSubData(_defaultTarget, offset, data);
}
/**
* @brief Set buffer subdata
* @param target %Target
* @param offset Offset in the buffer
* @param size Data size
* @param data Pointer to data
*
* @see bind(Target), @fn_gl{BufferSubData}
*/
inline void setSubData(Target target, GLintptr offset, GLsizeiptr size, const GLvoid* data) {
bind(target);
glBufferSubData(static_cast<GLenum>(target), offset, size, data);
}
/**
* @brief Set buffer subdata
* @param target %Target
* @param offset Offset in the buffer
* @param data Fixed-size array with data
*
* More convenient for setting data from fixed-size arrays than
* setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*).
* @see setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
*/
template<std::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
* @param offset Offset in the buffer
* @param data Vector with data
*
* @see setSubData(Target, GLintptr, GLsizeiptr, const GLvoid*)
*/
template<class T> inline void setSubData(Target target, GLintptr offset, const std::vector<T>& data) {
setSubData(target, offset, data.size()*sizeof(T), data.data());
}
/** @overload */
template<std::size_t size, class T> inline void setSubData(Target target, GLintptr offset, const std::array<T, size>& data) {
setSubData(target, offset, data.size()*sizeof(T), data.data());
setSubData(offset, data.size()*sizeof(T), data.data());
}
private:

2
src/BufferedImage.cpp

@ -21,7 +21,7 @@ template<std::uint8_t dimensions> void BufferedImage<dimensions>::setData(const
_components = components;
_type = type;
_size = size;
_buffer.setData(Buffer::Target::PixelPack, pixelSize(_components, _type)*size.product(), data, usage);
_buffer.setData(pixelSize(_components, _type)*size.product(), data, usage);
}
template class BufferedImage<1>;

Loading…
Cancel
Save