2013-04-05 06:13:26 +00:00
|
|
|
#ifndef FRAMEBUFFER_H
|
|
|
|
#define FRAMEBUFFER_H
|
|
|
|
|
|
|
|
#include "Types.h"
|
|
|
|
#include "Textures.h"
|
2013-06-29 11:52:57 +00:00
|
|
|
struct gDPTile;
|
2013-11-11 08:57:57 +00:00
|
|
|
struct DepthBuffer;
|
2013-04-05 06:13:26 +00:00
|
|
|
|
|
|
|
struct FrameBuffer
|
|
|
|
{
|
|
|
|
FrameBuffer *higher, *lower;
|
|
|
|
|
|
|
|
CachedTexture *texture;
|
2013-11-11 08:57:57 +00:00
|
|
|
DepthBuffer *pDepthBuffer;
|
2013-06-01 13:10:30 +00:00
|
|
|
GLuint fbo;
|
2013-04-05 06:13:26 +00:00
|
|
|
|
|
|
|
u32 startAddress, endAddress;
|
2013-08-10 11:10:44 +00:00
|
|
|
u32 size, width, height, fillcolor;
|
|
|
|
bool cleared;
|
2013-06-29 11:52:57 +00:00
|
|
|
gDPTile *loadTile;
|
2013-04-05 06:13:26 +00:00
|
|
|
float scaleX, scaleY;
|
|
|
|
};
|
|
|
|
|
2013-10-24 09:20:05 +00:00
|
|
|
struct FrameBufferList
|
2013-04-05 06:13:26 +00:00
|
|
|
{
|
|
|
|
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 &);
|
2013-04-05 06:13:26 +00:00
|
|
|
};
|
|
|
|
|
2014-09-04 12:46:46 +00:00
|
|
|
inline
|
|
|
|
FrameBufferList & frameBufferList()
|
|
|
|
{
|
|
|
|
return FrameBufferList::get();
|
|
|
|
}
|
2013-04-05 06:13:26 +00:00
|
|
|
|
|
|
|
void FrameBuffer_Init();
|
|
|
|
void FrameBuffer_Destroy();
|
2013-06-11 17:20:10 +00:00
|
|
|
void FrameBuffer_SaveBuffer( u32 address, u16 format, u16 size, u16 width, u16 height );
|
2013-04-05 06:13:26 +00:00
|
|
|
void FrameBuffer_RenderBuffer( u32 address );
|
|
|
|
void FrameBuffer_RemoveBuffer( u32 address );
|
2013-10-30 06:07:24 +00:00
|
|
|
void FrameBuffer_AttachDepthBuffer();
|
2013-09-05 16:24:34 +00:00
|
|
|
void FrameBuffer_CopyToRDRAM( u32 address, bool bSync );
|
2013-09-15 14:40:16 +00:00
|
|
|
void FrameBuffer_CopyFromRDRAM( u32 address, bool bUseAlpha );
|
2013-11-12 08:41:19 +00:00
|
|
|
void FrameBuffer_CopyDepthBuffer( u32 address );
|
2013-04-05 06:13:26 +00:00
|
|
|
FrameBuffer *FrameBuffer_FindBuffer( u32 address );
|
|
|
|
void FrameBuffer_ActivateBufferTexture( s16 t, FrameBuffer *buffer );
|
2013-06-09 11:55:21 +00:00
|
|
|
void FrameBuffer_ActivateBufferTextureBG( s16 t, FrameBuffer *buffer );
|
2013-04-05 06:13:26 +00:00
|
|
|
|
|
|
|
#endif
|