Exemple #1
0
	/**
	 *  @glsymbols
	 *  @glfunref{FlushMappedNamedBufferRange}
	 *
	 *  @pre Mapped()
	 *
	 *  @throws Error
	 */
	void FlushRange(BufferSize offset, BufferSize length)
	{
		OGLPLUS_GLFUNC(FlushMappedNamedBufferRange)(
			_name,
			GLintptr(offset.Get()),
			GLsizeiptr(length.Get())
		);
		OGLPLUS_CHECK(
			FlushMappedNamedBufferRange,
			ObjectError,
			Object(BufferName(_name))
		);
	}
Exemple #2
0
	/**
	 *  @param buffer use the specified buffer
	 *  @param offset map offset in units of Type
	 *  @param size map size in units of Type
	 *  @param access the access specifier for the buffer mapping
	 *
	 *  @throws Error
	 */
	DSABufferRawMapEXT(
		BufferName buffer,
		BufferSize offset,
		BufferSize size,
		Bitfield<BufferMapAccess> access
	): _offset(GLintptr(offset.Get()))
	 , _size(GLsizeiptr(size.Get()))
	 , _ptr(
		OGLPLUS_GLFUNC(MapNamedBufferRangeEXT)(
			GetGLName(buffer),
			_offset,
			_size,
			GLbitfield(access)
		)
	), _buf_name(GetGLName(buffer))
	{
		OGLPLUS_CHECK(
			MapNamedBufferRangeEXT,
			ObjectError,
			Object(buffer)
		);
	}
Exemple #3
0
	/**
	 *  @see Data
	 *  @see SubData
	 *  @throws Error
	 *
	 *  @glvoereq{3,1,ARB,copy_buffer}
	 */
	static void CopySubData(
		BufferName readbuffer,
		BufferName writebuffer,
		BufferSize readoffset,
		BufferSize writeoffset,
		BufferSize size
	)
	{
		OGLPLUS_GLFUNC(CopyNamedBufferSubData)(
			GetGLName(readbuffer),
			GetGLName(writebuffer),
			GLintptr(readoffset.Get()),
			GLintptr(writeoffset.Get()),
			GLsizeiptr(size.Get())
		);
		OGLPLUS_CHECK(
			CopyNamedBufferSubData,
			ObjectPairError,
			Subject(readbuffer).
			Object(writebuffer)
		);
	}
Exemple #4
0
	void ClearSubData(
		PixelDataInternalFormat internal_format,
		BufferSize offset,
		BufferSize size,
		PixelDataFormat format,
		const GLtype* data
	) const
	{
		OGLPLUS_GLFUNC(ClearNamedBufferSubData)(
			_name,
			GLenum(internal_format),
			GLintptr(offset.Get()),
			GLsizeiptr(size.Get()),
			GLenum(format),
			GLenum(GetDataType<GLtype>()),
			data
		);
		OGLPLUS_CHECK(
			ClearNamedBufferSubData,
			ObjectError,
			Object(*this).
			EnumParam(internal_format)
		);
	}
Exemple #5
0
	/**
	 *  @see Data
	 *  @see CopySubData
	 *  @throws Error
	 */
	void SubData(
		BufferSize offset,
		const BufferData& data
	) const
	{
		OGLPLUS_GLFUNC(NamedBufferSubData)(
			_name,
			GLintptr(offset.Get()),
			GLsizei(data.Size()),
			data.Data()
		);
		OGLPLUS_CHECK(
			NamedBufferSubData,
			ObjectError,
			Object(*this)
		);
	}
Exemple #6
0
	/** This member function allows to (re-)allocate the buffer storage
	 *  to the specifies @p size, without uploading any data.
	 *
	 *  @glsymbols
	 *  @glfunref{NamedBufferData}
	 *
	 *  @see SubData
	 *  @throws Error
	 */
	void Resize(
		BufferSize size,
		BufferUsage usage = BufferUsage::StaticDraw
	)
	{
		OGLPLUS_GLFUNC(NamedBufferData)(
			_name,
			size.Get(),
			nullptr,
			GLenum(usage)
		);
		OGLPLUS_CHECK(
			NamedBufferData,
			ObjectError,
			Object(*this).
			EnumParam(usage)
		);
	}