00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00032
00033 #pragma once
00034
00035 #include "../api_display.h"
00036 #include "../Render/frame_buffer.h"
00037 #include <vector>
00038
00039 class CL_RenderBuffer;
00040 class CL_Texture;
00041
00045 class CL_API_DISPLAY CL_FrameBufferProvider
00046 {
00049
00050 public:
00051 virtual ~CL_FrameBufferProvider() { return; }
00052
00056
00057 public:
00058
00064 virtual CL_Size get_attachment_size(int buffer_id) const = 0;
00065
00066 virtual const std::vector<int> &get_attachment_indexes() const = 0;
00067
00071
00072 public:
00074 virtual void destroy() = 0;
00075
00080 virtual void attach_color_buffer(int color_buffer, const CL_RenderBuffer &render_buffer) = 0;
00081
00088 virtual void attach_color_buffer(int color_buffer, const CL_Texture &texture, int level = 0, int zoffset = 0) = 0;
00089
00097 virtual void attach_color_buffer(int color_buffer, const CL_Texture &texture, CL_TextureSubtype subtype, int level = 0, int zoffset = 0) = 0;
00098
00105 virtual void detach_color_buffer(int color_buffer, const CL_Texture &texture, int level = 0, int zoffset = 0) = 0;
00106
00110 virtual void attach_stencil_buffer(const CL_RenderBuffer &render_buffer) = 0;
00111
00113 virtual void detach_stencil_buffer() = 0;
00114
00118 virtual void attach_depth_buffer(const CL_RenderBuffer &render_buffer) = 0;
00119
00126 virtual void attach_depth_buffer(const CL_Texture &texture, CL_TextureSubtype subtype, int level = 0, int zoffset = 0) = 0;
00127
00129 virtual void detach_depth_buffer() = 0;
00130
00134
00135 private:
00137 };
00138