6#include <bgfx/embedded_shader.h>
7#include <bx/allocator.h>
17#define GFX_INVALID_HANDLE BGFX_INVALID_HANDLE
84void reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE);
88 bool _inputNormalized,
105 const void* _srcData,
112 const void* _indices,
113 uint32_t _numIndices,
122 const void* _vertices,
124 const void* _indices,
125 uint32_t _numIndices,
143uint32_t
frame(uint8_t _flags = BGFX_FRAME_NONE);
164 void* _userData =
nullptr);
173void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr,
const char* _format, ...);
176void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr,
const char* _format, va_list _argList);
179void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height,
const void* _data, uint16_t _pitch);
193 uint16_t _flags = BGFX_BUFFER_NONE);
216 uint16_t _flags = BGFX_BUFFER_NONE);
221 uint16_t _flags = BGFX_BUFFER_NONE);
247 uint32_t _numVertices,
249 uint32_t _numIndices);
299 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
309 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
317 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE);
325 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
333 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
345 uint16_t _pitch = UINT16_MAX);
368 uint16_t _pitch = UINT16_MAX);
383 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
388 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
443void set_view_scissor(
view_id _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0);
448 uint32_t _rgba = 0x000000ff,
450 uint8_t _stencil = 0);
457 uint8_t _0 = UINT8_MAX,
458 uint8_t _1 = UINT8_MAX,
459 uint8_t _2 = UINT8_MAX,
460 uint8_t _3 = UINT8_MAX,
461 uint8_t _4 = UINT8_MAX,
462 uint8_t _5 = UINT8_MAX,
463 uint8_t _6 = UINT8_MAX,
464 uint8_t _7 = UINT8_MAX);
488void set_state(uint64_t _state, uint32_t _rgba = 0);
494void set_stencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE);
497uint16_t
set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
538 uint32_t _startVertex,
539 uint32_t _numVertices);
545 uint32_t _startVertex,
546 uint32_t _numVertices);
574 bool _preserveState =
false);
583 bool _preserveState =
false);
618void discard(uint8_t _flags = BGFX_DISCARD_ALL);
628 uint16_t _width = UINT16_MAX,
629 uint16_t _height = UINT16_MAX);
641 uint16_t _width = UINT16_MAX,
642 uint16_t _height = UINT16_MAX,
643 uint16_t _depth = UINT16_MAX);
651void set_trace_logger(
const std::function<
void(
const std::string&,
const char* _filePath, uint16_t _line)>& logger);
652void set_info_logger(
const std::function<
void(
const std::string&,
const char* _filePath, uint16_t _line)>& logger);
653void set_warning_logger(
const std::function<
void(
const std::string&,
const char* _filePath, uint16_t _line)>& logger);
654void set_error_logger(
const std::function<
void(
const std::string&,
const char* _filePath, uint16_t _line)>& logger);
655void set_debug_logger(
const std::function<
void(
const std::string&,
const char* _filePath, uint16_t _line)>& logger);
661void log(
const std::string& category,
662 const std::string& log_msg,
663 const char* _filePath =
nullptr,
669 std::function<void(
const char*
name, uint32_t abgr,
const char* file_path, uint16_t line)>;
678void frames(
int _count, int32_t _flags = BGFX_FRAME_NONE);
685uint64_t
screen_quad(
float dest_width,
float dest_height,
float depth = 0.0f,
float width = 1.0f,
float height = 1.0f);
720 uint32_t _numIndices,
721 bool _index32 =
false);
gfx_profiler_begin_hook on_begin
gfx_profiler_begin_literal_hook on_begin_literal
gfx_profiler_end_hook on_end
void alloc_transient_index_buffer(transient_index_buffer *_tib, uint32_t _num, bool _index32)
bgfx::ReleaseFn release_fn
uint32_t read_texture(texture_handle _handle, void *_data, uint16_t _layer, uint8_t _mip)
void get_uniform_info(uniform_handle _handle, uniform_info &_info)
bgfx::FrameBufferHandle frame_buffer_handle
void dispatch(view_id _id, program_handle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
void alloc_instance_data_buffer(instance_data_buffer *_idb, uint32_t _num, uint16_t _stride)
void submit(view_id _id, program_handle _handle, int32_t _depth, bool _preserveState)
void set_marker(const char *_marker)
const memory_view * alloc(uint32_t _size)
void set_frame_uniform(uniform_handle _handle, const void *_value, uint16_t _num)
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)
void set_view_scissor(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
void vertex_convert(const vertex_layout &_destDecl, void *_destData, const vertex_layout &_srcDecl, const void *_srcData, uint32_t _num)
bgfx::VertexLayout vertex_layout
void set_view_uniform(view_id _id, uniform_handle _handle, const void *_value, uint16_t _num)
void set_view_mode(view_id _id, view_mode _mode)
void set_name(index_buffer_handle _handle, const char *_name, int32_t _len)
void frames(int _count, int32_t _flags)
renderer_type get_renderer_type()
std::function< void()> gfx_profiler_end_hook
uint32_t alloc_transform(transform *_transform, uint16_t _num)
void clear_profiler_hooks()
bgfx::TopologyConvert::Enum topology_conversion
void set_view_clear(view_id _id, uint16_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil)
texture_handle create_texture(const memory_view *_mem, uint64_t _flags, uint8_t _skip, texture_info *_info)
uint16_t set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
void reset_view(view_id _id)
bgfx::TextureFormat::Enum texture_format
uint32_t get_avail_transient_index_buffer(uint32_t _num, bool _index32)
void set_state(uint64_t _state, uint32_t _rgba)
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)
bgfx::BackbufferRatio::Enum backbuffer_ratio
uint32_t topology_convert(topology_conversion _conversion, void *_dst, uint32_t _dstSize, const void *_indices, uint32_t _numIndices, bool _index32)
bgfx::Attrib::Enum attribute
bgfx::DynamicVertexBufferHandle dynamic_vertex_buffer_handle
void set_view_frame_buffer(view_id _id, frame_buffer_handle _handle)
void set_debug(uint32_t _debug)
bgfx::UniformFreq::Enum uniform_freq
bool alloc_transient_buffers(transient_vertex_buffer *_tvb, const vertex_layout &_decl, uint32_t _numVertices, transient_index_buffer *_tib, uint32_t _numIndices)
texture_handle create_texture_cube(uint16_t _size, bool _hasMips, uint16_t _numLayers, texture_format _format, uint64_t _flags, const memory_view *_mem)
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)
bgfx::Attachment attachment
void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
bool init(init_type init_data)
bgfx::ShaderHandle shader_handle
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)
indirect_buffer_handle create_indirect_buffer(uint32_t _num)
void set_view_name(view_id _id, const char *_name)
const memory_view * make_ref(const void *_data, uint32_t _size, release_fn _releaseFn, void *_userData)
uniform_handle create_uniform(const char *_name, uniform_type _type, uint16_t _num)
bgfx::Access::Enum access
bgfx::TransientVertexBuffer transient_vertex_buffer
void set_view_order(view_id _id, uint16_t _num, const view_id *_order)
void set_stencil(uint32_t _fstencil, uint32_t _bstencil)
bool is_texture_valid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, texture_format _format, uint64_t _flags)
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)
void set_view_shading_rate(view_id _id, shading_rate _shadingRate)
void set_info_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
shader_handle create_embedded_shader(const embedded_shader *_es, renderer_type _type, const char *_name)
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)
uint8_t get_supported_renderers(uint8_t _max, renderer_type *_enum)
bgfx::UniformHandle uniform_handle
shader_handle create_shader(const memory_view *_mem)
void set_world_transform(const void *_mtx, uint16_t _num)
bgfx::TransientIndexBuffer transient_index_buffer
void set_debug_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
uint32_t set_transform(const void *_mtx, uint16_t _num)
auto clip_fullscreen_triangle(float depth, float width, float height) -> uint64_t
const stats * get_stats()
program_handle create_program(shader_handle _vsh, shader_handle _fsh, bool _destroyShaders)
bgfx::TopologySort::Enum topology_sort
bgfx::UniformInfo uniform_info
void set_buffer(uint8_t _stage, index_buffer_handle _handle, access _access)
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)
void log(const std::string &category, const std::string &log_msg, const char *_filePath, uint16_t _line)
bgfx::TextureHandle texture_handle
bgfx::InstanceDataBuffer instance_data_buffer
void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, va_list _argList)
void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void *_data, uint16_t _pitch)
auto screen_quad(float dest_width, float dest_height, float depth, float width, float height) -> uint64_t
auto get_allocation_failure_policy() -> allocation_failure_policy
occlusion_query_handle create_occlusion_query()
void set_instance_data_buffer(const instance_data_buffer *_idb, uint32_t _start, uint32_t _num)
void set_view_transform(view_id _id, const void *_view, const void *_proj)
void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle)
bgfx::OcclusionQueryResult::Enum occlusion_query_result
uint32_t get_avail_instance_data_buffer(uint32_t _num, uint16_t _stride)
const char * get_renderer_name(renderer_type _type)
static const uint16_t invalid_handle
uint16_t get_shader_uniforms(shader_handle _handle, uniform_handle *_uniforms, uint16_t _max)
bgfx::UniformType::Enum uniform_type
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)
void reset(uint32_t _width, uint32_t _height, uint32_t _flags)
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)
auto get_half_texel() -> float
auto get_renderer_platform_supported_filename_extensions() -> const std::set< std::string > &
void request_screen_shot(frame_buffer_handle _handle, const char *_filePath)
bgfx::OcclusionQueryHandle occlusion_query_handle
std::function< void(const char *name, uint32_t abgr, const char *file_path, uint16_t line)> gfx_profiler_begin_hook
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)
texture_handle get_texture(frame_buffer_handle _handle, uint8_t _attachment)
auto get_renderer_filename_extension(renderer_type _type) -> const std::string &
void discard(uint8_t _flags)
void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format)
void set_warning_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
void destroy(index_buffer_handle _handle)
auto fallback_texture() -> texture_handle
void set_trace_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
bgfx::IndirectBufferHandle indirect_buffer_handle
dynamic_vertex_buffer_handle create_dynamic_vertex_buffer(uint32_t _num, const vertex_layout &_decl, uint16_t _flags)
const memory_view * copy(const void *_data, uint32_t _size)
void set_profiler_hooks(gfx_profiler_begin_hook on_begin, gfx_profiler_begin_literal_hook on_begin_literal, gfx_profiler_end_hook on_end)
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)
bgfx::RendererType::Enum renderer_type
bgfx::EmbeddedShader embedded_shader
void set_palette_color(uint8_t _index, uint32_t _rgba)
void set_image(uint8_t _stage, texture_handle _handle, uint8_t _mip, access _access, texture_format _format)
void set_platform_data(const platform_data &_data)
bgfx::DynamicIndexBufferHandle dynamic_index_buffer_handle
vertex_buffer_handle create_vertex_buffer(const memory_view *_mem, const vertex_layout &_decl, uint16_t _flags)
bgfx::VertexLayoutHandle vertex_layout_handle
auto get_current_renderer_filename_extension() -> const std::string &
gfx_profiler_begin_hook gfx_profiler_begin_literal_hook
bgfx::ShadingRate::Enum shading_rate
void set_uniform(uniform_handle _handle, const void *_value, uint16_t _num)
bgfx::IndexBufferHandle index_buffer_handle
bgfx::ProgramHandle program_handle
void update(dynamic_index_buffer_handle _handle, uint32_t _startIndex, const memory_view *_mem)
void set_allocation_failure_policy(allocation_failure_policy policy)
bgfx::TextureInfo texture_info
void dbg_text_clear(uint8_t _attr, bool _small)
bgfx::VertexBufferHandle vertex_buffer_handle
void set_vertex_count(uint32_t _numVertices)
dynamic_index_buffer_handle create_dynamic_index_buffer(uint32_t _num, uint16_t _flags)
auto is_homogeneous_depth() -> bool
void set_error_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
bool check_avail_transient_buffers(uint32_t _numVertices, const vertex_layout &_layout, uint32_t _numIndices, bool _index32)
bgfx::ViewMode::Enum view_mode
void set_index_buffer(index_buffer_handle _handle)
bgfx::Transform transform
auto is_origin_bottom_left() -> bool
uint64_t estimate_texture_gpu_size(const texture_info &_info, uint64_t _flags)
index_buffer_handle create_index_buffer(const memory_view *_mem, uint16_t _flags)
bgfx::PlatformData platform_data
frame_buffer_handle create_frame_buffer(uint16_t _width, uint16_t _height, texture_format _format, uint64_t _textureFlags)
uint32_t get_avail_transient_vertex_buffer(uint32_t _num, const vertex_layout &_decl)
occlusion_query_result get_result(occlusion_query_handle _handle, int32_t *_result)
allocation_failure_policy
@ skip_with_fallback
Skip the allocation; texture::native_handle binds the fallback texture.
@ warn_and_try
Log a warning and attempt the allocation anyway (default).
uint32_t get_render_frame()
auto clip_quad(float depth, float width, float height) -> uint64_t
void set_texture(uint8_t _stage, uniform_handle _sampler, texture_handle _handle, uint32_t _flags)
void set_condition(occlusion_query_handle _handle, bool _visible)
void vertex_unpack(float _output[4], attribute _attr, const vertex_layout &_decl, const void *_data, uint32_t _index)
void end(encoder *_encoder)