33 #include "../api_display.h"
35 #include "../Render/graphic_context.h"
36 #include "../Render/primitives_array.h"
37 #include "../Render/texture.h"
38 #include "../../Core/Math/mat4.h"
39 #include "../../Core/Signals/signal_v1.h"
48 class TextureProvider;
51 class OcclusionQueryProvider;
52 class ProgramObjectProvider;
53 class ShaderObjectProvider;
54 class FrameBufferProvider;
55 class RenderBufferProvider;
56 class VertexArrayBufferProvider;
57 class ElementArrayBufferProvider;
58 class TransferBufferProvider;
59 class FontDescription;
60 class PixelBufferProvider;
61 class UniformBufferProvider;
62 class StorageBufferProvider;
63 class PrimitivesArrayProvider;
64 class RasterizerStateDescription;
65 class BlendStateDescription;
66 class DepthStencilStateDescription;
101 virtual int get_max_attributes() = 0;
106 virtual Size get_max_texture_size()
const = 0;
109 virtual Size get_display_window_size()
const = 0;
124 virtual ClipZRange get_clip_z_range()
const = 0;
136 virtual int get_major_version()
const = 0;
142 virtual int get_minor_version()
const = 0;
148 virtual bool has_compute_shader_support()
const = 0;
196 virtual std::shared_ptr<BlendStateProvider> create_blend_state(
const BlendStateDescription &desc) = 0;
216 virtual void set_program_object(
const ProgramObject &program) = 0;
219 virtual void reset_program_object() = 0;
222 virtual void set_uniform_buffer(
int index,
const UniformBuffer &buffer) = 0;
225 virtual void reset_uniform_buffer(
int index) = 0;
228 virtual void set_storage_buffer(
int index,
const StorageBuffer &buffer) = 0;
231 virtual void reset_storage_buffer(
int index) = 0;
234 virtual void set_texture(
int unit_index,
const Texture &texture) = 0;
237 virtual void reset_texture(
int unit_index) = 0;
240 virtual void set_image_texture(
int unit_index,
const Texture &texture) = 0;
243 virtual void reset_image_texture(
int unit_index) = 0;
246 virtual bool is_frame_buffer_owner(
const FrameBuffer &fb) = 0;
252 virtual void reset_frame_buffer() = 0;
254 virtual void set_draw_buffer(
DrawBuffer buffer) = 0;
257 virtual bool is_primitives_array_owner(
const PrimitivesArray &primitives_array) = 0;
263 virtual void set_primitives_array(
const PrimitivesArray &primitives_array) = 0;
266 virtual void draw_primitives_array(
PrimitivesType type,
int offset,
int num_vertices) = 0;
269 virtual void draw_primitives_array_instanced(
PrimitivesType type,
int offset,
int num_vertices,
int instance_count) = 0;
292 virtual void reset_primitives_elements() = 0;
313 virtual void reset_primitives_array() = 0;
316 virtual void set_scissor(
const Rect &rect) = 0;
319 virtual void reset_scissor() = 0;
322 virtual void dispatch(
int x,
int y,
int z) = 0;
325 virtual void clear(
const Colorf &color) = 0;
330 virtual void clear_depth(
float value) = 0;
335 virtual void clear_stencil(
int value) = 0;
338 virtual void set_viewport(
const Rectf &viewport) = 0;
341 virtual void set_viewport(
int index,
const Rectf &viewport) = 0;
344 virtual void set_depth_range(
float n,
float f) = 0;
347 virtual void set_depth_range(
int viewport,
float n,
float f) = 0;
Primitives array description.
Definition: primitives_array.h:69
virtual ~DepthStencilStateProvider()
Definition: graphic_context_provider.h:83
Rasterizer state description.
Definition: rasterizer_state_description.h:43
Floating point color description class (for float).
Definition: color.h:661
Interface for implementing a PrimitivesArray target.
Definition: primitives_array_provider.h:41
Program Object provider.
Definition: program_object_provider.h:43
Frame-buffer object class.
Definition: frame_buffer.h:73
Interface for implementing a RenderBuffer target.
Definition: render_buffer_provider.h:44
Blend state description.
Definition: blend_state_description.h:43
Interface for implementing a GraphicContext target.
Definition: graphic_context_provider.h:87
Texture object class.
Definition: texture.h:104
Occlusion query provider.
Definition: occlusion_query_provider.h:41
Pixel data container.
Definition: pixel_buffer.h:69
virtual ~RasterizerStateProvider()
Definition: graphic_context_provider.h:71
TextureDimensions
Texture dimensions.
Definition: texture.h:92
Element Array Buffer provider.
Definition: pixel_buffer_provider.h:42
DrawBuffer
Drawing buffers.
Definition: graphic_context.h:119
ShaderLanguage
Shader language used.
Definition: graphic_context.h:248
Transfer Buffer provider.
Definition: transfer_buffer_provider.h:42
Definition: graphic_context_provider.h:80
ClipZRange
Definition: mat4.h:52
Definition: graphic_context_provider.h:68
virtual ~BlendStateProvider()
Definition: graphic_context_provider.h:77
StandardProgram
Standard Program.
Definition: graphic_context.h:240
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:453
Signal_v1.
Definition: signal_v1.h:110
Storage Buffer provider.
Definition: storage_buffer_provider.h:40
Shader Object provider.
Definition: shader_object_provider.h:42
Definition: graphic_context_provider.h:74
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:467
TextureFormat
Texture format.
Definition: texture_format.h:41
TextureImageYAxis
Y axis direction for viewports, clipping rects, textures and render targets.
Definition: graphic_context.h:233
virtual ~GraphicContextProvider()
Definition: graphic_context_provider.h:93
Vertex Array Buffer provider.
Definition: vertex_array_buffer_provider.h:42
Interface for implementing a Texture target.
Definition: texture_provider.h:51
DepthStencil state description.
Definition: depth_stencil_state_description.h:43
VertexAttributeDataType
Primitives array description.
Definition: primitives_array.h:57
Program Object.
Definition: program_object.h:70
2D (width,height) size structure - Integer
Definition: size.h:157
Storage Buffer.
Definition: storage_buffer.h:48
Interface for implementing a FrameBuffer target.
Definition: frame_buffer_provider.h:46
Element Array Buffer provider.
Definition: element_array_buffer_provider.h:40
PrimitivesType
Primitive types.
Definition: graphic_context.h:221
C clamp(A val, B minval, C maxval)
Definition: cl_math.h:91