bgfx.rst 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. API Reference
  2. =============
  3. .. note::
  4. If you're just getting started with bgfx, you might get more out of these simple walkthroughs for how to use bgfx's API:
  5. - `Hello, bgfx! <https://dev.to/pperon/hello-bgfx-4dka>`_
  6. - `bgfx-minimal-example <https://github.com/jpcy/bgfx-minimal-example#bgfx-minimal-example>`_
  7. - `Using the bgfx library with C++ on Ubuntu <https://www.sandeepnambiar.com/getting-started-with-bgfx/>`_
  8. General
  9. -------
  10. Initialization and Shutdown
  11. ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  12. .. doxygenstruct:: bgfx::Init
  13. :members:
  14. .. doxygenstruct:: bgfx::Resolution
  15. :members:
  16. .. doxygenfunction:: bgfx::init
  17. .. doxygendefine:: BGFX_PCI_ID_NONE
  18. .. doxygendefine:: BGFX_PCI_ID_SOFTWARE_RASTERIZER
  19. .. doxygendefine:: BGFX_PCI_ID_AMD
  20. .. doxygendefine:: BGFX_PCI_ID_APPLE
  21. .. doxygendefine:: BGFX_PCI_ID_INTEL
  22. .. doxygendefine:: BGFX_PCI_ID_NVIDIA
  23. .. doxygendefine:: BGFX_PCI_ID_MICROSOFT
  24. .. doxygenstruct:: bgfx::CallbackI
  25. :members:
  26. .. doxygenfunction:: bgfx::shutdown
  27. Updating
  28. ~~~~~~~~
  29. Reset
  30. *****
  31. .. doxygenfunction:: bgfx::reset
  32. .. doxygendefine:: BGFX_RESET_NONE
  33. .. doxygendefine:: BGFX_RESET_FULLSCREEN
  34. .. doxygendefine:: BGFX_RESET_MSAA_X2
  35. .. doxygendefine:: BGFX_RESET_MSAA_X4
  36. .. doxygendefine:: BGFX_RESET_MSAA_X8
  37. .. doxygendefine:: BGFX_RESET_MSAA_X16
  38. .. doxygendefine:: BGFX_RESET_VSYNC
  39. .. doxygendefine:: BGFX_RESET_MAXANISOTROPY
  40. .. doxygendefine:: BGFX_RESET_CAPTURE
  41. .. doxygendefine:: BGFX_RESET_FLUSH_AFTER_RENDER
  42. .. doxygendefine:: BGFX_RESET_FLIP_AFTER_RENDER
  43. .. doxygendefine:: BGFX_RESET_SRGB_BACKBUFFER
  44. .. doxygendefine:: BGFX_RESET_HDR10
  45. .. doxygendefine:: BGFX_RESET_HIDPI
  46. .. doxygendefine:: BGFX_RESET_DEPTH_CLAMP
  47. Frame
  48. *****
  49. .. doxygenfunction:: bgfx::frame
  50. Debug
  51. ~~~~~
  52. Debug Features
  53. **************
  54. .. doxygenfunction:: bgfx::setDebug
  55. Debug Flags
  56. ***********
  57. .. doxygendefine:: BGFX_DEBUG_NONE
  58. .. doxygendefine:: BGFX_DEBUG_WIREFRAME
  59. .. doxygendefine:: BGFX_DEBUG_IFH
  60. .. doxygendefine:: BGFX_DEBUG_STATS
  61. .. doxygendefine:: BGFX_DEBUG_TEXT
  62. .. doxygendefine:: BGFX_DEBUG_PROFILER
  63. Debug Text Display
  64. ******************
  65. .. doxygenfunction:: bgfx::dbgTextClear
  66. .. doxygenfunction:: bgfx::dbgTextPrintf
  67. .. doxygenfunction:: bgfx::dbgTextPrintfVargs
  68. .. doxygenfunction:: bgfx::dbgTextImage
  69. Querying information
  70. ~~~~~~~~~~~~~~~~~~~~
  71. Renderer
  72. ********
  73. .. doxygenfunction:: bgfx::getSupportedRenderers
  74. .. doxygenfunction:: bgfx::getRendererType
  75. .. doxygenstruct:: bgfx::RendererType
  76. :members:
  77. Capabilities
  78. ************
  79. .. doxygenfunction:: bgfx::getCaps
  80. .. doxygenstruct:: bgfx::Caps
  81. :members:
  82. Available Caps
  83. """"""""""""""
  84. .. doxygendefine:: BGFX_CAPS_ALPHA_TO_COVERAGE
  85. .. doxygendefine:: BGFX_CAPS_BLEND_INDEPENDENT
  86. .. doxygendefine:: BGFX_CAPS_COMPUTE
  87. .. doxygendefine:: BGFX_CAPS_CONSERVATIVE_RASTER
  88. .. doxygendefine:: BGFX_CAPS_DRAW_INDIRECT
  89. .. doxygendefine:: BGFX_CAPS_DRAW_INDIRECT_COUNT
  90. .. doxygendefine:: BGFX_CAPS_FRAGMENT_DEPTH
  91. .. doxygendefine:: BGFX_CAPS_FRAGMENT_ORDERING
  92. .. doxygendefine:: BGFX_CAPS_GRAPHICS_DEBUGGER
  93. .. doxygendefine:: BGFX_CAPS_HDR10
  94. .. doxygendefine:: BGFX_CAPS_HIDPI
  95. .. doxygendefine:: BGFX_CAPS_IMAGE_RW
  96. .. doxygendefine:: BGFX_CAPS_INDEX32
  97. .. doxygendefine:: BGFX_CAPS_INSTANCING
  98. .. doxygendefine:: BGFX_CAPS_OCCLUSION_QUERY
  99. .. doxygendefine:: BGFX_CAPS_RENDERER_MULTITHREADED
  100. .. doxygendefine:: BGFX_CAPS_SWAP_CHAIN
  101. .. doxygendefine:: BGFX_CAPS_TEXTURE_2D_ARRAY
  102. .. doxygendefine:: BGFX_CAPS_TEXTURE_3D
  103. .. doxygendefine:: BGFX_CAPS_TEXTURE_BLIT
  104. .. doxygendefine:: BGFX_CAPS_TEXTURE_COMPARE_ALL
  105. .. doxygendefine:: BGFX_CAPS_TEXTURE_COMPARE_LEQUAL
  106. .. doxygendefine:: BGFX_CAPS_TEXTURE_CUBE_ARRAY
  107. .. doxygendefine:: BGFX_CAPS_TEXTURE_DIRECT_ACCESS
  108. .. doxygendefine:: BGFX_CAPS_TEXTURE_READ_BACK
  109. .. doxygendefine:: BGFX_CAPS_VERTEX_ATTRIB_HALF
  110. .. doxygendefine:: BGFX_CAPS_VERTEX_ATTRIB_UINT10
  111. .. doxygendefine:: BGFX_CAPS_VERTEX_ID
  112. Statistics
  113. **********
  114. .. doxygenfunction:: bgfx::getStats
  115. .. doxygenstruct:: bgfx::Stats
  116. :members:
  117. .. doxygenstruct:: bgfx::ViewStats
  118. :members:
  119. .. doxygenstruct:: bgfx::EncoderStats
  120. :members:
  121. Platform specific
  122. ~~~~~~~~~~~~~~~~~
  123. These are platform specific APIs.
  124. It is only necessary to use these APIs in conjunction with creating windows.
  125. .. doxygenfunction:: bgfx::renderFrame
  126. .. doxygenstruct:: bgfx::RenderFrame
  127. :members:
  128. .. doxygenfunction:: bgfx::setPlatformData
  129. .. doxygenstruct:: bgfx::PlatformData
  130. :members:
  131. .. doxygenfunction:: bgfx::getInternalData
  132. .. doxygenstruct:: bgfx::InternalData
  133. :members:
  134. .. doxygenfunction:: bgfx::overrideInternal(TextureHandle _handle, uintptr_t _ptr)
  135. .. doxygenfunction:: bgfx::overrideInternal(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE)
  136. Miscellaneous
  137. ~~~~~~~~~~~~~
  138. .. doxygenfunction:: bgfx::vertexPack
  139. .. doxygenfunction:: bgfx::vertexUnpack
  140. .. doxygenfunction:: bgfx::vertexConvert
  141. .. doxygenfunction:: bgfx::weldVertices
  142. .. doxygenstruct:: bgfx::TopologyConvert
  143. :members:
  144. .. doxygenfunction:: bgfx::topologyConvert
  145. .. doxygenstruct:: bgfx::TopologySort
  146. :members:
  147. .. doxygenfunction:: bgfx::topologySortTriList
  148. .. doxygenfunction:: bgfx::discard
  149. .. doxygenfunction:: bgfx::touch
  150. .. doxygenfunction:: bgfx::setPaletteColor(uint8_t _index, uint32_t _rgba)
  151. .. doxygenfunction:: bgfx::setPaletteColor(uint8_t _index, const float _rgba[4])
  152. .. doxygenfunction:: bgfx::setPaletteColor(uint8_t _index, float _r, float _g, float _b, float _a)
  153. .. doxygenfunction:: bgfx::requestScreenShot
  154. Views
  155. -----
  156. Views are the primary sorting mechanism in bgfx.
  157. They represent buckets of draw and compute calls, or what are often known as 'passes'.
  158. When compute calls and draw calls occupy the same bucket, the compute calls will be sorted to execute first.
  159. Compute calls are always executed in order of submission, while draw calls are sorted by internal state if
  160. the View is not in sequential mode.
  161. In most cases where the z-buffer is used, this change in order does not affect the desired output.
  162. When draw call order needs to be preserved (e.g. when rendering GUIs), Views can be set to use sequential mode with `bgfx::setViewMode`.
  163. Sequential order is less efficient, because it doesn't allow state change optimization, and should be avoided when possible.
  164. By default, Views are sorted by their View ID, in ascending order.
  165. For dynamic renderers where the right order might not be known until the last moment,
  166. View IDs can be changed to use arbitrary ordering with `bgfx::setViewOrder`.
  167. A View's state is preserved between frames.
  168. .. doxygenfunction:: bgfx::setViewName
  169. .. doxygenfunction:: bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
  170. .. doxygenfunction:: bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, BackbufferRatio::Enum _ratio)
  171. .. doxygenfunction:: bgfx::setViewScissor
  172. .. doxygenfunction:: bgfx::setViewClear(ViewId _id, uint16_t _flags, uint32_t _rgba = 0x000000ff, float _depth = 1.0f, uint8_t _stencil = 0)
  173. .. doxygenfunction:: bgfx::setViewClear(ViewId _id, uint16_t _flags, float _depth, uint8_t _stencil, uint8_t _0 = UINT8_MAX, uint8_t _1 = UINT8_MAX, uint8_t _2 = UINT8_MAX, uint8_t _3 = UINT8_MAX, uint8_t _4 = UINT8_MAX, uint8_t _5 = UINT8_MAX, uint8_t _6 = UINT8_MAX, uint8_t _7 = UINT8_MAX)
  174. .. doxygenstruct:: bgfx::ViewMode
  175. :members:
  176. .. doxygenfunction:: bgfx::setViewMode
  177. .. doxygenfunction:: bgfx::setViewFrameBuffer
  178. .. doxygenfunction:: bgfx::setViewTransform
  179. .. doxygenfunction:: bgfx::setViewOrder
  180. .. doxygenfunction:: bgfx::resetView
  181. Encoder
  182. -------
  183. Encoder
  184. ~~~~~~~
  185. API for multi-threaded submission.
  186. .. doxygenfunction:: bgfx::begin
  187. .. doxygenfunction:: bgfx::end
  188. .. doxygenstruct:: bgfx::Encoder
  189. :members:
  190. Draw
  191. ~~~~
  192. Draw state is not preserved between two draw calls.
  193. All state is cleared after calling `bgfx::submit`.
  194. State
  195. *****
  196. Debug
  197. *****
  198. .. doxygenfunction:: bgfx::setMarker
  199. .. doxygenfunction:: bgfx::setName(ShaderHandle _handle, const char *_name, int32_t _len = INT32_MAX)
  200. .. doxygenfunction:: bgfx::setName(TextureHandle _handle, const char *_name, int32_t _len = INT32_MAX)
  201. State
  202. *****
  203. .. doxygenfunction:: bgfx::setState
  204. State Flags
  205. ***********
  206. **Write**
  207. .. doxygendefine:: BGFX_STATE_WRITE_R
  208. .. doxygendefine:: BGFX_STATE_WRITE_G
  209. .. doxygendefine:: BGFX_STATE_WRITE_B
  210. .. doxygendefine:: BGFX_STATE_WRITE_RGB
  211. .. doxygendefine:: BGFX_STATE_WRITE_A
  212. .. doxygendefine:: BGFX_STATE_WRITE_Z
  213. **Depth Test**
  214. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_LESS
  215. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_LEQUAL
  216. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_EQUAL
  217. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_GEQUAL
  218. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_GREATER
  219. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_NOTEQUAL
  220. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_NEVER
  221. .. doxygendefine:: BGFX_STATE_DEPTH_TEST_ALWAYS
  222. **Blend Mode**
  223. .. doxygendefine:: BGFX_STATE_BLEND_ZERO
  224. .. doxygendefine:: BGFX_STATE_BLEND_ONE
  225. .. doxygendefine:: BGFX_STATE_BLEND_SRC_COLOR
  226. .. doxygendefine:: BGFX_STATE_BLEND_INV_SRC_COLOR
  227. .. doxygendefine:: BGFX_STATE_BLEND_SRC_ALPHA
  228. .. doxygendefine:: BGFX_STATE_BLEND_INV_SRC_ALPHA
  229. .. doxygendefine:: BGFX_STATE_BLEND_DST_ALPHA
  230. .. doxygendefine:: BGFX_STATE_BLEND_INV_DST_ALPHA
  231. .. doxygendefine:: BGFX_STATE_BLEND_DST_COLOR
  232. .. doxygendefine:: BGFX_STATE_BLEND_INV_DST_COLOR
  233. .. doxygendefine:: BGFX_STATE_BLEND_SRC_ALPHA_SAT
  234. .. doxygendefine:: BGFX_STATE_BLEND_FACTOR
  235. .. doxygendefine:: BGFX_STATE_BLEND_INV_FACTOR
  236. **Blend Equaation**
  237. .. doxygendefine:: BGFX_STATE_BLEND_EQUATION_ADD
  238. .. doxygendefine:: BGFX_STATE_BLEND_EQUATION_SUB
  239. .. doxygendefine:: BGFX_STATE_BLEND_EQUATION_REVSUB
  240. .. doxygendefine:: BGFX_STATE_BLEND_EQUATION_MIN
  241. .. doxygendefine:: BGFX_STATE_BLEND_EQUATION_MAX
  242. **Primitive Culling**
  243. .. doxygendefine:: BGFX_STATE_CULL_CW
  244. .. doxygendefine:: BGFX_STATE_CULL_CCW
  245. **Primitive Type**
  246. .. doxygendefine:: BGFX_STATE_PT_TRISTRIP
  247. .. doxygendefine:: BGFX_STATE_PT_LINES
  248. .. doxygendefine:: BGFX_STATE_PT_LINESTRIP
  249. .. doxygendefine:: BGFX_STATE_PT_POINTS
  250. **Misc**
  251. .. doxygendefine:: BGFX_STATE_BLEND_INDEPENDENT
  252. .. doxygendefine:: BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
  253. .. doxygendefine:: BGFX_STATE_MSAA
  254. .. doxygendefine:: BGFX_STATE_LINEAA
  255. Stencil
  256. *******
  257. .. doxygenfunction:: bgfx::setStencil
  258. Stencil Flags
  259. *************
  260. .. doxygendefine:: BGFX_STENCIL_TEST_LESS
  261. Scissor
  262. *******
  263. If the Scissor rectangle needs to be changed for
  264. every draw call in a View, use `bgfx::setScissor`.
  265. Otherwise, use `bgfx::setViewScissor`.
  266. .. doxygenfunction:: bgfx::setScissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
  267. .. doxygenfunction:: bgfx::setScissor(uint16_t _cache = UINT16_MAX)
  268. Transform
  269. *********
  270. .. doxygenfunction:: bgfx::allocTransform
  271. .. doxygenfunction:: bgfx::setTransform(const void *_mtx, uint16_t _num = 1)
  272. .. doxygenfunction:: bgfx::setTransform(uint32_t _cache, uint16_t _num = 1)
  273. Conditional Rendering
  274. *********************
  275. .. doxygenfunction:: bgfx::setCondition
  276. Buffers
  277. *******
  278. .. doxygenfunction:: bgfx::setIndexBuffer(IndexBufferHandle _handle)
  279. .. doxygenfunction:: bgfx::setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
  280. .. doxygenfunction:: bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle)
  281. .. doxygenfunction:: bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
  282. .. doxygenstruct:: bgfx::TransientIndexBuffer
  283. :members:
  284. .. doxygenfunction:: bgfx::setIndexBuffer(const TransientIndexBuffer *_tib)
  285. .. doxygenfunction:: bgfx::setIndexBuffer(const TransientIndexBuffer *_tib, uint32_t _firstIndex, uint32_t _numIndices)
  286. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)
  287. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
  288. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)
  289. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
  290. .. doxygenstruct:: bgfx::TransientVertexBuffer
  291. :members:
  292. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb)
  293. .. doxygenfunction:: bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
  294. .. doxygenfunction:: bgfx::setVertexCount
  295. .. doxygenstruct:: bgfx::InstanceDataBuffer
  296. :members:
  297. .. doxygenfunction:: bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb)
  298. .. doxygenfunction:: bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb, uint32_t _start, uint32_t _num)
  299. .. doxygenfunction:: bgfx::setInstanceDataBuffer(VertexBufferHandle _handle, uint32_t _start, uint32_t _num)
  300. .. doxygenfunction:: bgfx::setInstanceDataBuffer(DynamicVertexBufferHandle _handle, uint32_t _start, uint32_t _num)
  301. .. doxygenfunction:: bgfx::setInstanceCount
  302. Textures
  303. ********
  304. .. doxygenfunction:: bgfx::setTexture(uint8_t, UniformHandle, TextureHandle, uint32_t)
  305. Submit
  306. ******
  307. In Views, all draw commands are executed **after** blit and compute commands.
  308. .. doxygenfunction:: bgfx::submit(ViewId _id, ProgramHandle _program, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
  309. .. doxygenfunction:: bgfx::submit(ViewId _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
  310. .. doxygenfunction:: bgfx::submit(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
  311. .. doxygenfunction:: bgfx::submit(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start, IndexBufferHandle _numHandle, uint32_t _numIndex = 0, uint16_t _numMax = UINT16_MAX, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
  312. Compute
  313. ~~~~~~~
  314. Compute state is not preserved between compute dispatches; all state is cleared after calling `bgfx::dispatch`.
  315. Buffers
  316. *******
  317. .. doxygenstruct:: bgfx::Access
  318. :members:
  319. .. doxygenfunction:: bgfx::setBuffer(uint8_t _stage, IndexBufferHandle _handle, Access::Enum _access)
  320. .. doxygenfunction:: bgfx::setBuffer(uint8_t _stage, VertexBufferHandle _handle, Access::Enum _access)
  321. .. doxygenfunction:: bgfx::setBuffer(uint8_t _stage, DynamicIndexBufferHandle _handle, Access::Enum _access)
  322. .. doxygenfunction:: bgfx::setBuffer(uint8_t _stage, DynamicVertexBufferHandle _handle, Access::Enum _access)
  323. .. doxygenfunction:: bgfx::setBuffer(uint8_t _stage, IndirectBufferHandle _handle, Access::Enum _access)
  324. Images
  325. ******
  326. .. doxygenfunction:: bgfx::setImage(uint8_t, TextureHandle, uint8_t, Access::Enum, TextureFormat::Enum)
  327. Dispatch
  328. ********
  329. In Views, all draw commands are executed **after** blit and compute commands.
  330. .. doxygenfunction:: bgfx::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1, uint8_t _flags = BGFX_DISCARD_ALL)
  331. .. doxygenfunction:: bgfx::dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint8_t _flags = BGFX_DISCARD_ALL)
  332. Blit
  333. ~~~~
  334. In Views, all draw commands are executed **after** blit and compute commands.
  335. .. doxygenfunction:: bgfx::blit(ViewId _id, TextureHandle _dst, uint16_t _dstX, uint16_t _dstY, TextureHandle _src, uint16_t _srcX = 0, uint16_t _srcY = 0, uint16_t _width = UINT16_MAX, uint16_t _height = UINT16_MAX)
  336. .. doxygenfunction:: bgfx::blit(ViewId _id, TextureHandle _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, TextureHandle _src, uint8_t _srcMip = 0, uint16_t _srcX = 0, uint16_t _srcY = 0, uint16_t _srcZ = 0, uint16_t _width = UINT16_MAX, uint16_t _height = UINT16_MAX, uint16_t _depth = UINT16_MAX)
  337. Resources
  338. ---------
  339. .. doxygenstruct:: bgfx::Memory
  340. :members:
  341. .. doxygenfunction:: bgfx::alloc
  342. .. doxygenfunction:: bgfx::copy
  343. .. doxygenfunction:: bgfx::makeRef
  344. Shaders and Programs
  345. ~~~~~~~~~~~~~~~~~~~~
  346. .. doxygenfunction:: bgfx::createShader
  347. .. doxygenfunction:: bgfx::getShaderUniforms
  348. .. doxygenfunction:: bgfx::destroy(ShaderHandle _handle)
  349. .. doxygenfunction:: bgfx::createProgram(ShaderHandle _vsh, ShaderHandle _fsh, bool _destroyShaders = false)
  350. .. doxygenfunction:: bgfx::createProgram(ShaderHandle _csh, bool _destroyShader = false)
  351. .. doxygenfunction:: bgfx::destroy(ProgramHandle _handle)
  352. Uniforms
  353. ~~~~~~~~
  354. .. doxygenfunction:: bgfx::createUniform
  355. .. doxygenfunction:: bgfx::getUniformInfo
  356. .. doxygenfunction:: bgfx::destroy(UniformHandle _handle)
  357. .. doxygenstruct:: bgfx::UniformType
  358. :members:
  359. .. doxygenstruct:: bgfx::UniformInfo
  360. :members:
  361. Vertex Buffers
  362. ~~~~~~~~~~~~~~
  363. .. doxygenfunction:: bgfx::createVertexLayout
  364. .. doxygenfunction:: bgfx::destroy(VertexLayoutHandle _handle)
  365. .. doxygenfunction:: bgfx::createVertexBuffer
  366. .. doxygenfunction:: bgfx::setName(VertexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
  367. .. doxygenfunction:: bgfx::destroy(VertexBufferHandle _handle)
  368. .. doxygenstruct:: bgfx::VertexLayout
  369. :members:
  370. .. doxygenstruct:: bgfx::Attrib
  371. :members:
  372. .. doxygenstruct:: bgfx::AttribType
  373. :members:
  374. .. doxygenfunction:: bgfx::createDynamicVertexBuffer(uint32_t _num, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)
  375. .. doxygenfunction:: bgfx::createDynamicVertexBuffer(const Memory *_mem, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)
  376. .. doxygenfunction:: bgfx::update(DynamicVertexBufferHandle _handle, uint32_t _startVertex, const Memory *_mem)
  377. .. doxygenfunction:: bgfx::destroy(DynamicVertexBufferHandle _handle)
  378. .. doxygenfunction:: bgfx::getAvailTransientVertexBuffer
  379. .. doxygenfunction:: bgfx::allocTransientVertexBuffer
  380. Index Buffers
  381. ~~~~~~~~~~~~~
  382. .. doxygenfunction:: bgfx::createIndexBuffer
  383. .. doxygenfunction:: bgfx::setName(IndexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
  384. .. doxygenfunction:: bgfx::destroy(IndexBufferHandle _handle)
  385. .. doxygenfunction:: bgfx::createDynamicIndexBuffer(uint32_t _num, uint16_t _flags = BGFX_BUFFER_NONE)
  386. .. doxygenfunction:: bgfx::createDynamicIndexBuffer(const Memory *_mem, uint16_t _flags = BGFX_BUFFER_NONE)
  387. .. doxygenfunction:: bgfx::update(DynamicIndexBufferHandle _handle, uint32_t _startIndex, const Memory *_mem)
  388. .. doxygenfunction:: bgfx::destroy(DynamicIndexBufferHandle _handle)
  389. .. doxygenfunction:: bgfx::getAvailTransientIndexBuffer
  390. .. doxygenfunction:: bgfx::allocTransientIndexBuffer
  391. Textures
  392. ~~~~~~~~
  393. .. doxygenstruct:: bgfx::TextureFormat
  394. :members:
  395. .. doxygenfunction:: bgfx::isTextureValid
  396. .. doxygenstruct:: bgfx::TextureInfo
  397. :members:
  398. .. doxygenfunction:: bgfx::calcTextureSize
  399. .. doxygenfunction:: bgfx::createTexture
  400. .. doxygenfunction:: bgfx::createTexture2D(uint16_t _width, uint16_t _height, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, const Memory *_mem = NULL)
  401. .. doxygenfunction:: bgfx::createTexture2D(BackbufferRatio::Enum _ratio, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE)
  402. .. doxygenfunction:: bgfx::updateTexture2D
  403. .. doxygenfunction:: bgfx::createTexture3D
  404. .. doxygenfunction:: bgfx::updateTexture3D
  405. .. doxygenfunction:: bgfx::createTextureCube
  406. .. doxygenfunction:: bgfx::updateTextureCube
  407. .. doxygenfunction:: bgfx::readTexture(TextureHandle, void *, uint8_t)
  408. .. doxygenfunction:: bgfx::getDirectAccessPtr
  409. .. doxygenfunction:: bgfx::destroy(TextureHandle _handle)
  410. Frame Buffers
  411. ~~~~~~~~~~~~~
  412. .. doxygenstruct:: bgfx::Attachment
  413. :members:
  414. .. doxygenfunction:: bgfx::isFrameBufferValid
  415. .. doxygenfunction:: bgfx::createFrameBuffer(uint16_t _width, uint16_t _height, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)
  416. .. doxygenfunction:: bgfx::createFrameBuffer(BackbufferRatio::Enum _ratio, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)
  417. .. doxygenfunction:: bgfx::createFrameBuffer(uint8_t _num, const TextureHandle *_handles, bool _destroyTextures = false)
  418. .. doxygenfunction:: bgfx::createFrameBuffer(void *_nwh, uint16_t _width, uint16_t _height, TextureFormat::Enum _format = TextureFormat::Count, TextureFormat::Enum _depthFormat = TextureFormat::Count)
  419. .. doxygenfunction:: bgfx::createFrameBuffer(uint8_t _num, const Attachment *_attachment, bool _destroyTextures = false)
  420. .. doxygenfunction:: bgfx::getTexture
  421. .. doxygenfunction:: bgfx::setName(FrameBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
  422. .. doxygenfunction:: bgfx::destroy(FrameBufferHandle _handle)
  423. Instance Buffer
  424. ~~~~~~~~~~~~~~~
  425. .. doxygenfunction:: bgfx::getAvailInstanceDataBuffer
  426. .. doxygenfunction:: bgfx::allocInstanceDataBuffer
  427. Indirect Buffer
  428. ~~~~~~~~~~~~~~~
  429. .. doxygenfunction:: bgfx::createIndirectBuffer
  430. .. doxygenfunction:: bgfx::destroy(IndirectBufferHandle _handle)
  431. Occlusion Query
  432. ~~~~~~~~~~~~~~~
  433. .. doxygenfunction:: bgfx::createOcclusionQuery
  434. .. doxygenstruct:: bgfx::OcclusionQueryResult
  435. :members:
  436. .. doxygenfunction:: bgfx::getResult
  437. .. doxygenfunction:: bgfx::destroy(OcclusionQueryHandle _handle)