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
|