Unravel Engine C++ Reference
Loading...
Searching...
No Matches
graphics.h
Go to the documentation of this file.
1#pragma once
2
3#include "format.h"
4#include "vertex_decl.h"
5#include <bgfx/bgfx.h>
6#include <bgfx/embedded_shader.h>
7#include <bgfx/platform.h>
8#include <bx/allocator.h>
9#include <bx/bounds.h>
10#include <bx/string.h>
11#include <cstdint>
12#include <functional>
13#include <string>
14
15namespace gfx
16{
17#define GFX_INVALID_HANDLE BGFX_INVALID_HANDLE
18static const uint16_t invalid_handle = bgfx::kInvalidHandle;
19using init_type = bgfx::Init;
20using view_id = bgfx::ViewId;
21using renderer_type = bgfx::RendererType::Enum;
22using backbuffer_ratio = bgfx::BackbufferRatio::Enum;
23using memory_view = bgfx::Memory;
24using texture_info = bgfx::TextureInfo;
25using uniform_type = bgfx::UniformType::Enum;
26using uniform_info = bgfx::UniformInfo;
27using attachment = bgfx::Attachment;
28using platform_data = bgfx::PlatformData;
29using caps = bgfx::Caps;
30using stats = bgfx::Stats;
31using access = bgfx::Access::Enum;
32using view_mode = bgfx::ViewMode::Enum;
33using occlusion_query_result = bgfx::OcclusionQueryResult::Enum;
34using topology_conversion = bgfx::TopologyConvert::Enum;
35using topology_sort = bgfx::TopologySort::Enum;
36using topology = bgfx::Topology;
37using release_fn = bgfx::ReleaseFn;
38using encoder = bgfx::Encoder;
39
40using transform = bgfx::Transform;
41using dynamic_index_buffer_handle = bgfx::DynamicIndexBufferHandle;
42using dynamic_vertex_buffer_handle = bgfx::DynamicVertexBufferHandle;
43using frame_buffer_handle = bgfx::FrameBufferHandle;
44using index_buffer_handle = bgfx::IndexBufferHandle;
45using indirect_buffer_handle = bgfx::IndirectBufferHandle;
46using occlusion_query_handle = bgfx::OcclusionQueryHandle;
47using program_handle = bgfx::ProgramHandle;
48using shader_handle = bgfx::ShaderHandle;
49using texture_handle = bgfx::TextureHandle;
50using uniform_handle = bgfx::UniformHandle;
51using vertex_buffer_handle = bgfx::VertexBufferHandle;
52using vertex_layout_handle = bgfx::VertexLayoutHandle;
53using embedded_shader = bgfx::EmbeddedShader;
54using transient_vertex_buffer = bgfx::TransientVertexBuffer;
55using transient_index_buffer = bgfx::TransientIndexBuffer;
56using instance_data_buffer = bgfx::InstanceDataBuffer;
57
58void set_platform_data(const platform_data& _data);
59
60
61bool init(init_type init_data);
62
63
64void shutdown();
65
66
67void reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE);
68
69
70void vertex_pack(const float _input[4],
71 bool _inputNormalized,
72 attribute _attr,
73 const vertex_layout& _decl,
74 void* _data,
75 uint32_t _index = 0);
76
77
78void vertex_unpack(float _output[4],
79 attribute _attr,
80 const vertex_layout& _decl,
81 const void* _data,
82 uint32_t _index = 0);
83
84
85void vertex_convert(const vertex_layout& _destDecl,
86 void* _destData,
87 const vertex_layout& _srcDecl,
88 const void* _srcData,
89 uint32_t _num = 1);
90
91
92uint16_t weld_vertices(uint16_t* _output,
93 const vertex_layout& _decl,
94 const void* _data,
95 uint16_t _num,
96 float _epsilon = 0.001f);
97
98
99uint32_t topology_convert(topology_conversion _conversion,
100 void* _dst,
101 uint32_t _dstSize,
102 const void* _indices,
103 uint32_t _numIndices,
104 bool _index32);
105
106
108 void* _dst,
109 uint32_t _dstSize,
110 const float _dir[3],
111 const float _pos[3],
112 const void* _vertices,
113 uint32_t _stride,
114 const void* _indices,
115 uint32_t _numIndices,
116 bool _index32);
117
118shader_handle create_embedded_shader(const embedded_shader* _es, renderer_type _type, const char* _name);
119
120
121uint8_t get_supported_renderers(uint8_t _max = 0, renderer_type* _enum = nullptr);
122
123
124const char* get_renderer_name(renderer_type _type);
125
126
127encoder* begin();
128
129
130void end(encoder* _encoder);
131
132
133uint32_t frame(bool _capture = true);
134
135
137
138
139const caps* get_caps();
140
141
142const stats* get_stats();
143
144
145const memory_view* alloc(uint32_t _size);
146
147
148const memory_view* copy(const void* _data, uint32_t _size);
149
150
151const memory_view* make_ref(const void* _data,
152 uint32_t _size,
153 release_fn _releaseFn = nullptr,
154 void* _userData = nullptr);
155
156
157void set_debug(uint32_t _debug);
158
159
160void dbg_text_clear(uint8_t _attr = 0, bool _small = false);
161
162
163void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
164
165
166void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, va_list _argList);
167
168
169void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch);
170
171
172index_buffer_handle create_index_buffer(const memory_view* _mem, uint16_t _flags = BGFX_BUFFER_NONE);
173
174
175void destroy(index_buffer_handle _handle);
176
177
179 const vertex_layout& _decl,
180 uint16_t _flags = BGFX_BUFFER_NONE);
181
182
183void destroy(vertex_buffer_handle _handle);
184
185
186dynamic_index_buffer_handle create_dynamic_index_buffer(uint32_t _num, uint16_t _flags = BGFX_BUFFER_NONE);
187
188
189dynamic_index_buffer_handle create_dynamic_index_buffer(const memory_view* _mem, uint16_t _flags = BGFX_BUFFER_NONE);
190
191
192void update(dynamic_index_buffer_handle _handle, uint32_t _startIndex, const memory_view* _mem);
193
194
196
197
199 const vertex_layout& _decl,
200 uint16_t _flags = BGFX_BUFFER_NONE);
201
202
204 const vertex_layout& _decl,
205 uint16_t _flags = BGFX_BUFFER_NONE);
206
207
208void update(dynamic_vertex_buffer_handle _handle, uint32_t _startVertex, const memory_view* _mem);
209
210
212
213
214uint32_t get_avail_transient_index_buffer(uint32_t _num, bool _index32 = false);
215
216
217uint32_t get_avail_transient_vertex_buffer(uint32_t _num, const vertex_layout& _decl);
218
219
220uint32_t get_avail_instance_data_buffer(uint32_t _num, uint16_t _stride);
221
222
223void alloc_transient_index_buffer(transient_index_buffer* _tib, uint32_t _num, bool _index32 = false);
224
225
226void alloc_transient_vertex_buffer(transient_vertex_buffer* _tvb, uint32_t _num, const vertex_layout& _decl);
227
228
230 const vertex_layout& _decl,
231 uint32_t _numVertices,
233 uint32_t _numIndices);
234
235
236void alloc_instance_data_buffer(instance_data_buffer* _idb, uint32_t _num, uint16_t _stride);
237
238
240
241
242void destroy(indirect_buffer_handle _handle);
243
244
246
247
248uint16_t get_shader_uniforms(shader_handle _handle, uniform_handle* _uniforms = nullptr, uint16_t _max = 0);
249
250
251void get_uniform_info(uniform_handle _handle, uniform_info& _info);
252
253
254void set_name(shader_handle _handle, const char* _name, int32_t _len = INT32_MAX);
255
256
257void destroy(shader_handle _handle);
258
259
260program_handle create_program(shader_handle _vsh, shader_handle _fsh, bool _destroyShaders = false);
261
262
263program_handle create_program(shader_handle _csh, bool _destroyShaders = false);
264
265
266void destroy(program_handle _handle);
267
268
269bool is_texture_valid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, texture_format _format, uint64_t _flags);
270
271
273 uint16_t _width,
274 uint16_t _height,
275 uint16_t _depth,
276 bool _cubeMap,
277 bool _hasMips,
278 uint16_t _numLayers,
279 texture_format _format);
280
281
283 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
284 uint8_t _skip = 0,
285 texture_info* _info = nullptr);
286
287
288texture_handle create_texture_2d(uint16_t _width,
289 uint16_t _height,
290 bool _hasMips,
291 uint16_t _numLayers,
292 texture_format _format,
293 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
294 const memory_view* _mem = nullptr);
295
296
298 bool _hasMips,
299 uint16_t _numLayers,
300 texture_format _format,
301 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE);
302
303
304texture_handle create_texture_3d(uint16_t _width,
305 uint16_t _height,
306 uint16_t _depth,
307 bool _hasMips,
308 texture_format _format,
309 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
310 const memory_view* _mem = nullptr);
311
312
314 bool _hasMips,
315 uint16_t _numLayers,
316 texture_format _format,
317 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
318 const memory_view* _mem = nullptr);
319
320
322 uint16_t _layer,
323 uint8_t _mip,
324 uint16_t _x,
325 uint16_t _y,
326 uint16_t _width,
327 uint16_t _height,
328 const memory_view* _mem,
329 uint16_t _pitch = UINT16_MAX);
330
331
333 uint8_t _mip,
334 uint16_t _x,
335 uint16_t _y,
336 uint16_t _z,
337 uint16_t _width,
338 uint16_t _height,
339 uint16_t _depth,
340 const memory_view* _mem);
341
342
344 uint16_t _layer,
345 uint8_t _side,
346 uint8_t _mip,
347 uint16_t _x,
348 uint16_t _y,
349 uint16_t _width,
350 uint16_t _height,
351 const memory_view* _mem,
352 uint16_t _pitch = UINT16_MAX);
353
354
355uint32_t read_texture(texture_handle _handle, void* _data, uint8_t _mip = 0);
356
357
358void set_name(texture_handle _handle, const char* _name, int32_t _len = INT32_MAX);
359
360
361void destroy(texture_handle _handle);
362
363
365 uint16_t _height,
366 texture_format _format,
367 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
368
369
371 texture_format _format,
372 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
373
374
375frame_buffer_handle create_frame_buffer(uint8_t _num, const texture_handle* _handles, bool _destroyTextures = false);
376
377
378frame_buffer_handle create_frame_buffer(uint8_t _num, const attachment* _attachment, bool _destroyTextures = false);
379
380
382 uint16_t _width,
383 uint16_t _height,
384 texture_format _format = texture_format::Count,
385 texture_format _depthFormat = texture_format::Count);
386
387
388texture_handle get_texture(frame_buffer_handle _handle, uint8_t _attachment = 0);
389
390void set_name(frame_buffer_handle _handle, const char* _name, int32_t _len = INT32_MAX);
391
392
393void destroy(frame_buffer_handle _handle);
394
395
396uniform_handle create_uniform(const char* _name, uniform_type _type, uint16_t _num = 1);
397
398
399void destroy(uniform_handle _handle);
400
401
403
404
405occlusion_query_result get_result(occlusion_query_handle _handle, int32_t* _result = nullptr);
406
407
408void destroy(occlusion_query_handle _handle);
409
410
411void set_palette_color(uint8_t _index, uint32_t _rgba);
412void set_palette_color(uint8_t _index, const float _rgba[4]);
413void set_palette_color(uint8_t _index, float _r, float _g, float _b, float _a);
414
415
416void set_view_name(view_id _id, const char* _name);
417
418
419void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
420
421
422void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, backbuffer_ratio _ratio);
423
424
425void set_view_scissor(view_id _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0);
426
427
428void set_view_clear(view_id _id,
429 uint16_t _flags,
430 uint32_t _rgba = 0x000000ff,
431 float _depth = 1.0f,
432 uint8_t _stencil = 0);
433
434
435void set_view_clear(view_id _id,
436 uint16_t _flags,
437 float _depth,
438 uint8_t _stencil,
439 uint8_t _0 = UINT8_MAX,
440 uint8_t _1 = UINT8_MAX,
441 uint8_t _2 = UINT8_MAX,
442 uint8_t _3 = UINT8_MAX,
443 uint8_t _4 = UINT8_MAX,
444 uint8_t _5 = UINT8_MAX,
445 uint8_t _6 = UINT8_MAX,
446 uint8_t _7 = UINT8_MAX);
447
448
449void set_view_mode(view_id _id, view_mode _mode = view_mode::Default);
450
451
453
454
455void set_view_transform(view_id _id, const void* _view, const void* _proj);
456
457
458void set_view_order(view_id _id = 0, uint16_t _num = UINT16_MAX, const view_id* _order = nullptr);
459
460
461void reset_view(view_id _id);
462
463
464void set_marker(const char* _marker);
465
466
467void set_state(uint64_t _state, uint32_t _rgba = 0);
468
469
470void set_condition(occlusion_query_handle _handle, bool _visible);
471
472
473void set_stencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE);
474
475
476uint16_t set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
477
478
479void set_scissor(uint16_t _cache = UINT16_MAX);
480
481
482uint32_t set_transform(const void* _mtx, uint16_t _num = 1);
483
484
485uint32_t alloc_transform(transform* _transform, uint16_t _num);
486
487
488void set_transform(uint32_t _cache, uint16_t _num = 1);
489
490
491void set_uniform(uniform_handle _handle, const void* _value, uint16_t _num = 1);
492
493
495void set_index_buffer(index_buffer_handle _handle, uint32_t _firstIndex, uint32_t _numIndices);
496
497
499void set_index_buffer(dynamic_index_buffer_handle _handle, uint32_t _firstIndex, uint32_t _numIndices);
500
501
503void set_index_buffer(const transient_index_buffer* _tib, uint32_t _firstIndex, uint32_t _numIndices);
504
505
506void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle);
507void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _numVertices);
508
509
510void set_vertex_buffer(uint8_t _stream, dynamic_vertex_buffer_handle _handle);
511void set_vertex_buffer(uint8_t _stream,
513 uint32_t _startVertex,
514 uint32_t _numVertices);
515
516
517void set_vertex_buffer(uint8_t _stream, const transient_vertex_buffer* _tvb);
518void set_vertex_buffer(uint8_t _stream,
519 const transient_vertex_buffer* _tvb,
520 uint32_t _startVertex,
521 uint32_t _numVertices);
522
523
524void set_instance_data_buffer(const instance_data_buffer* _idb, uint32_t _start, uint32_t _num);
525
526
527void set_instance_data_buffer(vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _num);
528
529
530void set_instance_data_buffer(dynamic_vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _num);
531
532
533void set_texture(uint8_t _stage, uniform_handle _sampler, texture_handle _handle, uint32_t _flags = UINT32_MAX);
534
535
536void touch(view_id _id);
537
538
539void submit(view_id _id, program_handle _handle, int32_t _depth = 0, bool _preserveState = false);
540
541
542void submit(view_id _id,
543 program_handle _program,
544 occlusion_query_handle _occlusionQuery,
545 int32_t _depth = 0,
546 bool _preserveState = false);
547
548
549void submit(view_id _id,
550 program_handle _handle,
551 indirect_buffer_handle _indirectHandle,
552 uint16_t _start = 0,
553 uint16_t _num = 1,
554 int32_t _depth = 0,
555 bool _preserveState = false);
556
557
558void set_image(uint8_t _stage,
559 texture_handle _handle,
560 uint8_t _mip,
561 access _access,
562 texture_format _format = texture_format::Count);
563
564
565void set_buffer(uint8_t _stage, index_buffer_handle _handle, access _access);
566
567
568void set_buffer(uint8_t _stage, vertex_buffer_handle _handle, access _access);
569
570
571void set_buffer(uint8_t _stage, dynamic_index_buffer_handle _handle, access _access);
572
573
574void set_buffer(uint8_t _stage, dynamic_vertex_buffer_handle _handle, access _access);
575
576
577void set_buffer(uint8_t _stage, indirect_buffer_handle _handle, access _access);
578
579
580void dispatch(view_id _id, program_handle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1);
581
582
584 program_handle _handle,
585 indirect_buffer_handle _indirectHandle,
586 uint16_t _start = 0,
587 uint16_t _num = 1);
588
589
590void discard(uint8_t _flags = BGFX_DISCARD_ALL);
591
592
593void blit(view_id _id,
594 texture_handle _dst,
595 uint16_t _dstX,
596 uint16_t _dstY,
597 texture_handle _src,
598 uint16_t _srcX = 0,
599 uint16_t _srcY = 0,
600 uint16_t _width = UINT16_MAX,
601 uint16_t _height = UINT16_MAX);
602void blit(view_id _id,
603 texture_handle _dst,
604 uint8_t _dstMip,
605 uint16_t _dstX,
606 uint16_t _dstY,
607 uint16_t _dstZ,
608 texture_handle _src,
609 uint8_t _srcMip = 0,
610 uint16_t _srcX = 0,
611 uint16_t _srcY = 0,
612 uint16_t _srcZ = 0,
613 uint16_t _width = UINT16_MAX,
614 uint16_t _height = UINT16_MAX,
615 uint16_t _depth = UINT16_MAX);
616
617
618void request_screen_shot(frame_buffer_handle _handle, const char* _filePath);
619
620//---------------------------------------------------------------------------
621//---------------------------------------------------------------------------
622//---------------------------------------------------------------------------
623void set_trace_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
624void set_info_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
625void set_warning_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
626void set_error_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
627
628void flush();
629
632float get_half_texel();
633uint32_t get_max_blend_transforms();
634
635uint64_t screen_quad(float dest_width, float dest_height, float depth = 0.0f, float width = 1.0f, float height = 1.0f);
636uint64_t clip_quad(float depth = 0.0f, float width = 1.0f, float height = 1.0f);
637
639{
640 float depth = 0.0f;
641 float width = 1.0f;
642 float height = 1.0f;
643 float offset_x = 0.0f;
644 float offset_y = 0.0f;
645 float uv_offset_x = 0.0f;
646 float uv_offset_y = 0.0f;
647 float uv_scaling_x = 1.0f;
648 float uv_scaling_y = 1.0f;
649};
650
651uint64_t clip_quad_ex(const clip_quad_def& def);
652
653void get_size_from_ratio(backbuffer_ratio _ratio, uint16_t& _width, uint16_t& _height);
654
655
656const std::string& get_renderer_filename_extension(renderer_type _type);
657const std::string& get_current_renderer_filename_extension();
658const std::vector<std::string>& get_renderer_platform_supported_filename_extensions();
660
661bool is_supported(uint64_t flag);
662
663bool check_avail_transient_buffers(uint32_t _numVertices,
664 const vertex_layout& _layout,
665 uint32_t _numIndices,
666 bool _index32 = false);
667uint32_t get_render_frame();
668
669void set_world_transform(const void* _mtx, uint16_t _num = 1);
670
671} // namespace gfx
uint32_t frame
Definition graphics.cpp:21
uint32_t flag
void alloc_transient_index_buffer(transient_index_buffer *_tib, uint32_t _num, bool _index32)
Definition graphics.cpp:413
bgfx::ReleaseFn release_fn
Definition graphics.h:37
void get_uniform_info(uniform_handle _handle, uniform_info &_info)
Definition graphics.cpp:457
bgfx::FrameBufferHandle frame_buffer_handle
Definition graphics.h:43
void dispatch(view_id _id, program_handle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
Definition graphics.cpp:954
bgfx::Init init_type
Definition graphics.h:19
void alloc_instance_data_buffer(instance_data_buffer *_idb, uint32_t _num, uint16_t _stride)
Definition graphics.cpp:432
void submit(view_id _id, program_handle _handle, int32_t _depth, bool _preserveState)
Definition graphics.cpp:899
void set_marker(const char *_marker)
Definition graphics.cpp:758
const memory_view * alloc(uint32_t _size)
Definition graphics.cpp:296
bgfx::Stats stats
Definition graphics.h:30
uint64_t clip_quad_ex(const clip_quad_def &def)
void alloc_transient_vertex_buffer(transient_vertex_buffer *_tvb, uint32_t _num, const vertex_layout &_decl)
Definition graphics.cpp:418
uint32_t read_texture(texture_handle _handle, void *_data, uint8_t _mip)
Definition graphics.cpp:590
void set_view_scissor(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:707
uint16_t weld_vertices(uint16_t *_output, const vertex_layout &_decl, const void *_data, uint16_t _num, float _epsilon)
Definition graphics.cpp:216
void vertex_convert(const vertex_layout &_destDecl, void *_destData, const vertex_layout &_srcDecl, const void *_srcData, uint32_t _num)
Definition graphics.cpp:207
bgfx::VertexLayout vertex_layout
Definition vertex_decl.h:8
void set_view_mode(view_id _id, view_mode _mode)
Definition graphics.cpp:733
renderer_type get_renderer_type()
Definition graphics.cpp:281
uint32_t alloc_transform(transform *_transform, uint16_t _num)
Definition graphics.cpp:793
bgfx::TopologyConvert::Enum topology_conversion
Definition graphics.h:34
void set_view_clear(view_id _id, uint16_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil)
Definition graphics.cpp:712
texture_handle create_texture(const memory_view *_mem, uint64_t _flags, uint8_t _skip, texture_info *_info)
Definition graphics.cpp:504
uint16_t set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:778
void reset_view(view_id _id)
Definition graphics.cpp:753
bgfx::TextureFormat::Enum texture_format
Definition format.h:10
uint32_t get_avail_transient_index_buffer(uint32_t _num, bool _index32)
Definition graphics.cpp:398
auto get_renderer_platform_supported_filename_extensions() -> const std::vector< std::string > &
void set_state(uint64_t _state, uint32_t _rgba)
Definition graphics.cpp:763
void update_texture_2d(texture_handle _handle, uint16_t _layer, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const memory_view *_mem, uint16_t _pitch)
Definition graphics.cpp:550
bgfx::BackbufferRatio::Enum backbuffer_ratio
Definition graphics.h:22
uint32_t topology_convert(topology_conversion _conversion, void *_dst, uint32_t _dstSize, const void *_indices, uint32_t _numIndices, bool _index32)
Definition graphics.cpp:221
void touch(view_id _id)
Definition graphics.cpp:894
bgfx::Attrib::Enum attribute
Definition vertex_decl.h:9
bgfx::DynamicVertexBufferHandle dynamic_vertex_buffer_handle
Definition graphics.h:42
void set_view_frame_buffer(view_id _id, frame_buffer_handle _handle)
Definition graphics.cpp:738
void set_debug(uint32_t _debug)
Definition graphics.cpp:311
bool alloc_transient_buffers(transient_vertex_buffer *_tvb, const vertex_layout &_decl, uint32_t _numVertices, transient_index_buffer *_tib, uint32_t _numIndices)
Definition graphics.cpp:423
void shutdown()
Definition graphics.cpp:167
texture_handle create_texture_cube(uint16_t _size, bool _hasMips, uint16_t _numLayers, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:540
texture_handle create_texture_3d(uint16_t _width, uint16_t _height, uint16_t _depth, bool _hasMips, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:529
bgfx::Attachment attachment
Definition graphics.h:27
void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:697
bool init(init_type init_data)
Definition graphics.cpp:177
bgfx::ShaderHandle shader_handle
Definition graphics.h:48
void set_name(shader_handle _handle, const char *_name, int32_t _len)
Definition graphics.cpp:462
void update_texture_3d(texture_handle _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _z, uint16_t _width, uint16_t _height, uint16_t _depth, const memory_view *_mem)
Definition graphics.cpp:563
indirect_buffer_handle create_indirect_buffer(uint32_t _num)
Definition graphics.cpp:437
void set_view_name(view_id _id, const char *_name)
Definition graphics.cpp:692
const memory_view * make_ref(const void *_data, uint32_t _size, release_fn _releaseFn, void *_userData)
Definition graphics.cpp:306
uniform_handle create_uniform(const char *_name, uniform_type _type, uint16_t _num)
Definition graphics.cpp:652
bgfx::Access::Enum access
Definition graphics.h:31
bgfx::TransientVertexBuffer transient_vertex_buffer
Definition graphics.h:54
void set_view_order(view_id _id, uint16_t _num, const view_id *_order)
Definition graphics.cpp:748
void set_stencil(uint32_t _fstencil, uint32_t _bstencil)
Definition graphics.cpp:773
bool is_texture_valid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, texture_format _format, uint64_t _flags)
Definition graphics.cpp:487
void topology_sort_tri_list(topology_sort _sort, void *_dst, uint32_t _dstSize, const float _dir[], const float _pos[], const void *_vertices, uint32_t _stride, const void *_indices, uint32_t _numIndices, bool _index32)
Definition graphics.cpp:231
void set_info_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:35
shader_handle create_embedded_shader(const embedded_shader *_es, renderer_type _type, const char *_name)
Definition graphics.cpp:245
auto is_supported(uint64_t flag) -> bool
void vertex_pack(const float _input[4], bool _inputNormalized, attribute _attr, const vertex_layout &_decl, void *_data, uint32_t _index)
Definition graphics.cpp:192
uint8_t get_supported_renderers(uint8_t _max, renderer_type *_enum)
Definition graphics.cpp:250
encoder * begin()
Definition graphics.cpp:265
bgfx::UniformHandle uniform_handle
Definition graphics.h:50
shader_handle create_shader(const memory_view *_mem)
Definition graphics.cpp:447
void set_world_transform(const void *_mtx, uint16_t _num)
bgfx::TransientIndexBuffer transient_index_buffer
Definition graphics.h:55
uint32_t set_transform(const void *_mtx, uint16_t _num)
Definition graphics.cpp:788
const stats * get_stats()
Definition graphics.cpp:291
program_handle create_program(shader_handle _vsh, shader_handle _fsh, bool _destroyShaders)
Definition graphics.cpp:472
bgfx::TopologySort::Enum topology_sort
Definition graphics.h:35
bgfx::UniformInfo uniform_info
Definition graphics.h:26
void set_buffer(uint8_t _stage, index_buffer_handle _handle, access _access)
Definition graphics.cpp:929
void get_size_from_ratio(backbuffer_ratio _ratio, uint16_t &_width, uint16_t &_height)
void dispatch_indirect(view_id _id, program_handle _handle, indirect_buffer_handle _indirectHandle, uint16_t _start=0, uint16_t _num=1)
bgfx::TextureHandle texture_handle
Definition graphics.h:49
bgfx::InstanceDataBuffer instance_data_buffer
Definition graphics.h:56
void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, va_list _argList)
Definition graphics.cpp:326
void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void *_data, uint16_t _pitch)
Definition graphics.cpp:331
auto screen_quad(float dest_width, float dest_height, float depth, float width, float height) -> uint64_t
occlusion_query_handle create_occlusion_query()
Definition graphics.cpp:662
void set_instance_data_buffer(const instance_data_buffer *_idb, uint32_t _start, uint32_t _num)
Definition graphics.cpp:874
void set_view_transform(view_id _id, const void *_view, const void *_proj)
Definition graphics.cpp:743
void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle)
Definition graphics.cpp:838
bgfx::OcclusionQueryResult::Enum occlusion_query_result
Definition graphics.h:33
const caps * get_caps()
Definition graphics.cpp:286
uint32_t get_avail_instance_data_buffer(uint32_t _num, uint16_t _stride)
Definition graphics.cpp:408
const char * get_renderer_name(renderer_type _type)
Definition graphics.cpp:255
uint16_t get_shader_uniforms(shader_handle _handle, uniform_handle *_uniforms, uint16_t _max)
Definition graphics.cpp:452
bgfx::Topology topology
Definition graphics.h:36
bgfx::UniformType::Enum uniform_type
Definition graphics.h:25
void blit(view_id _id, texture_handle _dst, uint16_t _dstX, uint16_t _dstY, texture_handle _src, uint16_t _srcX, uint16_t _srcY, uint16_t _width, uint16_t _height)
Definition graphics.cpp:973
void reset(uint32_t _width, uint32_t _height, uint32_t _flags)
Definition graphics.cpp:260
void calc_texture_size(texture_info &_info, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _hasMips, uint16_t _numLayers, texture_format _format)
Definition graphics.cpp:492
auto get_half_texel() -> float
void request_screen_shot(frame_buffer_handle _handle, const char *_filePath)
bgfx::ViewId view_id
Definition graphics.h:20
bgfx::OcclusionQueryHandle occlusion_query_handle
Definition graphics.h:46
auto get_renderer_based_on_filename_extension(const std::string &_type) -> renderer_type
texture_handle create_texture_2d(uint16_t _width, uint16_t _height, bool _hasMips, uint16_t _numLayers, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:509
texture_handle get_texture(frame_buffer_handle _handle, uint8_t _attachment)
Definition graphics.cpp:637
auto get_renderer_filename_extension(renderer_type _type) -> const std::string &
void discard(uint8_t _flags)
Definition graphics.cpp:968
void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format)
Definition graphics.cpp:321
void set_warning_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:39
void destroy(index_buffer_handle _handle)
Definition graphics.cpp:341
void set_trace_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:30
bgfx::IndirectBufferHandle indirect_buffer_handle
Definition graphics.h:45
dynamic_vertex_buffer_handle create_dynamic_vertex_buffer(uint32_t _num, const vertex_layout &_decl, uint16_t _flags)
Definition graphics.cpp:376
const memory_view * copy(const void *_data, uint32_t _size)
Definition graphics.cpp:301
auto get_max_blend_transforms() -> uint32_t
void update_texture_cube(texture_handle _handle, uint16_t _layer, uint8_t _side, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const memory_view *_mem, uint16_t _pitch)
Definition graphics.cpp:576
bgfx::RendererType::Enum renderer_type
Definition graphics.h:21
bgfx::EmbeddedShader embedded_shader
Definition graphics.h:53
void set_palette_color(uint8_t _index, uint32_t _rgba)
Definition graphics.cpp:677
void set_image(uint8_t _stage, texture_handle _handle, uint8_t _mip, access _access, texture_format _format)
Definition graphics.cpp:924
void set_platform_data(const platform_data &_data)
Definition graphics.cpp:162
bgfx::DynamicIndexBufferHandle dynamic_index_buffer_handle
Definition graphics.h:41
vertex_buffer_handle create_vertex_buffer(const memory_view *_mem, const vertex_layout &_decl, uint16_t _flags)
Definition graphics.cpp:346
bgfx::VertexLayoutHandle vertex_layout_handle
Definition graphics.h:52
auto get_current_renderer_filename_extension() -> const std::string &
void flush()
bgfx::Caps caps
Definition graphics.h:29
void set_uniform(uniform_handle _handle, const void *_value, uint16_t _num)
Definition graphics.cpp:803
bgfx::IndexBufferHandle index_buffer_handle
Definition graphics.h:44
bgfx::ProgramHandle program_handle
Definition graphics.h:47
void update(dynamic_index_buffer_handle _handle, uint32_t _startIndex, const memory_view *_mem)
Definition graphics.cpp:366
bgfx::TextureInfo texture_info
Definition graphics.h:24
void dbg_text_clear(uint8_t _attr, bool _small)
Definition graphics.cpp:316
bgfx::VertexBufferHandle vertex_buffer_handle
Definition graphics.h:51
dynamic_index_buffer_handle create_dynamic_index_buffer(uint32_t _num, uint16_t _flags)
Definition graphics.cpp:356
auto is_homogeneous_depth() -> bool
void set_error_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:43
bool check_avail_transient_buffers(uint32_t _numVertices, const vertex_layout &_layout, uint32_t _numIndices, bool _index32)
bgfx::ViewMode::Enum view_mode
Definition graphics.h:32
void set_index_buffer(index_buffer_handle _handle)
Definition graphics.cpp:808
bgfx::Transform transform
Definition graphics.h:40
auto is_origin_bottom_left() -> bool
index_buffer_handle create_index_buffer(const memory_view *_mem, uint16_t _flags)
Definition graphics.cpp:336
bgfx::PlatformData platform_data
Definition graphics.h:28
frame_buffer_handle create_frame_buffer(uint16_t _width, uint16_t _height, texture_format _format, uint64_t _textureFlags)
Definition graphics.cpp:605
uint32_t get_avail_transient_vertex_buffer(uint32_t _num, const vertex_layout &_decl)
Definition graphics.cpp:403
bgfx::Memory memory_view
Definition graphics.h:23
occlusion_query_result get_result(occlusion_query_handle _handle, int32_t *_result)
Definition graphics.cpp:667
uint32_t get_render_frame()
auto clip_quad(float depth, float width, float height) -> uint64_t
bgfx::Encoder encoder
Definition graphics.h:38
void set_texture(uint8_t _stage, uniform_handle _sampler, texture_handle _handle, uint32_t _flags)
Definition graphics.cpp:889
void set_condition(occlusion_query_handle _handle, bool _visible)
Definition graphics.cpp:768
void vertex_unpack(float _output[4], attribute _attr, const vertex_layout &_decl, const void *_data, uint32_t _index)
Definition graphics.cpp:202
void end(encoder *_encoder)
Definition graphics.cpp:270