1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00
GLideN64/FrameBuffer.h

61 lines
1.4 KiB
C
Raw Normal View History

#ifndef FRAMEBUFFER_H
#define FRAMEBUFFER_H
#include "Types.h"
#include "Textures.h"
struct gDPTile;
struct DepthBuffer;
struct FrameBuffer
{
FrameBuffer *higher, *lower;
CachedTexture *texture;
DepthBuffer *pDepthBuffer;
2013-06-01 13:10:30 +00:00
GLuint fbo;
u32 startAddress, endAddress;
u32 size, width, height, fillcolor;
bool cleared;
gDPTile *loadTile;
float scaleX, scaleY;
};
struct FrameBufferList
{
FrameBuffer *top, *bottom, *current;
int numBuffers;
2013-06-01 13:10:30 +00:00
GLenum drawBuffer;
2014-09-04 12:46:46 +00:00
static FrameBufferList & get()
{
static FrameBufferList frameBufferList;
return frameBufferList;
}
private:
FrameBufferList() : current(NULL), drawBuffer(GL_BACK) {}
FrameBufferList(const FrameBufferList &);
};
2014-09-04 12:46:46 +00:00
inline
FrameBufferList & frameBufferList()
{
return FrameBufferList::get();
}
void FrameBuffer_Init();
void FrameBuffer_Destroy();
void FrameBuffer_SaveBuffer( u32 address, u16 format, u16 size, u16 width, u16 height );
void FrameBuffer_RenderBuffer( u32 address );
void FrameBuffer_RemoveBuffer( u32 address );
2013-10-30 06:07:24 +00:00
void FrameBuffer_AttachDepthBuffer();
void FrameBuffer_CopyToRDRAM( u32 address, bool bSync );
void FrameBuffer_CopyFromRDRAM( u32 address, bool bUseAlpha );
2013-11-12 08:41:19 +00:00
void FrameBuffer_CopyDepthBuffer( u32 address );
FrameBuffer *FrameBuffer_FindBuffer( u32 address );
void FrameBuffer_ActivateBufferTexture( s16 t, FrameBuffer *buffer );
void FrameBuffer_ActivateBufferTextureBG( s16 t, FrameBuffer *buffer );
#endif