34 #include "../api_display.h"
35 #include "../2D/color.h"
36 #include "../Image/texture_format.h"
38 #include "../../Core/Math/mat4.h"
39 #include "../../Core/Math/rect.h"
40 #include "../../Core/Signals/signal_v0.h"
41 #include "primitives_array.h"
42 #include "frame_buffer.h"
43 #include "element_array_vector.h"
54 class PrimitivesArray;
57 class GraphicContextProvider;
58 class GraphicContext_Impl;
62 class FontProvider_Freetype;
65 class RasterizerState;
67 class DepthStencilState;
281 void throw_if_null()
const;
296 int get_major_version()
const;
302 int get_minor_version()
const;
308 bool has_compute_shader_support()
const;
314 Texture get_texture(
int index)
const;
319 std::vector<Texture> get_textures()
const;
332 int get_width()
const;
335 int get_height()
const;
338 Size get_size()
const;
343 Size get_max_texture_size()
const;
376 void set_frame_buffer(
const FrameBuffer &write_buffer);
380 void reset_frame_buffer();
383 void set_uniform_buffer(
int index,
const UniformBuffer &buffer);
386 void reset_uniform_buffer(
int index);
389 void set_storage_buffer(
int index,
const StorageBuffer &buffer);
392 void reset_storage_buffer(
int index);
398 void set_texture(
int unit_index,
const Texture &texture);
405 void set_textures(std::vector<Texture> &textures);
410 void reset_texture(
int unit_index);
413 void reset_textures();
419 void set_image_texture(
int unit_index,
const Texture &texture);
426 void set_image_texture(std::vector<Texture> &textures);
431 void reset_image_texture(
int unit_index);
434 void reset_image_textures();
443 void set_depth_stencil_state(
const DepthStencilState &state,
int stencil_ref = 0);
446 void reset_rasterizer_state();
449 void reset_blend_state();
452 void reset_depth_stencil_state();
463 void reset_program_object();
469 bool is_primitives_array_owner(
const PrimitivesArray &primitives_array);
478 void draw_primitives_array(
PrimitivesType type,
int num_vertices);
485 void draw_primitives_array(
PrimitivesType type,
int offset,
int num_vertices);
493 void draw_primitives_array_instanced(
PrimitivesType type,
int offset,
int num_vertices,
int instance_count);
499 template<
typename Type>
523 void reset_primitives_elements();
620 void reset_primitives_array();
623 void dispatch(
int x = 1,
int y = 1,
int z = 1);
631 void clear_stencil(
int value = 0);
636 void clear_depth(
float value = 0);
642 void reset_scissor();
647 void set_viewport(
const Rectf &viewport);
653 void set_viewport(
int index,
const Rectf &viewport);
656 void set_depth_range(
float n,
float f);
659 void set_depth_range(
int viewport,
float n,
float f);
673 bool operator ==(
const GraphicContext &other)
const {
return impl == other.impl; }
674 bool operator !=(
const GraphicContext &other)
const {
return impl != other.impl; }
680 std::shared_ptr<GraphicContext_Impl> impl;
Definition: graphic_context.h:126
PointSpriteOrigin
Point Sprite Origin.
Definition: graphic_context.h:214
Primitives array description.
Definition: primitives_array.h:69
Definition: graphic_context.h:140
Floating point color description class (for float).
Definition: color.h:661
Rasterizer state setup.
Definition: rasterizer_state.h:45
Definition: graphic_context.h:144
source or destination (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
Definition: graphic_context.h:185
source or destination (Ac, Ac, Ac, Ac)
Definition: graphic_context.h:197
Definition: graphic_context.h:123
static Colorf white
Definition: color.h:1245
destination (1, 1, 1, 1) - (Rs, Gs, Bs, As)
Definition: graphic_context.h:173
Frame-buffer object class.
Definition: frame_buffer.h:73
source (f, f, f, 1) - f = min(As, 1 - Ad)
Definition: graphic_context.h:188
Definition: graphic_context.h:252
Definition: graphic_context.h:206
Definition: graphic_context.h:217
Definition: graphic_context.h:142
FaceSide
Front face modes.
Definition: graphic_context.h:86
Definition: graphic_context.h:138
Definition: graphic_context.h:82
Definition: graphic_context.h:143
Interface for implementing a GraphicContext target.
Definition: graphic_context_provider.h:87
Texture object class.
Definition: texture.h:104
Definition: graphic_context.h:141
Definition: graphic_context.h:110
Definition: graphic_context.h:151
void draw_primitives_elements_instanced(PrimitivesType type, int count, ElementArrayVector< unsigned int > &element_array, size_t offset, int instance_count)
Draw primitives elements instanced.
Definition: graphic_context.h:588
Pixel data container.
Definition: pixel_buffer.h:69
Definition: graphic_context.h:108
Blend state setup.
Definition: blend_state.h:45
Definition: graphic_context.h:128
Element Array Vector.
Definition: element_array_vector.h:43
Definition: graphic_context.h:223
BlendEquation
Blending equations.
Definition: graphic_context.h:204
Definition: graphic_context.h:102
OpenGL utility class.
Definition: opengl.h:64
Definition: graphic_context.h:235
Definition: graphic_context.h:226
source (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
Definition: graphic_context.h:170
DrawBuffer
Drawing buffers.
Definition: graphic_context.h:119
Definition: graphic_context.h:208
void set_primitives_elements(ElementArrayVector< Type > &element_array)
Sets current elements array buffer.
Definition: graphic_context.h:500
Definition: graphic_context.h:236
ShaderLanguage
Shader language used.
Definition: graphic_context.h:248
Definition: graphic_context.h:89
void draw_primitives_elements(PrimitivesType type, int count, ElementArrayVector< unsigned char > &element_array, size_t offset=0)
Draw primitives elements.
Definition: graphic_context.h:565
Definition: graphic_context.h:88
Definition: graphic_context.h:148
CullMode
Polygon culling modes.
Definition: graphic_context.h:70
ClipZRange
Definition: mat4.h:52
Definition: graphic_context.h:72
void draw_primitives_elements_instanced(PrimitivesType type, int count, ElementArrayVector< unsigned short > &element_array, size_t offset, int instance_count)
Draw primitives elements instanced.
Definition: graphic_context.h:601
Definition: graphic_context.h:95
Definition: graphic_context.h:109
Definition: graphic_context.h:97
StandardProgram
Standard Program.
Definition: graphic_context.h:240
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:453
StencilOp
Stencil operations.
Definition: graphic_context.h:106
source or destination (1, 1, 1, 1) - (Ac, Ac, Ac, Ac)
Definition: graphic_context.h:200
Definition: graphic_context.h:244
Definition: graphic_context.h:137
Definition: graphic_context.h:98
Definition: graphic_context.h:224
Definition: graphic_context.h:114
Definition: graphic_context.h:253
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:467
Definition: primitives_array.h:59
Definition: graphic_context.h:99
FillMode
Polygon filling modes.
Definition: graphic_context.h:78
Definition: graphic_context.h:73
void draw_primitives_elements(PrimitivesType type, int count, ElementArrayVector< unsigned short > &element_array, size_t offset=0)
Draw primitives elements.
Definition: graphic_context.h:553
bool is_null() const
Returns true if this object is invalid.
Definition: graphic_context.h:278
Definition: graphic_context.h:250
source or destination (1, 1, 1, 1)
Definition: graphic_context.h:161
Definition: graphic_context.h:125
Definition: graphic_context.h:207
Definition: graphic_context.h:96
Definition: graphic_context.h:229
source or destination (1, 1, 1, 1) - (As, As, As, As)
Definition: graphic_context.h:179
Definition: graphic_context.h:145
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
const float pixelcenter_constant
Definition: graphic_context.h:686
Definition: primitives_array.h:60
Definition: graphic_context.h:228
Definition: graphic_context.h:127
Definition: graphic_context.h:227
Definition: graphic_context.h:112
Definition: graphic_context.h:146
Definition: graphic_context.h:216
void draw_primitives_elements_instanced(PrimitivesType type, int count, ElementArrayVector< unsigned char > &element_array, size_t offset, int instance_count)
Draw primitives elements instanced.
Definition: graphic_context.h:614
source or destination (As, As, As, As)
Definition: graphic_context.h:176
Definition: primitives_array.h:61
Element Array Buffer.
Definition: element_array_buffer.h:47
Definition: graphic_context.h:150
Interface to drawing graphics.
Definition: graphic_context.h:257
BlendFunc
Blending functions.
Definition: graphic_context.h:155
Definition: graphic_context.h:149
VertexAttributeDataType
Primitives array description.
Definition: primitives_array.h:57
Definition: graphic_context.h:209
source (Rd, Gd, Bd, Ad)
Definition: graphic_context.h:164
void draw_primitives_elements(PrimitivesType type, int count, ElementArrayVector< unsigned int > &element_array, size_t offset=0)
Draw primitives elements.
Definition: graphic_context.h:541
Definition: graphic_context.h:210
Program Object.
Definition: program_object.h:70
CompareFunction
Compare functions.
Definition: graphic_context.h:93
source or destination (Rc, Gc, Bc, Ac)
Definition: graphic_context.h:191
Definition: graphic_context.h:80
Definition: graphic_context.h:74
source or destination (0, 0, 0, 0)
Definition: graphic_context.h:158
Definition: graphic_context.h:147
2D (width,height) size structure - Integer
Definition: size.h:157
DepthStencil state setup.
Definition: depth_stencil_state.h:45
static Colorf black
Definition: color.h:837
Definition: graphic_context.h:122
Definition: graphic_context.h:81
Storage Buffer.
Definition: storage_buffer.h:48
Definition: graphic_context.h:225
destination (Rs, Gs, Bs, As)
Definition: graphic_context.h:167
LogicOp
Logic Op.
Definition: graphic_context.h:134
PrimitivesType
Primitive types.
Definition: graphic_context.h:221
source or destination (1, 1, 1, 1) - (Rc, Gc, Bc, Ac)
Definition: graphic_context.h:194
Definition: graphic_context.h:101
Definition: texture_format.h:44
Definition: graphic_context.h:139
Definition: graphic_context.h:100
Definition: graphic_context.h:115
Definition: graphic_context.h:243
Definition: graphic_context.h:251
Definition: graphic_context.h:121
Definition: graphic_context.h:124
Definition: graphic_context.h:130
Definition: graphic_context.h:111
source or destination (Ad, Ad, Ad, Ad)
Definition: graphic_context.h:182
Definition: graphic_context.h:129
C clamp(A val, B minval, C maxval)
Definition: cl_math.h:91
Definition: graphic_context.h:242
Definition: graphic_context.h:113
Definition: graphic_context.h:136