summaryrefslogtreecommitdiff
path: root/src/core/framebuffer.h
blob: 78ead0ebcefb9eaa730240b546ecdf9a98e99514 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef _SOFTSHADEROOM_FRAMEBUFFER_H_
#define _SOFTSHADEROOM_FRAMEBUFFER_H_

#include "texture.h"
#include "depth.h"
#include "stencil.h"

/*frame buffer object*/

#define RENDER_TARGET_COUNT   6

/*
** OpenGL��fbo�������ҵ������renderbuffer����texture2d�󶨣������Ч��ֻ�ṩ
** 8��texture2d���԰󶨵�color attachment��
** �����������Ȳ��Ի�ģ����ԣ���ôӦ�ð󶨶�Ӧ����Ȼ����ģ�建��
*/
typedef struct FrameBuffer{
	Texture* render_textures[RENDER_TARGET_COUNT]; /*color attachments*/
	float* depth_buffer; /*depth attachment*/
	byte* stencil_buffer;  /*stencil attachment*/
} FrameBuffer;

FrameBuffer* fbo_create();

void fbo_attachrendertexture(FrameBuffer* fb, uint attachment, Texture* rt);
/*depth buffer��stencil buffer�����0���󶨵���Ļ������*/
void fbo_attachdepthbuffer(FrameBuffer* fb, float* depthbuffer);
void fbo_attachstencilbuffer(FrameBuffer* fb, byte* stencilbuffer);

void fbo_free(FrameBuffer* fb);

#endif