1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00
GLideN64/src/Graphics/PixelBuffer.h
2017-01-23 21:20:36 +07:00

46 lines
892 B
C++

#pragma once
#include "Parameter.h"
namespace graphics {
class PixelWriteBuffer
{
public:
virtual ~PixelWriteBuffer() {}
virtual void * getWriteBuffer(size_t _size) = 0;
virtual void closeWriteBuffer() = 0;
virtual void * getData() = 0;
virtual void bind() = 0;
virtual void unbind() = 0;
};
class PixelReadBuffer
{
public:
virtual ~PixelReadBuffer() {}
virtual void readPixels(s32 _x,s32 _y, u32 _width, u32 _height, Parameter _format, Parameter _type) = 0;
virtual void * getDataRange(u32 _offset, u32 _range) = 0;
virtual void closeReadBuffer() = 0;
virtual void bind() = 0;
virtual void unbind() = 0;
};
template<class T>
class PixelBufferBinder
{
public:
PixelBufferBinder(T * _buffer)
: m_buffer(_buffer) {
m_buffer->bind();
}
~PixelBufferBinder() {
m_buffer->unbind();
m_buffer = nullptr;
}
private:
T * m_buffer;
};
}