33 #include "../../Core/Math/color.h"
34 #include "../Image/texture_format.h"
36 #include "../../Core/Math/mat4.h"
37 #include "../../Core/Math/rect.h"
38 #include "../../Core/Signals/signal.h"
39 #include "primitives_array.h"
40 #include "frame_buffer.h"
41 #include "element_array_vector.h"
42 #include "shader_object.h"
43 #include "program_object.h"
51 class PrimitivesArray;
54 class GraphicContextImpl;
55 class GraphicContext_Impl;
57 class FontProvider_Freetype;
60 class RasterizerStateDescription;
61 class BlendStateDescription;
370 virtual void set_frame_buffer(
const FrameBufferPtr &write_buffer,
const FrameBufferPtr &read_buffer) = 0;
391 virtual void set_texture(
int unit_index,
const TexturePtr &texture) = 0;
398 void set_textures(
int start_index,
const std::vector<TexturePtr> &textures) {
for (
int i = 0;
i < (int)textures.size();
i++)
set_texture(start_index +
i, textures[
i]); }
534 virtual void dispatch(
int x = 1,
int y = 1,
int z = 1) = 0;
576 virtual void flush() = 0;
virtual void set_depth_stencil_state(const DepthStencilStatePtr &state, int stencil_ref=0)=0
Set active depth stencil state.
source (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
Definition: graphic_context.h:172
virtual bool has_compute_shader_support() const =0
PrimitivesType
Primitive types.
Definition: graphic_context.h:223
Definition: graphic_context.h:143
virtual void set_primitives_elements(const ElementArrayBufferPtr &element_array)=0
Sets current elements array buffer.
Direct3D, origin is upper left with Y going downwards.
Definition: graphic_context.h:238
void reset_image_textures(int start_index, size_t count)
Remove all selected textures.
Definition: graphic_context.h:429
source or destination (1, 1, 1, 1)
Definition: graphic_context.h:163
void set_textures(const std::vector< TexturePtr > &textures)
Definition: graphic_context.h:397
float dip_width() const
Definition: graphic_context.h:328
source (Rd, Gd, Bd, Ad)
Definition: graphic_context.h:166
PixelBufferPtr pixeldata(TextureFormat texture_format=tf_rgba8, bool clamp=true)
Return the content of the read buffer into a pixel buffer.
Definition: graphic_context.h:348
Definition: graphic_context.h:75
virtual bool is_frame_buffer_owner(const FrameBufferPtr &fb)=0
Definition: graphic_context.h:139
Rasterizer state description.
Definition: rasterizer_state_description.h:38
2D (width,height) size structure - Integer
Definition: size.h:167
void reset_depth_stencil_state()
Set active depth stencil state.
Definition: graphic_context.h:447
Definition: graphic_context.h:245
void set_image_textures(const std::vector< TexturePtr > &textures)
Definition: graphic_context.h:420
Definition: graphic_context.h:219
Definition: graphic_context.h:130
Definition: graphic_context.h:116
std::shared_ptr< Texture > TexturePtr
Definition: d3d_target.h:37
Definition: graphic_context.h:117
Definition: graphic_context.h:227
void reset_blend_state()
Set active blend state.
Definition: graphic_context.h:444
virtual void draw_primitives_elements(PrimitivesType type, int count, VertexAttributeDataType indices_type, size_t offset=0)=0
Sizef dip_size() const
Definition: graphic_context.h:336
virtual FrameBufferPtr write_frame_buffer() const =0
Definition: graphic_context.h:208
static Colorf white
Definition: color.h:1207
Definition: graphic_context.h:125
virtual std::shared_ptr< BlendState > create_blend_state(const BlendStateDescription &desc)=0
Create blend state object.
void set_textures(int start_index, const std::vector< TexturePtr > &textures)
Definition: graphic_context.h:398
BlendFunc
Blending functions.
Definition: graphic_context.h:157
Definition: graphic_context.h:127
virtual std::shared_ptr< DepthStencilState > create_depth_stencil_state(const DepthStencilStateDescription &desc)=0
Create depth-stencil state object.
Definition: graphic_context.h:99
Blend state description.
Definition: blend_state_description.h:38
virtual ClipZRange clip_z_range() const =0
Returns in what range clip space z values are clipped.
int width() const
Returns the current actual width of the context.
Definition: graphic_context.h:314
std::shared_ptr< StorageBuffer > StorageBufferPtr
Definition: graphic_context.h:65
Definition: graphic_context.h:228
std::shared_ptr< BlendState > BlendStatePtr
Definition: canvas.h:45
FaceSide
Front face modes.
Definition: graphic_context.h:88
void reset_texture(int unit_index)
Definition: graphic_context.h:403
Definition: graphic_context.h:141
FillMode
Polygon filling modes.
Definition: graphic_context.h:80
Definition: graphic_context.h:265
Definition: graphic_context.h:225
Floating point color description class (for float).
Definition: color.h:630
Definition: graphic_context.h:114
virtual void draw_primitives_array_instanced(PrimitivesType type, int offset, int num_vertices, int instance_count)=0
ShaderLanguage
Shader language used.
Definition: graphic_context.h:251
virtual float pixel_ratio() const =0
Definition: graphic_context.h:145
Definition: graphic_context.h:259
virtual void clear(const Colorf &color=Colorf::black)=0
Clears the whole context using the specified color.
Definition: graphic_context.h:111
CompareFunction
Compare functions.
Definition: graphic_context.h:95
virtual void clear_depth(float value=0)=0
virtual void set_program_object(StandardProgram standard_program)=0
Set active program object to the standard program specified.
Definition: graphic_context.h:212
Definition: graphic_context.h:144
Definition: graphic_context.h:246
static Colorf black
Definition: color.h:799
virtual void flush()=0
Flush the command buffer.
ClipZRange
Definition: mat4.h:47
virtual void set_uniform_buffer(int index, const UniformBufferPtr &buffer)=0
Select uniform buffer into index.
virtual FrameBufferPtr read_frame_buffer() const =0
TextureFormat
Texture format.
Definition: texture_format.h:35
virtual void set_texture(int unit_index, const TexturePtr &texture)=0
Definition: texture_format.h:38
virtual void set_primitives_array(const PrimitivesArrayPtr &array)=0
Set the primitives array on the gc.
void reset_frame_buffer()
Resets the current frame buffer to be the initial frame buffer.
Definition: graphic_context.h:373
std::shared_ptr< RasterizerState > RasterizerStatePtr
Definition: graphic_context.h:260
source or destination (Ad, Ad, Ad, Ad)
Definition: graphic_context.h:184
float dip_height() const
Definition: graphic_context.h:332
Definition: graphic_context.h:104
Definition: graphic_context.h:126
std::shared_ptr< ElementArrayBuffer > ElementArrayBufferPtr
Definition: d3d_target.h:43
Definition: graphic_context.h:98
virtual ProgramObjectPtr program_object() const =0
Returns the currently selected program object.
void reset_textures(int start_index, size_t count)
Remove all selected textures.
Definition: graphic_context.h:406
Definition: graphic_context.h:151
virtual ShaderLanguage shader_language() const =0
Returns the shader language used.
2D (x,y) point structure - Integer
Definition: point.h:58
Definition: graphic_context.h:131
source or destination (1, 1, 1, 1) - (Ac, Ac, Ac, Ac)
Definition: graphic_context.h:202
Definition: graphic_context.h:147
TextureImageYAxis
Y axis direction for viewports, clipping rects, textures and render targets.
Definition: graphic_context.h:235
destination (Rs, Gs, Bs, As)
Definition: graphic_context.h:169
Definition: graphic_context.h:253
Definition: graphic_context.h:218
virtual TextureImageYAxis texture_image_y_axis() const =0
Returns the Y axis direction for viewports, clipping rects, textures and render targets.
destination (1, 1, 1, 1) - (Rs, Gs, Bs, As)
Definition: graphic_context.h:175
Definition: graphic_context.h:124
virtual int major_version() const =0
Definition: graphic_context.h:83
2D (width,height) size structure - Float
Definition: size.h:180
virtual void set_viewport(const Rectf &viewport, TextureImageYAxis y_axis)=0
Type height
Size height.
Definition: size.h:74
Definition: graphic_context.h:132
virtual void set_scissor(const Rect &rect, TextureImageYAxis y_axis)=0
Set the current clipping rectangle.
virtual void reset_scissor()=0
Removes the set clipping rectangle.
Definition: graphic_context.h:254
Definition: graphic_context.h:230
void reset_primitives_array()
Reset the primitives arrays.
Definition: graphic_context.h:531
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:505
void reset_primitives_elements()
Resets current elements array buffer.
Definition: graphic_context.h:509
virtual void set_storage_buffer(int index, const StorageBufferPtr &buffer)=0
Select storage buffer into index.
virtual void set_rasterizer_state(const RasterizerStatePtr &state)=0
Set active rasterizer state.
Definition: graphic_context.h:91
Definition: graphic_context.h:103
std::shared_ptr< UniformBuffer > UniformBufferPtr
Definition: d3d_target.h:47
std::shared_ptr< FrameBuffer > FrameBufferPtr
Definition: frame_buffer.h:132
Definition: graphic_context.h:97
Definition: graphic_context.h:244
LogicOp
Logic Op.
Definition: graphic_context.h:136
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:491
Definition: graphic_context.h:101
source or destination (1, 1, 1, 1) - (As, As, As, As)
Definition: graphic_context.h:181
Type width
Size width.
Definition: size.h:71
source (f, f, f, 1) - f = min(As, 1 - Ad)
Definition: graphic_context.h:190
virtual void draw_primitives(PrimitivesType type, int num_vertices, const PrimitivesArrayPtr &array)=0
Draw primitives on gc.
Definition: graphic_context.h:74
Definition: graphic_context.h:84
source or destination (1, 1, 1, 1) - (Rc, Gc, Bc, Ac)
Definition: graphic_context.h:196
virtual PixelBufferPtr pixeldata(const Rect &rect, TextureFormat texture_format=tf_rgba8, bool clamp=true) const =0
Return the content of the read buffer into a pixel buffer.
virtual void set_draw_buffer(DrawBuffer buffer)=0
Set used draw buffer.
std::shared_ptr< ProgramObject > ProgramObjectPtr
Definition: graphic_context.h:62
Definition: graphic_context.h:140
void reset_rasterizer_state()
Set active rasterizer state.
Definition: graphic_context.h:441
CullMode
Polygon culling modes.
Definition: graphic_context.h:72
Definition: graphic_context.h:90
Definition: graphic_context.h:128
void reset_image_texture(int unit_index)
Definition: graphic_context.h:426
Definition: graphic_context.h:100
Definition: graphic_context.h:211
Definition: graphic_context.h:153
Definition: graphic_context.h:148
void set_frame_buffer(const FrameBufferPtr &write_buffer)
Sets the current frame buffer.
Definition: graphic_context.h:369
void set_depth_range(float n, float f)
Specifies the depth range for all viewports.
Definition: graphic_context.h:567
std::shared_ptr< DepthStencilState > DepthStencilStatePtr
Definition: graphic_context.h:266
DepthStencil state description.
Definition: depth_stencil_state_description.h:38
source or destination (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
Definition: graphic_context.h:187
Definition: graphic_context.h:112
std::shared_ptr< PixelBuffer > PixelBufferPtr
Definition: d3d_target.h:39
std::shared_ptr< GraphicContext > GraphicContextPtr
Definition: d3d_target.h:49
source or destination (Ac, Ac, Ac, Ac)
Definition: graphic_context.h:199
Definition: graphic_context.h:247
void draw_primitives_array(PrimitivesType type, int num_vertices)
Draws primitives from the current assigned primitives array.
Definition: graphic_context.h:471
Definition: graphic_context.h:102
Definition: graphic_context.h:226
source or destination (0, 0, 0, 0)
Definition: graphic_context.h:160
Definition: graphic_context.h:255
int height() const
Returns the current actual height of the context.
Definition: graphic_context.h:317
std::shared_ptr< PrimitivesArray > PrimitivesArrayPtr
Definition: graphic_context.h:67
Definition: graphic_context.h:82
Definition: graphic_context.h:229
VertexAttributeDataType
Primitives array description.
Definition: primitives_array.h:48
Definition: graphic_context.h:146
Interface to drawing graphics.
Definition: graphic_context.h:269
void reset_program_object()
Remove active program object.
Definition: graphic_context.h:456
Definition: graphic_context.h:110
Definition: graphic_context.h:150
void reset_storage_buffer(int index)
Remove storage buffer from index.
Definition: graphic_context.h:385
Definition: graphic_context.h:231
source or destination (Rc, Gc, Bc, Ac)
Definition: graphic_context.h:193
Definition: graphic_context.h:76
PointSpriteOrigin
Point Sprite Origin.
Definition: graphic_context.h:216
Definition: graphic_context.h:115
virtual void set_image_texture(int unit_index, const TexturePtr &texture)=0
virtual bool is_primitives_array_owner(const PrimitivesArrayPtr &primitives_array)=0
Definition: graphic_context.h:210
Definition: graphic_context.h:152
OpenGL, origin is lower left with Y going upwards.
Definition: graphic_context.h:237
virtual int minor_version() const =0
virtual void draw_primitives_elements_instanced(PrimitivesType type, int count, VertexAttributeDataType indices_type, size_t offset, int instance_count)=0
Definition: graphic_context.h:209
source or destination (As, As, As, As)
Definition: graphic_context.h:178
virtual void dispatch(int x=1, int y=1, int z=1)=0
Execute a compute shader.
Definition: Application/application.h:35
void reset_uniform_buffer(int index)
Remove uniform buffer from index.
Definition: graphic_context.h:379
virtual void clear_stencil(int value=0)=0
StencilOp
Stencil operations.
Definition: graphic_context.h:108
virtual Size max_texture_size() const =0
virtual Size size() const =0
Returns the current actual size of the context.
Definition: graphic_context.h:149
Definition: graphic_context.h:142
BlendEquation
Blending equations.
Definition: graphic_context.h:206
Definition: graphic_context.h:113
Definition: graphic_context.h:123
Definition: graphic_context.h:256
Definition: graphic_context.h:129
Definition: graphic_context.h:138
StandardProgram
Standard Program.
Definition: graphic_context.h:242
void set_image_textures(int start_index, const std::vector< TexturePtr > &textures)
Definition: graphic_context.h:421
DrawBuffer
Drawing buffers.
Definition: graphic_context.h:121
virtual void set_blend_state(const BlendStatePtr &state, const Colorf &blend_color=Colorf::white, unsigned int sample_mask=0xffffffff)=0
Set active blend state.
virtual std::shared_ptr< RasterizerState > create_rasterizer_state(const RasterizerStateDescription &desc)=0
Create rasterizer state object.
Definition: graphic_context.h:262