From f45c04d84fc2f7ba7b67e94fd2bcc67cc37839b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Wed, 6 Oct 2021 17:56:54 -0700 Subject: [PATCH] Updated docs. --- _static/basic.css | 108 +- _static/doctools.js | 9 +- _static/language_data.js | 6 +- _static/pygments.css | 7 +- _static/searchtools.js | 30 +- _static/underscore.js | 37 +- bgfx.html | 5957 +++++++++++++++++--------------------- build.html | 106 +- examples.html | 399 +-- genindex.html | 28 +- index.html | 40 +- internals.html | 66 +- license.html | 91 +- objects.inv | Bin 26945 -> 26989 bytes overview.html | 99 +- search.html | 23 +- searchindex.js | 2 +- tools.html | 64 +- 18 files changed, 3248 insertions(+), 3824 deletions(-) diff --git a/_static/basic.css b/_static/basic.css index aa9df316d..24a49f09b 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -130,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li p.context { +ul.search li div.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -277,25 +277,25 @@ p.rubric { font-weight: bold; } -img.align-left, figure.align-left, .figure.align-left, object.align-left { +img.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, figure.align-right, .figure.align-right, object.align-right { +img.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, figure.align-center, .figure.align-center, object.align-center { +img.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } -img.align-default, figure.align-default, .figure.align-default { +img.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -319,8 +319,7 @@ img.align-default, figure.align-default, .figure.align-default { /* -- sidebars -------------------------------------------------------------- */ -div.sidebar, -aside.sidebar { +div.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px; @@ -378,14 +377,12 @@ div.body p.centered { /* -- content of sidebars/topics/admonitions -------------------------------- */ div.sidebar > :last-child, -aside.sidebar > :last-child, div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; } div.sidebar::after, -aside.sidebar::after, div.topic::after, div.admonition::after, blockquote::after { @@ -458,22 +455,20 @@ td > :last-child { /* -- figures --------------------------------------------------------------- */ -div.figure, figure { +div.figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption, figcaption { +div.figure p.caption { padding: 0.3em; } -div.figure p.caption span.caption-number, -figcaption span.caption-number { +div.figure p.caption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text, -figcaption span.caption-text { +div.figure p.caption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -508,63 +503,6 @@ table.hlist td { vertical-align: top; } -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - /* -- other body styles ----------------------------------------------------- */ @@ -691,6 +629,14 @@ dl.glossary dt { font-size: 1.1em; } +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + .versionmodified { font-style: italic; } @@ -820,11 +766,7 @@ div.code-block-caption code { table.highlighttable td.linenos, span.linenos, div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ + user-select: none; } div.code-block-caption span.caption-number { @@ -839,6 +781,16 @@ div.literal-block-wrapper { margin: 1em 0; } +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + code.xref, a code { background-color: transparent; font-weight: bold; diff --git a/_static/doctools.js b/_static/doctools.js index 61ac9d266..7d88f807d 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -29,14 +29,9 @@ if (!window.console || !console.firebug) { /** * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL */ jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); + return decodeURIComponent(x).replace(/\+/g, ' '); }; /** diff --git a/_static/language_data.js b/_static/language_data.js index 863704b31..d2b4ee91b 100644 --- a/_static/language_data.js +++ b/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -13,8 +13,7 @@ var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; -/* Non-minified version is copied as a separate JS file, is available */ - +/* Non-minified version JS is _stemmer.js if file is provided */ /** * Porter Stemmer */ @@ -200,6 +199,7 @@ var Stemmer = function() { + var splitChars = (function() { var result = {}; var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, diff --git a/_static/pygments.css b/_static/pygments.css index 691aeb82d..20c4814dc 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -1,10 +1,5 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/_static/searchtools.js b/_static/searchtools.js index e09f9263f..261ecaa92 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -248,7 +248,7 @@ var Search = { // results left, load the summary and display it if (results.length) { var item = results.pop(); - var listItem = $('
  • '); + var listItem = $('
  • '); var requestUrl = ""; var linkUrl = ""; if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') { @@ -273,9 +273,9 @@ var Search = { if (item[3]) { listItem.append($(' (' + item[3] + ')')); Search.output.append(listItem); - setTimeout(function() { + listItem.slideDown(5, function() { displayNextItem(); - }, 5); + }); } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { $.ajax({url: requestUrl, dataType: "text", @@ -285,16 +285,16 @@ var Search = { listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); } Search.output.append(listItem); - setTimeout(function() { + listItem.slideDown(5, function() { displayNextItem(); - }, 5); + }); }}); } else { // no source available, just display title Search.output.append(listItem); - setTimeout(function() { + listItem.slideDown(5, function() { displayNextItem(); - }, 5); + }); } } // search finished, update title and status message @@ -379,13 +379,6 @@ var Search = { return results; }, - /** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - */ - escapeRegExp : function(string) { - return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string - }, - /** * search for full-text terms in the index */ @@ -409,14 +402,13 @@ var Search = { ]; // add support for partial matches if (word.length > 2) { - var word_regex = this.escapeRegExp(word); for (var w in terms) { - if (w.match(word_regex) && !terms[word]) { + if (w.match(word) && !terms[word]) { _o.push({files: terms[w], score: Scorer.partialTerm}) } } for (var w in titleterms) { - if (w.match(word_regex) && !titleterms[word]) { + if (w.match(word) && !titleterms[word]) { _o.push({files: titleterms[w], score: Scorer.partialTitle}) } } @@ -509,7 +501,7 @@ var Search = { var excerpt = ((start > 0) ? '...' : '') + $.trim(text.substr(start, 240)) + ((start + 240 - text.length) ? '...' : ''); - var rv = $('

    ').text(excerpt); + var rv = $('
    ').text(excerpt); $.each(hlwords, function() { rv = rv.highlightText(this, 'highlighted'); }); diff --git a/_static/underscore.js b/_static/underscore.js index cf177d428..5b55f32be 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,6 +1,31 @@ -!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){ -// Underscore.js 1.13.1 -// https://underscorejs.org -// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e":">",'"':""","'":"'","`":"`"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o0?0:u-1;o>=0&&o0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ao&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);ir?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ae||void 0===t)return 1;if(t2;a== +null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= +function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= +e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= +function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, +c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; +b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, +1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; +b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; +b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), +function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ +u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= +function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= +true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); diff --git a/bgfx.html b/bgfx.html index 2745a4e33..9875cd27e 100644 --- a/bgfx.html +++ b/bgfx.html @@ -3,10 +3,9 @@ - - - - + + + API Reference — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -204,8 +198,6 @@ - -
      @@ -217,7 +209,7 @@
    • - +
    • @@ -229,7 +221,7 @@
      -
      +

      API Reference

      Note

      @@ -238,13 +230,13 @@ or Using the bgfx library with C++ on Ubuntu tutorial.

      -
      +

      General

      -
      +

      Initialization and Shutdown

      -
      -struct bgfx::Init
      +
      +struct bgfx::Init

      Initialization parameters used by bgfx::init.

      Attention

      C99 equivalent is bgfx_init_t.

      @@ -252,16 +244,16 @@ tutorial.

      -

      Public Members

      +

      Public Members

      -
      -RendererType::Enum type
      +
      +RendererType::Enum type

      Select rendering backend. When set to RendererType::Count a default rendering backend will be selected appropriate to the platform. See: bgfx::RendererType

      -
      -uint16_t vendorId
      +
      +uint16_t vendorId

      Vendor PCI id. If set to BGFX_PCI_ID_NONE it will select the first device.

      • BGFX_PCI_ID_NONE - Autoselect adapter.

      • @@ -274,63 +266,63 @@ tutorial.

      -
      -uint16_t deviceId
      +
      +uint16_t deviceId

      Device id. If set to 0 it will select first device, or device with matching id.

      -
      -uint64_t capabilities
      +
      +uint64_t capabilities

      Capabilities initialization mask (default: UINT64_MAX).

      -
      -bool debug
      +
      +bool debug

      Enable device for debuging.

      -
      -bool profile
      +
      +bool profile

      Enable device for profiling.

      -
      -PlatformData platformData
      +
      +PlatformData platformData

      Platform data.

      -
      -Resolution resolution
      +
      +Resolution resolution

      Backbuffer resolution and reset parameters. See: bgfx::Resolution.

      -
      -Limits limits
      +
      +Limits limits

      Configurable runtime limits.

      -
      -CallbackI *callback
      +
      +CallbackI *callback

      Provide application specific callback interface. See: bgfx::CallbackI

      -
      -bx::AllocatorI *allocator
      +
      +bx::AllocatorI *allocator

      Custom allocator. When a custom allocator is not specified, bgfx uses the CRT allocator. Bgfx assumes custom allocator is thread safe.

      -
      -struct Limits
      +
      +struct Limits

      Configurable runtime limits parameters.

      Attention

      C99 equivalent is bgfx_init_limits_t.

      @@ -338,28 +330,28 @@ tutorial.

      -

      Public Members

      +

      Public Members

      -
      -uint16_t maxEncoders
      +
      +uint16_t maxEncoders

      Maximum number of encoder threads.

      -
      -uint32_t minResourceCbSize
      +
      +uint32_t minResourceCbSize

      Minimum resource command buffer size.

      -
      -uint32_t transientVbSize
      +
      +uint32_t transientVbSize

      Maximum transient vertex buffer size.

      -
      -uint32_t transientIbSize
      +
      +uint32_t transientIbSize

      Maximum transient index buffer size.

      @@ -369,8 +361,8 @@ tutorial.

      -
      -struct bgfx::Resolution
      +
      +struct bgfx::Resolution

      Backbuffer resolution and reset parameters.

      Attention

      C99 equivalent is bgfx_resolution_t.

      @@ -378,40 +370,40 @@ tutorial.

      -

      Public Members

      +

      Public Members

      -
      -TextureFormat::Enum format
      +
      +TextureFormat::Enum format

      Backbuffer format.

      -
      -uint32_t width
      +
      +uint32_t width

      Backbuffer width.

      -
      -uint32_t height
      +
      +uint32_t height

      Backbuffer height.

      -
      -uint32_t reset
      +
      +uint32_t reset

      Reset parameters.

      -
      -uint8_t numBackBuffers
      +
      +uint8_t numBackBuffers

      Number of back buffers.

      -
      -uint8_t maxFrameLatency
      +
      +uint8_t maxFrameLatency

      Maximum frame latency.

      @@ -419,57 +411,55 @@ tutorial.

      -
      -bool bgfx::init(const Init &_init = {})
      +
      +bool bgfx::init(const Init &_init = {})

      Initialize bgfx library.

      +
      Return

      true if initialization was successful.

      +
      Attention

      C99 equivalent is bgfx_init.

      +
      Parameters
        +
      • [in] _init: Initialization parameters. See: bgfx::Init for more info.

      • +
      +

      -
      -
      Parameters
      -

      _init[in] Initialization parameters. See: bgfx::Init for more info.

      -
      -
      Returns
      -

      true if initialization was successful.

      -
      -
      -
      -BGFX_PCI_ID_NONE
      +
      +BGFX_PCI_ID_NONE

      Autoselect adapter.

      -
      -BGFX_PCI_ID_SOFTWARE_RASTERIZER
      +
      +BGFX_PCI_ID_SOFTWARE_RASTERIZER

      Software rasterizer.

      -
      -BGFX_PCI_ID_AMD
      +
      +BGFX_PCI_ID_AMD

      AMD adapter.

      -
      -BGFX_PCI_ID_INTEL
      +
      +BGFX_PCI_ID_INTEL

      Intel adapter.

      -
      -BGFX_PCI_ID_NVIDIA
      +
      +BGFX_PCI_ID_NVIDIA

      nVidia adapter.

      -
      -struct bgfx::CallbackI
      +
      +struct bgfx::CallbackI

      Callback interface to implement application specific behavior. Cached items are currently used for OpenGL and Direct3D 12 binary shaders.

      Remark

      ’fatal’ and ‘trace’ callbacks can be called from any thread. Other callbacks are called from the render thread.

      @@ -479,102 +469,90 @@ tutorial.

      -

      Public Functions

      +

      Public Functions

      -
      -virtual void fatal(const char *_filePath, uint16_t _line, Fatal::Enum _code, const char *_str) = 0
      +
      +void fatal(const char *_filePath, uint16_t _line, Fatal::Enum _code, const char *_str) = 0

      This callback is called on unrecoverable errors. It’s not safe to continue (Exluding _code Fatal::DebugCheck), inform the user and terminate the application.

      Remark

      Not thread safe and it can be called from any thread.

      Attention

      C99 equivalent is bgfx_callback_vtbl.fatal.

      -
      -

      -
      -
      Parameters
      -
        -
      • _filePath[in] File path where fatal message was generated.

      • -
      • _line[in] Line where fatal message was generated.

      • -
      • _code[in] Fatal error code.

      • -
      • _str[in] More information about error.

      • +
        Parameters
          +
        • [in] _filePath: File path where fatal message was generated.

        • +
        • [in] _line: Line where fatal message was generated.

        • +
        • [in] _code: Fatal error code.

        • +
        • [in] _str: More information about error.

      +

      -
      -virtual void traceVargs(const char *_filePath, uint16_t _line, const char *_format, va_list _argList) = 0
      +
      +void traceVargs(const char *_filePath, uint16_t _line, const char *_format, va_list _argList) = 0

      Print debug message.

      Remark

      Not thread safe and it can be called from any thread.

      Attention

      C99 equivalent is bgfx_callback_vtbl.trace_vargs.

      -
      -

      -
      -
      Parameters
      -
        -
      • _filePath[in] File path where debug message was generated.

      • -
      • _line[in] Line where debug message was generated.

      • -
      • _format[in] printf style format.

      • -
      • _argList[in] Variable arguments list initialized with va_start.

      • +
        Parameters
          +
        • [in] _filePath: File path where debug message was generated.

        • +
        • [in] _line: Line where debug message was generated.

        • +
        • [in] _format: printf style format.

        • +
        • [in] _argList: Variable arguments list initialized with va_start.

      +

      -
      -virtual void profilerBegin(const char *_name, uint32_t _abgr, const char *_filePath, uint16_t _line) = 0
      +
      +void profilerBegin(const char *_name, uint32_t _abgr, const char *_filePath, uint16_t _line) = 0

      Profiler region begin.

      Remark

      Not thread safe and it can be called from any thread.

      Attention

      C99 equivalent is bgfx_callback_vtbl.profiler_begin.

      -
      -

      -
      -
      Parameters
      -
        -
      • _name[in] Region name, contains dynamic string.

      • -
      • _abgr[in] Color of profiler region.

      • -
      • _filePath[in] File path where profilerBegin was called.

      • -
      • _line[in] Line where profilerBegin was called.

      • +
        Parameters
          +
        • [in] _name: Region name, contains dynamic string.

        • +
        • [in] _abgr: Color of profiler region.

        • +
        • [in] _filePath: File path where profilerBegin was called.

        • +
        • [in] _line: Line where profilerBegin was called.

      +

      -
      -virtual void profilerBeginLiteral(const char *_name, uint32_t _abgr, const char *_filePath, uint16_t _line) = 0
      +
      +void profilerBeginLiteral(const char *_name, uint32_t _abgr, const char *_filePath, uint16_t _line) = 0

      Profiler region begin with string literal name.

      Remark

      Not thread safe and it can be called from any thread.

      Attention

      C99 equivalent is bgfx_callback_vtbl.profiler_begin_literal.

      -
      -

      -
      -
      Parameters
      -
        -
      • _name[in] Region name, contains string literal.

      • -
      • _abgr[in] Color of profiler region.

      • -
      • _filePath[in] File path where profilerBeginLiteral was called.

      • -
      • _line[in] Line where profilerBeginLiteral was called.

      • +
        Parameters
          +
        • [in] _name: Region name, contains string literal.

        • +
        • [in] _abgr: Color of profiler region.

        • +
        • [in] _filePath: File path where profilerBeginLiteral was called.

        • +
        • [in] _line: Line where profilerBeginLiteral was called.

      +

      -
      -virtual void profilerEnd() = 0
      +
      +void profilerEnd() = 0

      Profiler region end.

      Remark

      Not thread safe and it can be called from any thread.

      @@ -586,116 +564,101 @@ tutorial.

      -
      -virtual uint32_t cacheReadSize(uint64_t _id) = 0
      +
      +uint32_t cacheReadSize(uint64_t _id) = 0

      Returns the size of a cached item. Returns 0 if no cached item was found.

      +
      Return

      Number of bytes to read.

      +
      Attention

      C99 equivalent is bgfx_callback_vtbl.cache_read_size.

      -
      -

      -
      -
      Parameters
      -

      _id[in] Cache id.

      -
      -
      Returns
      -

      Number of bytes to read.

      -
      -
      -
      - -
      -
      -virtual bool cacheRead(uint64_t _id, void *_data, uint32_t _size) = 0
      -

      Read cached item.

      -

      -
      Attention

      C99 equivalent is bgfx_callback_vtbl.cache_read.

      -
      -
      -

      -
      -
      Parameters
      -
        -
      • _id[in] Cache id.

      • -
      • _data[in] Buffer where to read data.

      • -
      • _size[in] Size of data to read.

      • +
        Parameters
          +
        • [in] _id: Cache id.

        -
        Returns
        -

        True if data is read.

        -
      +

      -
      -virtual void cacheWrite(uint64_t _id, const void *_data, uint32_t _size) = 0
      +
      +bool cacheRead(uint64_t _id, void *_data, uint32_t _size) = 0
      +

      Read cached item.

      +

      +
      Return

      True if data is read.

      +
      +
      Attention

      C99 equivalent is bgfx_callback_vtbl.cache_read.

      +
      +
      Parameters
        +
      • [in] _id: Cache id.

      • +
      • [in] _data: Buffer where to read data.

      • +
      • [in] _size: Size of data to read.

      • +
      +
      +
      +

      +
      + +
      +
      +void cacheWrite(uint64_t _id, const void *_data, uint32_t _size) = 0

      Write cached item.

      Attention

      C99 equivalent is bgfx_callback_vtbl.cache_write.

      -
      -

      -
      -
      Parameters
      -
        -
      • _id[in] Cache id.

      • -
      • _data[in] Data to write.

      • -
      • _size[in] Size of data to write.

      • +
        Parameters
          +
        • [in] _id: Cache id.

        • +
        • [in] _data: Data to write.

        • +
        • [in] _size: Size of data to write.

      +

      -
      -virtual void screenShot(const char *_filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void *_data, uint32_t _size, bool _yflip) = 0
      +
      +void screenShot(const char *_filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void *_data, uint32_t _size, bool _yflip) = 0

      Screenshot captured. Screenshot format is always 4-byte BGRA.

      Attention

      C99 equivalent is bgfx_callback_vtbl.screen_shot.

      -
      -

      -
      -
      Parameters
      -
        -
      • _filePath[in] File path.

      • -
      • _width[in] Image width.

      • -
      • _height[in] Image height.

      • -
      • _pitch[in] Number of bytes to skip between the start of each horizontal line of the image.

      • -
      • _data[in] Image data.

      • -
      • _size[in] Image size.

      • -
      • _yflip[in] If true, image origin is bottom left.

      • +
        Parameters
          +
        • [in] _filePath: File path.

        • +
        • [in] _width: Image width.

        • +
        • [in] _height: Image height.

        • +
        • [in] _pitch: Number of bytes to skip between the start of each horizontal line of the image.

        • +
        • [in] _data: Image data.

        • +
        • [in] _size: Image size.

        • +
        • [in] _yflip: If true, image origin is bottom left.

      +

      -
      -virtual void captureBegin(uint32_t _width, uint32_t _height, uint32_t _pitch, TextureFormat::Enum _format, bool _yflip) = 0
      +
      +void captureBegin(uint32_t _width, uint32_t _height, uint32_t _pitch, TextureFormat::Enum _format, bool _yflip) = 0

      Called when a video capture begins.

      Attention

      C99 equivalent is bgfx_callback_vtbl.capture_begin.

      -
      -

      -
      -
      Parameters
      -
        -
      • _width[in] Image width.

      • -
      • _height[in] Image height.

      • -
      • _pitch[in] Number of bytes to skip between the start of each horizontal line of the image.

      • -
      • _format[in] Texture format. See: TextureFormat::Enum.

      • -
      • _yflip[in] If true, image origin is bottom left.

      • +
        Parameters
          +
        • [in] _width: Image width.

        • +
        • [in] _height: Image height.

        • +
        • [in] _pitch: Number of bytes to skip between the start of each horizontal line of the image.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _yflip: If true, image origin is bottom left.

      +

      -
      -virtual void captureEnd() = 0
      +
      +void captureEnd() = 0

      Called when a video capture ends.

      Attention

      C99 equivalent is bgfx_callback_vtbl.capture_end.

      @@ -705,30 +668,27 @@ tutorial.

      -
      -virtual void captureFrame(const void *_data, uint32_t _size) = 0
      +
      +void captureFrame(const void *_data, uint32_t _size) = 0

      Captured frame.

      Attention

      C99 equivalent is bgfx_callback_vtbl.capture_frame.

      -
      -

      -
      -
      Parameters
      -
        -
      • _data[in] Image data.

      • -
      • _size[in] Image size.

      • +
        Parameters
          +
        • [in] _data: Image data.

        • +
        • [in] _size: Image size.

      +

      -
      -void bgfx::shutdown()
      +
      +void bgfx::shutdown()

      Shutdown bgfx library.

      Attention

      C99 equivalent is bgfx_shutdown.

      @@ -737,28 +697,24 @@ tutorial.

      -
      -
      +
      +

      Updating

      -
      +

      Reset

      -
      -void bgfx::reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE, TextureFormat::Enum _format = TextureFormat::Count)
      +
      +void bgfx::reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE, TextureFormat::Enum _format = TextureFormat::Count)

      Reset graphic settings and back-buffer size.

      Attention

      This call doesn’t actually change window size, it just resizes back-buffer. Windowing code has to change window size.

      Attention

      C99 equivalent is bgfx_reset.

      -
      -

      -
      -
      Parameters
      -
        -
      • _width[in] Back-buffer width.

      • -
      • _height[in] Back-buffer height.

      • -
      • _flags[in] See: BGFX_RESET_* for more info.

          +
          Parameters
            +
          • [in] _width: Back-buffer width.

          • +
          • [in] _height: Back-buffer height.

          • +
          • [in] _flags: See: BGFX_RESET_* for more info.

            • BGFX_RESET_NONE - No reset flags.

            • BGFX_RESET_FULLSCREEN - Not supported yet.

            • BGFX_RESET_MSAA_X[2/4/8/16] - Enable 2, 4, 8 or 16 x MSAA.

            • @@ -770,307 +726,289 @@ tutorial.

            • BGFX_RESET_SRGB_BACKBUFFER - Enable sRGB backbuffer.

          • -
          • _format[in] Texture format. See: TextureFormat::Enum.

          • +
          • [in] _format: Texture format. See: TextureFormat::Enum.

      +

      -
      -BGFX_RESET_NONE
      +
      +BGFX_RESET_NONE

      No reset flags.

      -
      -BGFX_RESET_FULLSCREEN
      +
      +BGFX_RESET_FULLSCREEN

      Not supported yet.

      -
      -BGFX_RESET_MSAA_X2
      +
      +BGFX_RESET_MSAA_X2

      Enable 2x MSAA.

      -
      -BGFX_RESET_MSAA_X4
      +
      +BGFX_RESET_MSAA_X4

      Enable 4x MSAA.

      -
      -BGFX_RESET_MSAA_X8
      +
      +BGFX_RESET_MSAA_X8

      Enable 8x MSAA.

      -
      -BGFX_RESET_MSAA_X16
      +
      +BGFX_RESET_MSAA_X16

      Enable 16x MSAA.

      -
      -BGFX_RESET_VSYNC
      +
      +BGFX_RESET_VSYNC

      Enable V-Sync.

      -
      -BGFX_RESET_MAXANISOTROPY
      +
      +BGFX_RESET_MAXANISOTROPY

      Turn on/off max anisotropy.

      -
      -BGFX_RESET_CAPTURE
      +
      +BGFX_RESET_CAPTURE

      Begin screen capture.

      -
      -BGFX_RESET_FLUSH_AFTER_RENDER
      +
      +BGFX_RESET_FLUSH_AFTER_RENDER

      Flush rendering after submitting to GPU.

      -
      -BGFX_RESET_FLIP_AFTER_RENDER
      +
      +BGFX_RESET_FLIP_AFTER_RENDER

      This flag specifies where flip occurs. Default behaviour is that flip occurs before rendering new frame. This flag only has effect when BGFX_CONFIG_MULTITHREADED=0.

      -
      -BGFX_RESET_SRGB_BACKBUFFER
      +
      +BGFX_RESET_SRGB_BACKBUFFER

      Enable sRGB backbuffer.

      -
      -BGFX_RESET_HDR10
      +
      +BGFX_RESET_HDR10

      Enable HDR10 rendering.

      -
      -BGFX_RESET_HIDPI
      +
      +BGFX_RESET_HIDPI

      Enable HiDPI rendering.

      -
      -BGFX_RESET_DEPTH_CLAMP
      +
      +BGFX_RESET_DEPTH_CLAMP

      Enable depth clamp.

      -
      -
      +
      +

      Frame

      -
      -uint32_t bgfx::frame(bool _capture = false)
      +
      +uint32_t bgfx::frame(bool _capture = false)

      Advance to next frame. When using multithreaded renderer, this call just swaps internal buffers, kicks render thread, and returns. In singlethreaded renderer this call does frame rendering.

      +
      Return

      Current frame number. This might be used in conjunction with double/multi buffering data outside the library and passing it to library via bgfx::makeRef calls.

      +
      Attention

      C99 equivalent is bgfx_frame.

      +
      Parameters
        +
      • [in] _capture: Capture frame with graphics debugger.

      • +
      +

      -
      -
      Parameters
      -

      _capture[in] Capture frame with graphics debugger.

      -
      -
      Returns
      -

      Current frame number. This might be used in conjunction with double/multi buffering data outside the library and passing it to library via bgfx::makeRef calls.

      -
      -
      -
      -
      -
      +
      +
      +

      Debug

      -
      +

      Debug Features

      -
      -void bgfx::setDebug(uint32_t _debug)
      +
      +void bgfx::setDebug(uint32_t _debug)

      Set debug flags.

      Attention

      C99 equivalent is bgfx_set_debug.

      -
      -

      -
      -
      Parameters
      -

      _debug[in] Available flags:

        +
        Parameters
          +
        • [in] _debug: Available flags:

          • BGFX_DEBUG_IFH - Infinitely fast hardware. When this flag is set all rendering calls will be skipped. This is useful when profiling to quickly assess potential bottlenecks between CPU and GPU.

          • BGFX_DEBUG_PROFILER - Enable profiler.

          • BGFX_DEBUG_STATS - Display internal statistics.

          • BGFX_DEBUG_TEXT - Display debug text.

          • BGFX_DEBUG_WIREFRAME - Wireframe rendering. All rendering primitives will be rendered as lines.

          -

          +

        • +
      +

      -
      -
      +
      +

      Debug Flags

      -
      -BGFX_DEBUG_NONE
      +
      +BGFX_DEBUG_NONE

      No debug.

      -
      -BGFX_DEBUG_WIREFRAME
      +
      +BGFX_DEBUG_WIREFRAME

      Enable wireframe for all primitives.

      -
      -BGFX_DEBUG_IFH
      +
      +BGFX_DEBUG_IFH

      Enable infinitely fast hardware test. No draw calls will be submitted to driver. It’s useful when profiling to quickly assess bottleneck between CPU and GPU.

      -
      -BGFX_DEBUG_STATS
      +
      +BGFX_DEBUG_STATS

      Enable statistics display.

      -
      -BGFX_DEBUG_TEXT
      +
      +BGFX_DEBUG_TEXT

      Enable debug text display.

      -
      -BGFX_DEBUG_PROFILER
      +
      +BGFX_DEBUG_PROFILER

      Enable profiler.

      - -
      +
      +

      Debug Text Display

      -
      -void bgfx::dbgTextClear(uint8_t _attr = 0, bool _small = false)
      +
      +void bgfx::dbgTextClear(uint8_t _attr = 0, bool _small = false)

      Clear internal debug text buffer.

      Attention

      C99 equivalent is bgfx_dbg_text_clear.

      -
      -

      -
      -
      Parameters
      -
        -
      • _attr[in] Background color.

      • -
      • _small[in] Default 8x16 or 8x8 font.

      • +
        Parameters
          +
        • [in] _attr: Background color.

        • +
        • [in] _small: Default 8x16 or 8x8 font.

      +

      -
      -void bgfx::dbgTextPrintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, ...)
      +
      +void bgfx::dbgTextPrintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, ...)

      Print into internal debug text character-buffer (VGA-compatible text mode).

      Attention

      C99 equivalent is bgfx_dbg_text_printf.

      -
      -

      -
      -
      Parameters
      -
        -
      • _x, _y[in] 2D position from top-left.

      • -
      • _attr[in] Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes).

      • -
      • _format[in] printf style format.

      • +
        Parameters
          +
        • [in] _x[in] _y: 2D position from top-left.

        • +
        • [in] _attr: Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes).

        • +
        • [in] _format: printf style format.

      +

      -
      -void bgfx::dbgTextPrintfVargs(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, va_list _argList)
      +
      +void bgfx::dbgTextPrintfVargs(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, va_list _argList)

      Print into internal debug text character-buffer (VGA-compatible text mode).

      Attention

      C99 equivalent is bgfx_dbg_text_vprintf.

      -
      -

      -
      -
      Parameters
      -
        -
      • _x, _y[in] 2D position from top-left.

      • -
      • _attr[in] Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes).

      • -
      • _format[in] printf style format.

      • -
      • _argList[in] additional arguments for format string

      • +
        Parameters
          +
        • [in] _x[in] _y: 2D position from top-left.

        • +
        • [in] _attr: Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes).

        • +
        • [in] _format: printf style format.

        • +
        • [in] _argList: additional arguments for format string

      +

      -
      -void bgfx::dbgTextImage(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void *_data, uint16_t _pitch)
      +
      +void bgfx::dbgTextImage(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void *_data, uint16_t _pitch)

      Draw image into internal debug text buffer.

      Attention

      C99 equivalent is bgfx_dbg_text_image.

      -
      -

      -
      -
      Parameters
      -
        -
      • _x, _y[in] 2D position from top-left.

      • -
      • _width, _height[in] Image width and height.

      • -
      • _data[in] Raw image data (character/attribute raw encoding).

      • -
      • _pitch[in] Image pitch in bytes.

      • +
        Parameters
          +
        • [in] _x[in] _y: 2D position from top-left.

        • +
        • [in] _width[in] _height: Image width and height.

        • +
        • [in] _data: Raw image data (character/attribute raw encoding).

        • +
        • [in] _pitch: Image pitch in bytes.

      +

      - - -
      +
      +
    +

    Querying information

    -
    +

    Renderer

    -
    -uint8_t bgfx::getSupportedRenderers(uint8_t _max = 0, RendererType::Enum *_enum = NULL)
    +
    +uint8_t bgfx::getSupportedRenderers(uint8_t _max = 0, RendererType::Enum *_enum = NULL)

    Returns supported backend API renderers.

    +
    Return

    Number of supported renderers.

    +
    Attention

    C99 equivalent is bgfx_get_supported_renderers.

    +
    Parameters
      +
    • [in] _max: Maximum number of elements in _enum array.

    • +
    • [inout] _enum: Array where supported renderers will be written.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _max[in] Maximum number of elements in _enum array.

    • -
    • _enum[inout] Array where supported renderers will be written.

    • -
    -
    -
    Returns
    -

    Number of supported renderers.

    -
    -
    -
    -RendererType::Enum bgfx::getRendererType()
    +
    +RendererType::Enum bgfx::getRendererType()

    Returns current renderer backend API type.

    Remark

    Library must be initialized.

    @@ -1082,8 +1020,8 @@ tutorial.

    -
    -struct bgfx::RendererType
    +
    +struct bgfx::RendererType

    Renderer backend type enum.

    Attention

    C99 equivalent is bgfx_renderer_type_t.

    @@ -1091,81 +1029,87 @@ tutorial.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Renderer types:

    Values:

    -
    -enumerator Noop
    +
    +enumerator Noop

    No rendering.

    -
    -enumerator Direct3D9
    +
    +enumerator Agc
    +

    AGC.

    +
    + +
    +
    +enumerator Direct3D9

    Direct3D 9.0.

    -
    -enumerator Direct3D11
    +
    +enumerator Direct3D11

    Direct3D 11.0.

    -
    -enumerator Direct3D12
    +
    +enumerator Direct3D12

    Direct3D 12.0.

    -
    -enumerator Gnm
    +
    +enumerator Gnm

    GNM.

    -
    -enumerator Metal
    +
    +enumerator Metal

    Metal.

    -
    -enumerator Nvn
    +
    +enumerator Nvn

    NVN.

    -
    -enumerator OpenGLES
    +
    +enumerator OpenGLES

    OpenGL ES 2.0+.

    -
    -enumerator OpenGL
    +
    +enumerator OpenGL

    OpenGL 2.1+.

    -
    -enumerator Vulkan
    +
    +enumerator Vulkan

    Vulkan.

    -
    -enumerator WebGPU
    +
    +enumerator WebGPU

    WebGPU.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -1173,30 +1117,27 @@ tutorial.

    -
    -
    +
    +

    Capabilities

    -
    -const Caps *bgfx::getCaps()
    +
    +const Caps *bgfx::getCaps()

    Returns renderer capabilities.

    +
    Return

    Pointer to static bgfx::Caps structure.

    +
    Remark

    Library must be initialized.

    Attention

    C99 equivalent is bgfx_get_caps.

    -
    -
    Returns
    -

    Pointer to static bgfx::Caps structure.

    -
    -
    -
    -struct bgfx::Caps
    +
    +struct bgfx::Caps

    Renderer capabilities.

    Attention

    C99 equivalent is bgfx_caps_t.

    @@ -1204,16 +1145,16 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -RendererType::Enum rendererType
    +
    +RendererType::Enum rendererType

    Renderer backend type. See: bgfx::RendererType

    -
    -uint64_t supported
    +
    +uint64_t supported

    Supported functionality.

    Attention

    See BGFX_CAPS_* flags at https://bkaradzic.github.io/bgfx/bgfx.html#available-caps

    @@ -1223,50 +1164,50 @@ tutorial.

    -
    -uint16_t vendorId
    +
    +uint16_t vendorId

    Selected GPU vendor PCI id.

    -
    -uint16_t deviceId
    +
    +uint16_t deviceId

    Selected GPU device id.

    -
    -bool homogeneousDepth
    +
    +bool homogeneousDepth

    True when NDC depth is in [-1, 1] range, otherwise its [0, 1].

    -
    -bool originBottomLeft
    +
    +bool originBottomLeft

    True when NDC origin is at bottom left.

    -
    -uint8_t numGPUs
    +
    +uint8_t numGPUs

    Number of enumerated GPUs.

    -
    -GPU gpu[4]
    +
    +GPU gpu[4]

    Enumerated GPUs.

    -
    -Limits limits
    +
    +Limits limits

    Renderer runtime limits.

    -
    -uint16_t formats[TextureFormat::Count]
    +
    +uint16_t formats[Count]

    Supported texture format capabilities flags:

    • BGFX_CAPS_FORMAT_TEXTURE_NONE - Texture format is not supported.

    • @@ -1292,8 +1233,8 @@ tutorial.

    -
    -struct GPU
    +
    +struct GPU

    GPU info.

    Attention

    C99 equivalent is bgfx_caps_gpu_t.

    @@ -1301,16 +1242,16 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -uint16_t vendorId
    +
    +uint16_t vendorId

    Vendor PCI id. See BGFX_PCI_ID_*.

    -
    -uint16_t deviceId
    +
    +uint16_t deviceId

    Device id.

    @@ -1318,8 +1259,8 @@ tutorial.

    -
    -struct Limits
    +
    +struct Limits

    Renderer runtime limits.

    Attention

    C99 equivalent is bgfx_caps_limits_t.

    @@ -1327,148 +1268,148 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -uint32_t maxDrawCalls
    +
    +uint32_t maxDrawCalls

    Maximum number of draw calls.

    -
    -uint32_t maxBlits
    +
    +uint32_t maxBlits

    Maximum number of blit calls.

    -
    -uint32_t maxTextureSize
    +
    +uint32_t maxTextureSize

    Maximum texture size.

    -
    -uint32_t maxTextureLayers
    +
    +uint32_t maxTextureLayers

    Maximum texture layers.

    -
    -uint32_t maxViews
    +
    +uint32_t maxViews

    Maximum number of views.

    -
    -uint32_t maxFrameBuffers
    +
    +uint32_t maxFrameBuffers

    Maximum number of frame buffer handles.

    -
    -uint32_t maxFBAttachments
    +
    +uint32_t maxFBAttachments

    Maximum number of frame buffer attachments.

    -
    -uint32_t maxPrograms
    +
    +uint32_t maxPrograms

    Maximum number of program handles.

    -
    -uint32_t maxShaders
    +
    +uint32_t maxShaders

    Maximum number of shader handles.

    -
    -uint32_t maxTextures
    +
    +uint32_t maxTextures

    Maximum number of texture handles.

    -
    -uint32_t maxTextureSamplers
    +
    +uint32_t maxTextureSamplers

    Maximum number of texture samplers.

    -
    -uint32_t maxComputeBindings
    +
    +uint32_t maxComputeBindings

    Maximum number of compute bindings.

    -
    -uint32_t maxVertexLayouts
    +
    +uint32_t maxVertexLayouts

    Maximum number of vertex format layouts.

    -
    -uint32_t maxVertexStreams
    +
    +uint32_t maxVertexStreams

    Maximum number of vertex streams.

    -
    -uint32_t maxIndexBuffers
    +
    +uint32_t maxIndexBuffers

    Maximum number of index buffer handles.

    -
    -uint32_t maxVertexBuffers
    +
    +uint32_t maxVertexBuffers

    Maximum number of vertex buffer handles.

    -
    -uint32_t maxDynamicIndexBuffers
    +
    +uint32_t maxDynamicIndexBuffers

    Maximum number of dynamic index buffer handles.

    -
    -uint32_t maxDynamicVertexBuffers
    +
    +uint32_t maxDynamicVertexBuffers

    Maximum number of dynamic vertex buffer handles.

    -
    -uint32_t maxUniforms
    +
    +uint32_t maxUniforms

    Maximum number of uniform handles.

    -
    -uint32_t maxOcclusionQueries
    +
    +uint32_t maxOcclusionQueries

    Maximum number of occlusion query handles.

    -
    -uint32_t maxEncoders
    +
    +uint32_t maxEncoders

    Maximum number of encoder threads.

    -
    -uint32_t minResourceCbSize
    +
    +uint32_t minResourceCbSize

    Minimum resource command buffer size.

    -
    -uint32_t transientVbSize
    +
    +uint32_t transientVbSize

    Maximum transient vertex buffer size.

    -
    -uint32_t transientIbSize
    +
    +uint32_t transientIbSize

    Maximum transient index buffer size.

    @@ -1477,176 +1418,176 @@ tutorial.

    -
    +
    Available Caps
    -
    -BGFX_CAPS_ALPHA_TO_COVERAGE
    +
    +BGFX_CAPS_ALPHA_TO_COVERAGE

    Alpha to coverage is supported.

    -
    -BGFX_CAPS_BLEND_INDEPENDENT
    +
    +BGFX_CAPS_BLEND_INDEPENDENT

    Blend independent is supported.

    -
    -BGFX_CAPS_COMPUTE
    +
    +BGFX_CAPS_COMPUTE

    Compute shaders are supported.

    -
    -BGFX_CAPS_CONSERVATIVE_RASTER
    +
    +BGFX_CAPS_CONSERVATIVE_RASTER

    Conservative rasterization is supported.

    -
    -BGFX_CAPS_DRAW_INDIRECT
    +
    +BGFX_CAPS_DRAW_INDIRECT

    Draw indirect is supported.

    -
    -BGFX_CAPS_FRAGMENT_DEPTH
    +
    +BGFX_CAPS_FRAGMENT_DEPTH

    Fragment depth is available in fragment shader.

    -
    -BGFX_CAPS_FRAGMENT_ORDERING
    +
    +BGFX_CAPS_FRAGMENT_ORDERING

    Fragment ordering is available in fragment shader.

    -
    -BGFX_CAPS_GRAPHICS_DEBUGGER
    +
    +BGFX_CAPS_GRAPHICS_DEBUGGER

    Graphics debugger is present.

    -
    -BGFX_CAPS_HDR10
    +
    +BGFX_CAPS_HDR10

    HDR10 rendering is supported.

    -
    -BGFX_CAPS_HIDPI
    +
    +BGFX_CAPS_HIDPI

    HiDPI rendering is supported.

    -
    -BGFX_CAPS_IMAGE_RW
    +
    +BGFX_CAPS_IMAGE_RW

    Image Read/Write is supported.

    -
    -BGFX_CAPS_INDEX32
    +
    +BGFX_CAPS_INDEX32

    32-bit indices are supported.

    -
    -BGFX_CAPS_INSTANCING
    +
    +BGFX_CAPS_INSTANCING

    Instancing is supported.

    -
    -BGFX_CAPS_OCCLUSION_QUERY
    +
    +BGFX_CAPS_OCCLUSION_QUERY

    Occlusion query is supported.

    -
    -BGFX_CAPS_RENDERER_MULTITHREADED
    +
    +BGFX_CAPS_RENDERER_MULTITHREADED

    Renderer is on separate thread.

    -
    -BGFX_CAPS_SWAP_CHAIN
    +
    +BGFX_CAPS_SWAP_CHAIN

    Multiple windows are supported.

    -
    -BGFX_CAPS_TEXTURE_2D_ARRAY
    +
    +BGFX_CAPS_TEXTURE_2D_ARRAY

    2D texture array is supported.

    -
    -BGFX_CAPS_TEXTURE_3D
    +
    +BGFX_CAPS_TEXTURE_3D

    3D textures are supported.

    -
    -BGFX_CAPS_TEXTURE_BLIT
    +
    +BGFX_CAPS_TEXTURE_BLIT

    Texture blit is supported.

    -
    -BGFX_CAPS_TEXTURE_COMPARE_ALL
    +
    +BGFX_CAPS_TEXTURE_COMPARE_ALL
    -
    -BGFX_CAPS_TEXTURE_COMPARE_LEQUAL
    +
    +BGFX_CAPS_TEXTURE_COMPARE_LEQUAL

    Texture compare less equal mode is supported.

    -
    -BGFX_CAPS_TEXTURE_CUBE_ARRAY
    +
    +BGFX_CAPS_TEXTURE_CUBE_ARRAY

    Cubemap texture array is supported.

    -
    -BGFX_CAPS_TEXTURE_DIRECT_ACCESS
    +
    +BGFX_CAPS_TEXTURE_DIRECT_ACCESS

    CPU direct access to GPU texture memory.

    -
    -BGFX_CAPS_TEXTURE_READ_BACK
    +
    +BGFX_CAPS_TEXTURE_READ_BACK

    Read-back texture is supported.

    -
    -BGFX_CAPS_VERTEX_ATTRIB_HALF
    +
    +BGFX_CAPS_VERTEX_ATTRIB_HALF

    Vertex attribute half-float is supported.

    -
    -BGFX_CAPS_VERTEX_ATTRIB_UINT10
    +
    +BGFX_CAPS_VERTEX_ATTRIB_UINT10

    Vertex attribute 10_10_10_2 is supported.

    -
    -BGFX_CAPS_VERTEX_ID
    +
    +BGFX_CAPS_VERTEX_ID

    Rendering with VertexID only is supported.

    -
    - -
    +
    + +

    Statistics

    -
    -const Stats *bgfx::getStats()
    +
    +const Stats *bgfx::getStats()

    Returns performance counters.

    Attention

    Pointer returned is valid until bgfx::frame is called.

    @@ -1658,8 +1599,8 @@ tutorial.

    -
    -struct bgfx::Stats
    +
    +struct bgfx::Stats

    Renderer statistics data.

    Attention

    C99 equivalent is bgfx_stats_t.

    @@ -1669,238 +1610,238 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -int64_t cpuTimeFrame
    +
    +int64_t cpuTimeFrame

    CPU time between two bgfx::frame calls.

    -
    -int64_t cpuTimeBegin
    +
    +int64_t cpuTimeBegin

    Render thread CPU submit begin time.

    -
    -int64_t cpuTimeEnd
    +
    +int64_t cpuTimeEnd

    Render thread CPU submit end time.

    -
    -int64_t cpuTimerFreq
    +
    +int64_t cpuTimerFreq

    CPU timer frequency. Timestamps-per-second.

    -
    -int64_t gpuTimeBegin
    +
    +int64_t gpuTimeBegin

    GPU frame begin time.

    -
    -int64_t gpuTimeEnd
    +
    +int64_t gpuTimeEnd

    GPU frame end time.

    -
    -int64_t gpuTimerFreq
    +
    +int64_t gpuTimerFreq

    GPU timer frequency.

    -
    -int64_t waitRender
    +
    +int64_t waitRender

    Time spent waiting for render backend thread to finish issuing draw commands to underlying graphics API.

    -
    -int64_t waitSubmit
    +
    +int64_t waitSubmit

    Time spent waiting for submit thread to advance to next frame.

    -
    -uint32_t numDraw
    +
    +uint32_t numDraw

    Number of draw calls submitted.

    -
    -uint32_t numCompute
    +
    +uint32_t numCompute

    Number of compute calls submitted.

    -
    -uint32_t numBlit
    +
    +uint32_t numBlit

    Number of blit calls submitted.

    -
    -uint32_t maxGpuLatency
    +
    +uint32_t maxGpuLatency

    GPU driver latency.

    -
    -uint16_t numDynamicIndexBuffers
    +
    +uint16_t numDynamicIndexBuffers

    Number of used dynamic index buffers.

    -
    -uint16_t numDynamicVertexBuffers
    +
    +uint16_t numDynamicVertexBuffers

    Number of used dynamic vertex buffers.

    -
    -uint16_t numFrameBuffers
    +
    +uint16_t numFrameBuffers

    Number of used frame buffers.

    -
    -uint16_t numIndexBuffers
    +
    +uint16_t numIndexBuffers

    Number of used index buffers.

    -
    -uint16_t numOcclusionQueries
    +
    +uint16_t numOcclusionQueries

    Number of used occlusion queries.

    -
    -uint16_t numPrograms
    +
    +uint16_t numPrograms

    Number of used programs.

    -
    -uint16_t numShaders
    +
    +uint16_t numShaders

    Number of used shaders.

    -
    -uint16_t numTextures
    +
    +uint16_t numTextures

    Number of used textures.

    -
    -uint16_t numUniforms
    +
    +uint16_t numUniforms

    Number of used uniforms.

    -
    -uint16_t numVertexBuffers
    +
    +uint16_t numVertexBuffers

    Number of used vertex buffers.

    -
    -uint16_t numVertexLayouts
    +
    +uint16_t numVertexLayouts

    Number of used vertex layouts.

    -
    -int64_t textureMemoryUsed
    +
    +int64_t textureMemoryUsed

    Estimate of texture memory used.

    -
    -int64_t rtMemoryUsed
    +
    +int64_t rtMemoryUsed

    Estimate of render target memory used.

    -
    -int32_t transientVbUsed
    +
    +int32_t transientVbUsed

    Amount of transient vertex buffer used.

    -
    -int32_t transientIbUsed
    +
    +int32_t transientIbUsed

    Amount of transient index buffer used.

    -
    -uint32_t numPrims[Topology::Count]
    +
    +uint32_t numPrims[Count]

    Number of primitives rendered.

    -
    -int64_t gpuMemoryMax
    +
    +int64_t gpuMemoryMax

    Maximum available GPU memory for application.

    -
    -int64_t gpuMemoryUsed
    +
    +int64_t gpuMemoryUsed

    Amount of GPU memory used by the application.

    -
    -uint16_t width
    +
    +uint16_t width

    Backbuffer width in pixels.

    -
    -uint16_t height
    +
    +uint16_t height

    Backbuffer height in pixels.

    -
    -uint16_t textWidth
    +
    +uint16_t textWidth

    Debug text width in characters.

    -
    -uint16_t textHeight
    +
    +uint16_t textHeight

    Debug text height in characters.

    -
    -uint16_t numViews
    +
    +uint16_t numViews

    Number of view stats.

    -
    -ViewStats *viewStats
    +
    +ViewStats *viewStats

    Array of View stats.

    -
    -uint8_t numEncoders
    +
    +uint8_t numEncoders

    Number of encoders used during frame.

    -
    -EncoderStats *encoderStats
    +
    +EncoderStats *encoderStats

    Array of encoder stats.

    @@ -1908,8 +1849,8 @@ tutorial.

    -
    -struct bgfx::ViewStats
    +
    +struct bgfx::ViewStats

    View stats.

    Attention

    C99 equivalent is bgfx_view_stats_t.

    @@ -1917,40 +1858,40 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -char name[256]
    +
    +char name[256]

    View name.

    -
    -ViewId view
    +
    +ViewId view

    View id.

    -
    -int64_t cpuTimeBegin
    +
    +int64_t cpuTimeBegin

    CPU (submit) begin time.

    -
    -int64_t cpuTimeEnd
    +
    +int64_t cpuTimeEnd

    CPU (submit) end time.

    -
    -int64_t gpuTimeBegin
    +
    +int64_t gpuTimeBegin

    GPU begin time.

    -
    -int64_t gpuTimeEnd
    +
    +int64_t gpuTimeEnd

    GPU end time.

    @@ -1958,8 +1899,8 @@ tutorial.

    -
    -struct bgfx::EncoderStats
    +
    +struct bgfx::EncoderStats

    Encoder stats.

    Attention

    C99 equivalent is bgfx_encoder_stats_t.

    @@ -1967,56 +1908,52 @@ tutorial.

    -

    Public Members

    +

    Public Members

    -
    -int64_t cpuTimeBegin
    +
    +int64_t cpuTimeBegin

    Encoder thread CPU submit begin time.

    -
    -int64_t cpuTimeEnd
    +
    +int64_t cpuTimeEnd

    Encoder thread CPU submit end time.

    - - -
    +
    + +

    Platform specific

    These are platform specific APIs. It is only necessary to use these APIs in conjunction with creating windows.

    -
    -RenderFrame::Enum bgfx::renderFrame(int32_t _msecs = -1)
    +
    +RenderFrame::Enum bgfx::renderFrame(int32_t _msecs = -1)

    Render frame.

    +
    Return

    Current renderer state. See: bgfx::RenderFrame.

    +
    Attention

    bgfx::renderFrame is blocking call. It waits for bgfx::frame to be called from API thread to process frame. If timeout value is passed call will timeout and return even if bgfx::frame is not called.

    +
    Warning

    This call should be only used on platforms that don’t allow creating separate rendering thread. If it is called before to bgfx::init, render thread won’t be created by bgfx::init call.

    +
    Attention

    C99 equivalent is bgfx_render_frame.

    +
    Parameters
      +
    • _msecs: Timeout in milliseconds.

    • +
    +

    -
    -

    Warning

    -

    This call should be only used on platforms that don’t allow creating separate rendering thread. If it is called before to bgfx::init, render thread won’t be created by bgfx::init call.

    -
    -
    -
    Parameters
    -

    _msecs – Timeout in milliseconds.

    -
    -
    Returns
    -

    Current renderer state. See: bgfx::RenderFrame.

    -
    -
    -
    -struct RenderFrame
    +
    +struct RenderFrame

    Render frame enum.

    Attention

    C99 equivalent is bgfx_render_frame_t.

    @@ -2026,23 +1963,21 @@ creating windows.

    -
    -void bgfx::setPlatformData(const PlatformData &_data)
    +
    +void bgfx::setPlatformData(const PlatformData &_data)

    Set platform data.

    +
    Warning

    Must be called before bgfx::init.

    +
    Attention

    C99 equivalent is bgfx_set_platform_data.

    -
    -

    Warning

    -

    Must be called before bgfx::init.

    -
    -
    -struct bgfx::PlatformData
    +
    +struct bgfx::PlatformData

    Platform data.

    Attention

    C99 equivalent is bgfx_platform_data_t.

    @@ -2050,34 +1985,34 @@ creating windows.

    -

    Public Members

    +

    Public Members

    -
    -void *ndt
    +
    +void *ndt

    Native display type (*nix specific).

    -
    -void *nwh
    +
    +void *nwh

    Native window handle. If NULL bgfx will create headless context/device if renderer API supports it.

    -
    -void *context
    +
    +void *context

    GL context, or D3D device. If NULL, bgfx will create context/device.

    -
    -void *backBuffer
    +
    +void *backBuffer

    GL back-buffer, or D3D render target view. If NULL bgfx will create back-buffer color surface.

    -
    -void *backBufferDS
    +
    +void *backBufferDS

    Backbuffer depth/stencil. If NULL bgfx will create back-buffer depth/stencil surface.

    @@ -2085,25 +2020,23 @@ creating windows.

    -
    -const InternalData *bgfx::getInternalData()
    +
    +const InternalData *bgfx::getInternalData()

    Get internal data for interop.

    Attention

    It’s expected you understand some bgfx internals before you use this call.

    +
    Warning

    Must be called only on render thread.

    +
    Attention

    C99 equivalent is bgfx_get_internal_data.

    -
    -

    Warning

    -

    Must be called only on render thread.

    -
    -
    -struct bgfx::InternalData
    +
    +struct bgfx::InternalData

    Internal data.

    Attention

    C99 equivalent is bgfx_internal_data_t.

    @@ -2111,16 +2044,16 @@ creating windows.

    -

    Public Members

    +

    Public Members

    -
    -const struct Caps *caps
    +
    +const struct Caps *caps

    Renderer capabilities.

    -
    -void *context
    +
    +void *context

    GL context, or D3D device.

    @@ -2128,168 +2061,143 @@ creating windows.

    -
    -uintptr_t bgfx::overrideInternal(TextureHandle _handle, uintptr_t _ptr)
    +
    +uintptr_t bgfx::overrideInternal(TextureHandle _handle, uintptr_t _ptr)

    Override internal texture with externally created texture. Previously created internal texture will released.

    Attention

    It’s expected you understand some bgfx internals before you use this call.

    +
    Return

    Native API pointer to texture. If result is 0, texture is not created yet from the main thread.

    +
    +
    Warning

    Must be called only on render thread.

    +
    Attention

    C99 equivalent is bgfx_override_internal_texture_ptr.

    +
    Parameters
      +
    • [in] _handle: Texture handle.

    • +
    • [in] _ptr: Native API pointer to texture.

    • +
    +

    -
    -

    Warning

    -

    Must be called only on render thread.

    -
    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _ptr[in] Native API pointer to texture.

    • -
    -
    -
    Returns
    -

    Native API pointer to texture. If result is 0, texture is not created yet from the main thread.

    -
    -
    -
    -uintptr_t 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)
    +
    +uintptr_t 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)

    Override internal texture by creating new texture. Previously created internal texture will released.

    Attention

    It’s expected you understand some bgfx internals before you use this call.

    +
    Return

    Native API pointer to texture. If result is 0, texture is not created yet from the main thread.

    +
    +
    Warning

    Must be called only on render thread.

    +
    Attention

    C99 equivalent is bgfx_override_internal_texture.

    -
    -

    -
    -

    Warning

    -

    Must be called only on render thread.

    -
    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _width[in] Width.

    • -
    • _height[in] Height.

    • -
    • _numMips[in] Number of mip-maps.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _handle: Texture handle.

        • +
        • [in] _width: Width.

        • +
        • [in] _height: Height.

        • +
        • [in] _numMips: Number of mip-maps.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _flags: Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        -
        Returns
        -

        Native API pointer to texture. If result is 0, texture is not created yet from the main thread.

        -
    +

    - -
    +
    +

    Miscellaneous

    -
    -void bgfx::vertexPack(const float _input[4], bool _inputNormalized, Attrib::Enum _attr, const VertexLayout &_layout, void *_data, uint32_t _index = 0)
    +
    +void bgfx::vertexPack(const float _input[4], bool _inputNormalized, Attrib::Enum _attr, const VertexLayout &_layout, void *_data, uint32_t _index = 0)

    Pack vertex attribute into vertex stream format.

    Attention

    C99 equivalent is bgfx_vertex_pack.

    -
    -

    -
    -
    Parameters
    -
      -
    • _input[in] Value to be packed into vertex stream.

    • -
    • _inputNormalized[in] True if input value is already normalized.

    • -
    • _attr[in] Attribute to pack.

    • -
    • _layout[in] Vertex stream layout.

    • -
    • _data[in] Destination vertex stream where data will be packed.

    • -
    • _index[in] Vertex index that will be modified.

    • +
      Parameters
        +
      • [in] _input: Value to be packed into vertex stream.

      • +
      • [in] _inputNormalized: True if input value is already normalized.

      • +
      • [in] _attr: Attribute to pack.

      • +
      • [in] _layout: Vertex stream layout.

      • +
      • [in] _data: Destination vertex stream where data will be packed.

      • +
      • [in] _index: Vertex index that will be modified.

    +

    -
    -void bgfx::vertexUnpack(float _output[4], Attrib::Enum _attr, const VertexLayout &_layout, const void *_data, uint32_t _index = 0)
    +
    +void bgfx::vertexUnpack(float _output[4], Attrib::Enum _attr, const VertexLayout &_layout, const void *_data, uint32_t _index = 0)

    Unpack vertex attribute from vertex stream format.

    Attention

    C99 equivalent is bgfx_vertex_unpack.

    -
    -

    -
    -
    Parameters
    -
      -
    • _output[out] Result of unpacking.

    • -
    • _attr[in] Attribute to unpack.

    • -
    • _layout[in] Vertex stream layout.

    • -
    • _data[in] Source vertex stream from where data will be unpacked.

    • -
    • _index[in] Vertex index that will be unpacked.

    • +
      Parameters
        +
      • [out] _output: Result of unpacking.

      • +
      • [in] _attr: Attribute to unpack.

      • +
      • [in] _layout: Vertex stream layout.

      • +
      • [in] _data: Source vertex stream from where data will be unpacked.

      • +
      • [in] _index: Vertex index that will be unpacked.

    +

    -
    -void bgfx::vertexConvert(const VertexLayout &_destLayout, void *_destData, const VertexLayout &_srcLayout, const void *_srcData, uint32_t _num = 1)
    +
    +void bgfx::vertexConvert(const VertexLayout &_destLayout, void *_destData, const VertexLayout &_srcLayout, const void *_srcData, uint32_t _num = 1)

    Converts vertex stream data from one vertex stream format to another.

    Attention

    C99 equivalent is bgfx_vertex_convert.

    -
    -

    -
    -
    Parameters
    -
      -
    • _destLayout[in] Destination vertex stream layout.

    • -
    • _destData[in] Destination vertex stream.

    • -
    • _srcLayout[in] Source vertex stream layout.

    • -
    • _srcData[in] Source vertex stream data.

    • -
    • _num[in] Number of vertices to convert from source to destination.

    • +
      Parameters
        +
      • [in] _destLayout: Destination vertex stream layout.

      • +
      • [in] _destData: Destination vertex stream.

      • +
      • [in] _srcLayout: Source vertex stream layout.

      • +
      • [in] _srcData: Source vertex stream data.

      • +
      • [in] _num: Number of vertices to convert from source to destination.

    +

    -
    -uint32_t bgfx::weldVertices(void *_output, const VertexLayout &_layout, const void *_data, uint32_t _num, bool _index32, float _epsilon = 0.001f)
    +
    +uint32_t bgfx::weldVertices(void *_output, const VertexLayout &_layout, const void *_data, uint32_t _num, bool _index32, float _epsilon = 0.001f)

    Weld vertices.

    +
    Return

    Number of unique vertices after vertex welding.

    +
    Attention

    C99 equivalent is bgfx_weld_vertices.

    +
    Parameters
      +
    • [in] _output: Welded vertices remapping table. The size of buffer must be the same as number of vertices.

    • +
    • [in] _layout: Vertex stream layout.

    • +
    • [in] _data: Vertex stream.

    • +
    • [in] _num: Number of vertices in vertex stream.

    • +
    • [in] _index32: Set to true if input indices are 32-bit.

    • +
    • [in] _epsilon: Error tolerance for vertex position comparison.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _output[in] Welded vertices remapping table. The size of buffer must be the same as number of vertices.

    • -
    • _layout[in] Vertex stream layout.

    • -
    • _data[in] Vertex stream.

    • -
    • _num[in] Number of vertices in vertex stream.

    • -
    • _index32[in] Set to true if input indices are 32-bit.

    • -
    • _epsilon[in] Error tolerance for vertex position comparison.

    • -
    -
    -
    Returns
    -

    Number of unique vertices after vertex welding.

    -
    -
    -
    -struct bgfx::TopologyConvert
    +
    +struct bgfx::TopologyConvert

    Topology conversion function.

    Attention

    C99 equivalent is bgfx_topology_convert_t.

    @@ -2297,45 +2205,45 @@ creating windows.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Topology conversion functions:

    Values:

    -
    -enumerator TriListFlipWinding
    +
    +enumerator TriListFlipWinding

    Flip winding order of triangle list.

    -
    -enumerator TriStripFlipWinding
    +
    +enumerator TriStripFlipWinding

    Flip winding order of trinagle strip.

    -
    -enumerator TriListToLineList
    +
    +enumerator TriListToLineList

    Convert triangle list to line list.

    -
    -enumerator TriStripToTriList
    +
    +enumerator TriStripToTriList

    Convert triangle strip to triangle list.

    -
    -enumerator LineStripToLineList
    +
    +enumerator LineStripToLineList

    Convert line strip to line list.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -2344,34 +2252,30 @@ creating windows.

    -
    -uint32_t bgfx::topologyConvert(TopologyConvert::Enum _conversion, void *_dst, uint32_t _dstSize, const void *_indices, uint32_t _numIndices, bool _index32)
    +
    +uint32_t bgfx::topologyConvert(TopologyConvert::Enum _conversion, void *_dst, uint32_t _dstSize, const void *_indices, uint32_t _numIndices, bool _index32)

    Convert index buffer for use with different primitive topologies.

    +
    Return

    Number of output indices after conversion.

    +
    Attention

    C99 equivalent is bgfx_topology_convert.

    +
    Parameters
      +
    • [in] _conversion: Conversion type, see TopologyConvert::Enum.

    • +
    • [in] _dst: Destination index buffer. If this argument is NULL function will return number of indices after conversion.

    • +
    • [in] _dstSize: Destination index buffer in bytes. It must be large enough to contain output indices. If destination size is insufficient index buffer will be truncated.

    • +
    • [in] _indices: Source indices.

    • +
    • [in] _numIndices: Number of input indices.

    • +
    • [in] _index32: Set to true if input indices are 32-bit.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _conversion[in] Conversion type, see TopologyConvert::Enum.

    • -
    • _dst[in] Destination index buffer. If this argument is NULL function will return number of indices after conversion.

    • -
    • _dstSize[in] Destination index buffer in bytes. It must be large enough to contain output indices. If destination size is insufficient index buffer will be truncated.

    • -
    • _indices[in] Source indices.

    • -
    • _numIndices[in] Number of input indices.

    • -
    • _index32[in] Set to true if input indices are 32-bit.

    • -
    -
    -
    Returns
    -

    Number of output indices after conversion.

    -
    -
    -
    -struct bgfx::TopologySort
    +
    +struct bgfx::TopologySort

    Topology sort order.

    Attention

    C99 equivalent is bgfx_topology_sort_t.

    @@ -2379,75 +2283,75 @@ creating windows.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Topology sort order:

    Values:

    -
    -enumerator DirectionFrontToBackMin
    +
    +enumerator DirectionFrontToBackMin
    -
    -enumerator DirectionFrontToBackAvg
    +
    +enumerator DirectionFrontToBackAvg
    -
    -enumerator DirectionFrontToBackMax
    +
    +enumerator DirectionFrontToBackMax
    -
    -enumerator DirectionBackToFrontMin
    +
    +enumerator DirectionBackToFrontMin
    -
    -enumerator DirectionBackToFrontAvg
    +
    +enumerator DirectionBackToFrontAvg
    -
    -enumerator DirectionBackToFrontMax
    +
    +enumerator DirectionBackToFrontMax
    -
    -enumerator DistanceFrontToBackMin
    +
    +enumerator DistanceFrontToBackMin
    -
    -enumerator DistanceFrontToBackAvg
    +
    +enumerator DistanceFrontToBackAvg
    -
    -enumerator DistanceFrontToBackMax
    +
    +enumerator DistanceFrontToBackMax
    -
    -enumerator DistanceBackToFrontMin
    +
    +enumerator DistanceBackToFrontMin
    -
    -enumerator DistanceBackToFrontAvg
    +
    +enumerator DistanceBackToFrontAvg
    -
    -enumerator DistanceBackToFrontMax
    +
    +enumerator DistanceBackToFrontMax
    -
    -enumerator Count
    +
    +enumerator Count
    @@ -2456,125 +2360,111 @@ creating windows.

    -
    -void bgfx::topologySortTriList(TopologySort::Enum _sort, void *_dst, uint32_t _dstSize, const float _dir[3], const float _pos[3], const void *_vertices, uint32_t _stride, const void *_indices, uint32_t _numIndices, bool _index32)
    +
    +void bgfx::topologySortTriList(TopologySort::Enum _sort, void *_dst, uint32_t _dstSize, const float _dir[3], const float _pos[3], const void *_vertices, uint32_t _stride, const void *_indices, uint32_t _numIndices, bool _index32)

    Sort indices.

    Attention

    C99 equivalent is bgfx_topology_sort_tri_list.

    -
    -

    -
    -
    Parameters
    -
      -
    • _sort[in] Sort order, see TopologySort::Enum.

    • -
    • _dst[in] Destination index buffer.

    • -
    • _dstSize[in] Destination index buffer in bytes. It must be large enough to contain output indices. If destination size is insufficient index buffer will be truncated.

    • -
    • _dir[in] Direction (vector must be normalized).

    • -
    • _pos[in] Position.

    • -
    • _vertices[in] Pointer to first vertex represented as float x, y, z. Must contain at least number of vertices referencende by index buffer.

    • -
    • _stride[in] Vertex stride.

    • -
    • _indices[in] Source indices.

    • -
    • _numIndices[in] Number of input indices.

    • -
    • _index32[in] Set to true if input indices are 32-bit.

    • +
      Parameters
        +
      • [in] _sort: Sort order, see TopologySort::Enum.

      • +
      • [in] _dst: Destination index buffer.

      • +
      • [in] _dstSize: Destination index buffer in bytes. It must be large enough to contain output indices. If destination size is insufficient index buffer will be truncated.

      • +
      • [in] _dir: Direction (vector must be normalized).

      • +
      • [in] _pos: Position.

      • +
      • [in] _vertices: Pointer to first vertex represented as float x, y, z. Must contain at least number of vertices referencende by index buffer.

      • +
      • [in] _stride: Vertex stride.

      • +
      • [in] _indices: Source indices.

      • +
      • [in] _numIndices: Number of input indices.

      • +
      • [in] _index32: Set to true if input indices are 32-bit.

    +

    -
    -void bgfx::discard(uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void bgfx::discard(uint8_t _flags = BGFX_DISCARD_ALL)

    Discard all previously set state for draw or compute call.

    Attention

    C99 equivalent is bgfx_discard.

    -
    -

    -
    -
    Parameters
    -

    _flags[in] Draw/compute states to discard.

    +
    Parameters
      +
    • [in] _flags: Draw/compute states to discard.

    • +
    +

    -
    -void bgfx::touch(ViewId _id)
    +
    +void bgfx::touch(ViewId _id)

    Submit an empty primitive for rendering. Uniforms and draw state will be applied but no geometry will be submitted.

    These empty draw calls will sort before ordinary draw calls.

    Attention

    C99 equivalent is bgfx_touch.

    -
    -

    -
    -
    Parameters
    -

    _id[in] View id.

    +
    Parameters
      +
    • [in] _id: View id.

    • +
    +

    -
    -void bgfx::setPaletteColor(uint8_t _index, uint32_t _rgba)
    +
    +void bgfx::setPaletteColor(uint8_t _index, uint32_t _rgba)

    Set palette color value.

    Attention

    C99 equivalent is bgfx_set_palette_color.

    -
    -

    -
    -
    Parameters
    -
      -
    • _index[in] Index into palette.

    • -
    • _rgba[in] Packed 32-bit RGBA value.

    • +
      Parameters
        +
      • [in] _index: Index into palette.

      • +
      • [in] _rgba: Packed 32-bit RGBA value.

    +

    -
    -void bgfx::setPaletteColor(uint8_t _index, const float _rgba[4])
    +
    +void bgfx::setPaletteColor(uint8_t _index, const float _rgba[4])

    Set palette color value.

    Attention

    C99 equivalent is bgfx_set_palette_color.

    -
    -

    -
    -
    Parameters
    -
      -
    • _index[in] Index into palette.

    • -
    • _rgba[in] RGBA floating point value.

    • +
      Parameters
        +
      • [in] _index: Index into palette.

      • +
      • [in] _rgba: RGBA floating point value.

    +

    -
    -void bgfx::setPaletteColor(uint8_t _index, float _r, float _g, float _b, float _a)
    +
    +void bgfx::setPaletteColor(uint8_t _index, float _r, float _g, float _b, float _a)

    Set palette color value.

    Attention

    C99 equivalent is bgfx_set_palette_color.

    -
    -

    -
    -
    Parameters
    -
      -
    • _index[in] Index into palette.

    • -
    • _r, _g, _b, _a[in] RGBA floating point values.

    • +
      Parameters
        +
      • [in] _index: Index into palette.

      • +
      • [in] _r[in] _g[in] _b[in] _a: RGBA floating point values.

    +

    -
    -void bgfx::requestScreenShot(FrameBufferHandle _handle, const char *_filePath)
    +
    +void bgfx::requestScreenShot(FrameBufferHandle _handle, const char *_filePath)

    Request screen shot of window back buffer.

    Remark

    bgfx::CallbackI::screenShot must be implemented.

    @@ -2583,21 +2473,18 @@ creating windows.

    Attention

    C99 equivalent is bgfx_request_screen_shot.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Frame buffer handle. If handle is BGFX_INVALID_HANDLE request will be made for main window back buffer.

    • -
    • _filePath[in] Will be passed to bgfx::CallbackI::screenShot callback.

    • +
      Parameters
        +
      • [in] _handle: Frame buffer handle. If handle is BGFX_INVALID_HANDLE request will be made for main window back buffer.

      • +
      • [in] _filePath: Will be passed to bgfx::CallbackI::screenShot callback.

    +

    - - -
    +
    + +

    Views

    View is primary sorting mechanism in bgfx. View represent bucket of draw and compute calls. Compute and draw calls inside bucket are sorted in the way that all compute calls are executed before draw @@ -2611,11 +2498,11 @@ known until the last moment, view ids can be remaped to arbitrary order by calli bgfx::setViewOrder.

    View state is preserved between multiple frames.

    -
    -void bgfx::setViewName(ViewId _id, const char *_name)
    +
    +void bgfx::setViewName(ViewId _id, const char *_name)

    Set view name.

    -

    -In graphics debugger view name will appear as:

    "nnnce <view name>"
    +

    In graphics debugger view name will appear as:

    +
    "nnnce <view name>"
      ^  ^^ ^
      |  |+-- eye (L/R)
      |  +--- compute (C)
    @@ -2625,6 +2512,11 @@ In graphics debugger view name will appear as: 
    Remark

    This is debug only feature.

    +
    Parameters
      +
    • [in] _id: View id.

    • +
    • [in] _name: View name.

    • +
    +

    @@ -2632,135 +2524,112 @@ In graphics debugger view name will appear as:
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _name[in] View name.

    • -
    -
    -
    -
    -void bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
    +
    +void bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)

    Set view rectangle. Draw primitive outside view will be clipped.

    Attention

    C99 equivalent is bgfx_set_view_rect.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _x[in] Position x from the left corner of the window.

    • -
    • _y[in] Position y from the top corner of the window.

    • -
    • _width[in] Width of view port region.

    • -
    • _height[in] Height of view port region.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _x: Position x from the left corner of the window.

      • +
      • [in] _y: Position y from the top corner of the window.

      • +
      • [in] _width: Width of view port region.

      • +
      • [in] _height: Height of view port region.

    +

    -
    -void bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, BackbufferRatio::Enum _ratio)
    +
    +void bgfx::setViewRect(ViewId _id, uint16_t _x, uint16_t _y, BackbufferRatio::Enum _ratio)

    Set view rectangle. Draw primitive outside view will be clipped.

    Attention

    C99 equivalent is bgfx_set_view_rect_ratio.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _x[in] Position x from the left corner of the window.

    • -
    • _y[in] Position y from the top corner of the window.

    • -
    • _ratio[in] Width and height will be set in respect to back-buffer size. See: BackbufferRatio::Enum.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _x: Position x from the left corner of the window.

      • +
      • [in] _y: Position y from the top corner of the window.

      • +
      • [in] _ratio: Width and height will be set in respect to back-buffer size. See: BackbufferRatio::Enum.

    +

    -
    -void bgfx::setViewScissor(ViewId _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0)
    +
    +void bgfx::setViewScissor(ViewId _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0)

    Set view scissor. Draw primitive outside view will be clipped. When _x, _y, _width and _height are set to 0, scissor will be disabled.

    Attention

    C99 equivalent is bgfx_set_view_scissor.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _x[in] Position x from the left corner of the window.

    • -
    • _y[in] Position y from the top corner of the window.

    • -
    • _width[in] Width of scissor region.

    • -
    • _height[in] Height of scissor region.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _x: Position x from the left corner of the window.

      • +
      • [in] _y: Position y from the top corner of the window.

      • +
      • [in] _width: Width of scissor region.

      • +
      • [in] _height: Height of scissor region.

    +

    -
    -void bgfx::setViewClear(ViewId _id, uint16_t _flags, uint32_t _rgba = 0x000000ff, float _depth = 1.0f, uint8_t _stencil = 0)
    +
    +void bgfx::setViewClear(ViewId _id, uint16_t _flags, uint32_t _rgba = 0x000000ff, float _depth = 1.0f, uint8_t _stencil = 0)

    Set view clear flags.

    Attention

    C99 equivalent is bgfx_set_view_clear.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _flags[in] Clear flags. Use BGFX_CLEAR_NONE to remove any clear operation. See: BGFX_CLEAR_*.

    • -
    • _rgba[in] Color clear value.

    • -
    • _depth[in] Depth clear value.

    • -
    • _stencil[in] Stencil clear value.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _flags: Clear flags. Use BGFX_CLEAR_NONE to remove any clear operation. See: BGFX_CLEAR_*.

      • +
      • [in] _rgba: Color clear value.

      • +
      • [in] _depth: Depth clear value.

      • +
      • [in] _stencil: Stencil clear value.

    +

    -
    -void 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)
    +
    +void 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)

    Set view clear flags with different clear color for each frame buffer texture. Must use bgfx::setPaletteColor to setup clear color palette.

    Attention

    C99 equivalent is bgfx_set_view_clear_mrt.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _flags[in] Clear flags. Use BGFX_CLEAR_NONE to remove any clear operation. See: BGFX_CLEAR_*.

    • -
    • _depth[in] Depth clear value.

    • -
    • _stencil[in] Stencil clear value.

    • -
    • _0[in] Palette index for frame buffer attachment 0.

    • -
    • _1[in] Palette index for frame buffer attachment 1.

    • -
    • _2[in] Palette index for frame buffer attachment 2.

    • -
    • _3[in] Palette index for frame buffer attachment 3.

    • -
    • _4[in] Palette index for frame buffer attachment 4.

    • -
    • _5[in] Palette index for frame buffer attachment 5.

    • -
    • _6[in] Palette index for frame buffer attachment 6.

    • -
    • _7[in] Palette index for frame buffer attachment 7.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _flags: Clear flags. Use BGFX_CLEAR_NONE to remove any clear operation. See: BGFX_CLEAR_*.

      • +
      • [in] _depth: Depth clear value.

      • +
      • [in] _stencil: Stencil clear value.

      • +
      • [in] _0: Palette index for frame buffer attachment 0.

      • +
      • [in] _1: Palette index for frame buffer attachment 1.

      • +
      • [in] _2: Palette index for frame buffer attachment 2.

      • +
      • [in] _3: Palette index for frame buffer attachment 3.

      • +
      • [in] _4: Palette index for frame buffer attachment 4.

      • +
      • [in] _5: Palette index for frame buffer attachment 5.

      • +
      • [in] _6: Palette index for frame buffer attachment 6.

      • +
      • [in] _7: Palette index for frame buffer attachment 7.

    +

    -
    -struct bgfx::ViewMode
    +
    +struct bgfx::ViewMode

    View mode sets draw call sort order.

    Attention

    C99 equivalent is bgfx_view_mode_t.

    @@ -2768,39 +2637,39 @@ In graphics debugger view name will appear as:
    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    View modes:

    Values:

    -
    -enumerator Default
    +
    +enumerator Default

    Default sort order.

    -
    -enumerator Sequential
    +
    +enumerator Sequential

    Sort in the same order in which submit calls were called.

    -
    -enumerator DepthAscending
    +
    +enumerator DepthAscending

    Sort draw call depth in ascending order.

    -
    -enumerator DepthDescending
    +
    +enumerator DepthDescending

    Sort draw call depth in descending order.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -2809,129 +2678,118 @@ In graphics debugger view name will appear as:
    -
    -void bgfx::setViewMode(ViewId _id, ViewMode::Enum _mode = ViewMode::Default)
    +
    +void bgfx::setViewMode(ViewId _id, ViewMode::Enum _mode = ViewMode::Default)

    Set view sorting mode.

    Remark

    View mode must be set prior calling bgfx::submit for the view.

    Attention

    C99 equivalent is bgfx_set_view_mode.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _mode[in] View sort mode. See ViewMode::Enum.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _mode: View sort mode. See ViewMode::Enum.

    +

    -
    -void bgfx::setViewFrameBuffer(ViewId _id, FrameBufferHandle _handle)
    +
    +void bgfx::setViewFrameBuffer(ViewId _id, FrameBufferHandle _handle)

    Set view frame buffer.

    Remark

    Not persistent after bgfx::reset call.

    Attention

    C99 equivalent is bgfx_set_view_frame_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _handle[in] Frame buffer handle. Passing BGFX_INVALID_HANDLE as frame buffer handle will draw primitives from this view into default back buffer.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _handle: Frame buffer handle. Passing BGFX_INVALID_HANDLE as frame buffer handle will draw primitives from this view into default back buffer.

    +

    -
    -void bgfx::setViewTransform(ViewId _id, const void *_view, const void *_proj)
    +
    +void bgfx::setViewTransform(ViewId _id, const void *_view, const void *_proj)

    Set view view and projection matrices, all draw primitives in this view will use these matrices.

    Attention

    C99 equivalent is bgfx_set_view_transform.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _view[in] View matrix.

    • -
    • _proj[in] Projection matrix.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _view: View matrix.

      • +
      • [in] _proj: Projection matrix.

    +

    -
    -void bgfx::setViewOrder(ViewId _id = 0, uint16_t _num = UINT16_MAX, const ViewId *_remap = NULL)
    +
    +void bgfx::setViewOrder(ViewId _id = 0, uint16_t _num = UINT16_MAX, const ViewId *_remap = NULL)

    Post submit view reordering.

    Attention

    C99 equivalent is bgfx_set_view_order.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] First view id.

    • -
    • _num[in] Number of views to remap.

    • -
    • _remap[in] View remap id table. Passing NULL will reset view ids to default state.

    • +
      Parameters
        +
      • [in] _id: First view id.

      • +
      • [in] _num: Number of views to remap.

      • +
      • [in] _remap: View remap id table. Passing NULL will reset view ids to default state.

    +

    -
    -void bgfx::resetView(ViewId _id)
    +
    +void bgfx::resetView(ViewId _id)

    Reset all view settings to default.

    Attention

    C99 equivalent is bgfx_reset_view.

    -
    -

    -
    -
    Parameters
    -

    _id[in] View id.

    +
    Parameters
      +
    • [in] _id: View id.

    • +
    +

    - -
    +
    +

    Encoder

    -
    +

    Encoder

    API for multi-threaded submission.

    -
    -Encoder *bgfx::begin(bool _forThread = false)
    +
    +Encoder *bgfx::begin(bool _forThread = false)

    Begin submitting draw calls from thread.

    -
    -
    Parameters
    -

    _forThread[in] Explicitly request an encoder for a worker thread.

    +

    +
    Parameters
      +
    • [in] _forThread: Explicitly request an encoder for a worker thread.

    • +
    +

    -
    -void bgfx::end(Encoder *_encoder)
    +
    +void bgfx::end(Encoder *_encoder)

    End submitting draw calls from thread.

    -
    -struct bgfx::Encoder
    +
    +struct bgfx::Encoder

    Encoders are used for submitting draw calls from multiple threads. Only one encoder per thread should be used. Use bgfx::begin() to obtain an encoder for a thread.

    Attention

    C99 equivalent is bgfx_encoder.

    @@ -2939,10 +2797,10 @@ In graphics debugger view name will appear as:
    -

    Public Functions

    +

    Public Functions

    -
    -void setMarker(const char *_marker)
    +
    +void setMarker(const char *_marker)

    Sets a debug marker. This allows you to group graphics calls together for easy browsing in graphics debugging tools.

    Attention

    C99 equivalent is bgfx_encoder_set_marker.

    @@ -2952,8 +2810,8 @@ In graphics debugger view name will appear as:
    -
    -void setState(uint64_t _state, uint32_t _rgba = 0)
    +
    +void setState(uint64_t _state, uint32_t _rgba = 0)

    Set render states for draw primitive.

    Remark

      @@ -2964,12 +2822,8 @@ In graphics debugger view name will appear as:
      bgfx_encoder_set_state.

    -
    -

    -
    -
    Parameters
    -
      -
    • _state[in] State flags. Default state for primitive type is triangles. See: BGFX_STATE_DEFAULT.

        +
        Parameters
          +
        • [in] _state: State flags. Default state for primitive type is triangles. See: BGFX_STATE_DEFAULT.

          • BGFX_STATE_DEPTH_TEST_* - Depth test function.

          • BGFX_STATE_BLEND_* - See remark 1 about BGFX_STATE_BLEND_FUNC.

          • BGFX_STATE_BLEND_EQUATION_* - See remark 2.

          • @@ -2979,534 +2833,464 @@ In graphics debugger view name will appear as:
            BGFX_STATE_PT_[TRISTRIP/LINES/POINTS] - Primitive type.

        • -
        • _rgba[in] Sets blend factor used by BGFX_STATE_BLEND_FACTOR and BGFX_STATE_BLEND_INV_FACTOR blend modes.

        • +
        • [in] _rgba: Sets blend factor used by BGFX_STATE_BLEND_FACTOR and BGFX_STATE_BLEND_INV_FACTOR blend modes.

    +

    -
    -void setCondition(OcclusionQueryHandle _handle, bool _visible)
    +
    +void setCondition(OcclusionQueryHandle _handle, bool _visible)

    Set condition for rendering.

    Attention

    C99 equivalent is bgfx_encoder_set_condition.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Occlusion query handle.

    • -
    • _visible[in] Render if occlusion query is visible.

    • +
      Parameters
        +
      • [in] _handle: Occlusion query handle.

      • +
      • [in] _visible: Render if occlusion query is visible.

    +

    -
    -void setStencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE)
    +
    +void setStencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE)

    Set stencil test state.

    Attention

    C99 equivalent is bgfx_encoder_set_stencil.

    -
    -

    -
    -
    Parameters
    -
      -
    • _fstencil[in] Front stencil state.

    • -
    • _bstencil[in] Back stencil state. If back is set to BGFX_STENCIL_NONE _fstencil is applied to both front and back facing primitives.

    • +
      Parameters
        +
      • [in] _fstencil: Front stencil state.

      • +
      • [in] _bstencil: Back stencil state. If back is set to BGFX_STENCIL_NONE _fstencil is applied to both front and back facing primitives.

    +

    -
    -uint16_t setScissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
    +
    +uint16_t setScissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)

    Set scissor for draw primitive. To scissor for all primitives in view see bgfx::setViewScissor.

    +
    Return

    Scissor cache index.

    +
    Attention

    C99 equivalent is bgfx_encoder_set_scissor.

    +
    Parameters
      +
    • [in] _x: Position x from the left side of the window.

    • +
    • [in] _y: Position y from the top of the window.

    • +
    • [in] _width: Width of scissor region.

    • +
    • [in] _height: Height of scissor region.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _x[in] Position x from the left side of the window.

    • -
    • _y[in] Position y from the top of the window.

    • -
    • _width[in] Width of scissor region.

    • -
    • _height[in] Height of scissor region.

    • -
    -
    -
    Returns
    -

    Scissor cache index.

    -
    -
    -
    -void setScissor(uint16_t _cache = UINT16_MAX)
    +
    +void setScissor(uint16_t _cache = UINT16_MAX)

    Set scissor from cache for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_scissor_cached.

    -
    -

    -
    -
    Parameters
    -

    _cache[in] Index in scissor cache. Pass UINT16_MAX to have primitive use view scissor instead.

    -
    -
    -
    - -
    -
    -uint32_t setTransform(const void *_mtx, uint16_t _num = 1)
    -

    Set model matrix for draw primitive. If it is not called, model will be rendered with identity model matrix.

    -

    -
    Attention

    C99 equivalent is bgfx_encoder_set_transform.

    -
    -
    -

    -
    -
    Parameters
    -
      -
    • _mtx[in] Pointer to first matrix in array.

    • -
    • _num[in] Number of matrices in array.

    • +
      Parameters
        +
      • [in] _cache: Index in scissor cache. Pass UINT16_MAX to have primitive use view scissor instead.

      -
      Returns
      -

      Index into matrix cache in case the same model matrix has to be used for other draw primitive call.

      -
    +

    -
    -uint32_t allocTransform(Transform *_transform, uint16_t _num)
    +
    +uint32_t setTransform(const void *_mtx, uint16_t _num = 1)
    +

    Set model matrix for draw primitive. If it is not called, model will be rendered with identity model matrix.

    +

    +
    Return

    Index into matrix cache in case the same model matrix has to be used for other draw primitive call.

    +
    +
    Attention

    C99 equivalent is bgfx_encoder_set_transform.

    +
    +
    Parameters
      +
    • [in] _mtx: Pointer to first matrix in array.

    • +
    • [in] _num: Number of matrices in array.

    • +
    +
    +
    +

    +
    + +
    +
    +uint32_t allocTransform(Transform *_transform, uint16_t _num)

    Reserve _num matrices in internal matrix cache.

    +
    Return

    Index into matrix cache.

    +
    Attention

    Pointer returned can be modifed until bgfx::frame is called.

    Attention

    C99 equivalent is bgfx_encoder_alloc_transform.

    -
    -

    -
    -
    Parameters
    -
      -
    • _transform[in] Pointer to Transform structure.

    • -
    • _num[in] Number of matrices.

    • +
      Parameters
        +
      • [in] _transform: Pointer to Transform structure.

      • +
      • [in] _num: Number of matrices.

      -
      Returns
      -

      Index into matrix cache.

      -
    +

    -
    -void setTransform(uint32_t _cache, uint16_t _num = 1)
    +
    +void setTransform(uint32_t _cache, uint16_t _num = 1)

    Set model matrix from matrix cache for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_transform_cached.

    -
    -

    -
    -
    Parameters
    -
      -
    • _cache[in] Index in matrix cache.

    • -
    • _num[in] Number of matrices from cache.

    • +
      Parameters
        +
      • [in] _cache: Index in matrix cache.

      • +
      • [in] _num: Number of matrices from cache.

    +

    -
    -void setUniform(UniformHandle _handle, const void *_value, uint16_t _num = 1)
    +
    +void setUniform(UniformHandle _handle, const void *_value, uint16_t _num = 1)

    Set shader uniform parameter for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_uniform.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Uniform.

    • -
    • _value[in] Pointer to uniform data.

    • -
    • _num[in] Number of elements. Passing UINT16_MAX will use the _num passed on uniform creation.

    • +
      Parameters
        +
      • [in] _handle: Uniform.

      • +
      • [in] _value: Pointer to uniform data.

      • +
      • [in] _num: Number of elements. Passing UINT16_MAX will use the _num passed on uniform creation.

    +

    -
    -void setIndexBuffer(IndexBufferHandle _handle)
    +
    +void setIndexBuffer(IndexBufferHandle _handle)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Index buffer.

    +
    Parameters
      +
    • [in] _handle: Index buffer.

    • +
    +

    -
    -void setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _handle: Index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -void setIndexBuffer(DynamicIndexBufferHandle _handle)
    +
    +void setIndexBuffer(DynamicIndexBufferHandle _handle)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Dynamic index buffer.

    +
    Parameters
      +
    • [in] _handle: Dynamic index buffer.

    • +
    +

    -
    -void setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Dynamic index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _handle: Dynamic index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -void setIndexBuffer(const TransientIndexBuffer *_tib)
    +
    +void setIndexBuffer(const TransientIndexBuffer *_tib)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _tib[in] Transient index buffer.

    +
    Parameters
      +
    • [in] _tib: Transient index buffer.

    • +
    +

    -
    -void setIndexBuffer(const TransientIndexBuffer *_tib, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void setIndexBuffer(const TransientIndexBuffer *_tib, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _tib[in] Transient index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _tib: Transient index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)
    +
    +void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Vertex buffer.

    +

    -
    -void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)
    +
    +void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Dynamic vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Dynamic vertex buffer.

    +

    -
    -void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Dynamic vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Dynamic vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb)
    +
    +void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _tvb[in] Transient vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _tvb: Transient vertex buffer.

    +

    -
    -void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _tvb[in] Transient vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _tvb: Transient vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -void setVertexCount(uint32_t _numVertices)
    +
    +void setVertexCount(uint32_t _numVertices)

    Set number of vertices for auto generated vertices use in conjuction with gl_VertexID.

    Attention

    Availability depends on: BGFX_CAPS_VERTEX_ID.

    Attention

    C99 equivalent is bgfx_encoder_set_vertex_count.

    -
    -

    -
    -
    Parameters
    -

    _numVertices[in] Number of vertices.

    -
    -
    -
    - -
    -
    -void setInstanceDataBuffer(const InstanceDataBuffer *_idb)
    -

    Set instance data buffer for draw primitive.

    -

    -
    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_buffer.

    -
    -
    -

    -
    -
    Parameters
    -

    _idb[in] Transient instance data buffer.

    -
    -
    -
    - -
    -
    -void setInstanceDataBuffer(const InstanceDataBuffer *_idb, uint32_t _start, uint32_t _num)
    -

    Set instance data buffer for draw primitive.

    -

    -
    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_buffer.

    -
    -
    -

    -
    -
    Parameters
    -
      -
    • _idb[in] Transient instance data buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _numVertices: Number of vertices.

    +

    -
    -void setInstanceDataBuffer(VertexBufferHandle _handle, uint32_t _start, uint32_t _num)
    +
    +void setInstanceDataBuffer(const InstanceDataBuffer *_idb)
    +

    Set instance data buffer for draw primitive.

    +

    +
    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_buffer.

    +
    +
    Parameters
      +
    • [in] _idb: Transient instance data buffer.

    • +
    +
    +
    +

    +
    + +
    +
    +void setInstanceDataBuffer(const InstanceDataBuffer *_idb, uint32_t _start, uint32_t _num)
    +

    Set instance data buffer for draw primitive.

    +

    +
    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_buffer.

    +
    +
    Parameters
      +
    • [in] _idb: Transient instance data buffer.

    • +
    • [in] _start: First instance data.

    • +
    • [in] _num: Number of data instances.

    • +
    +
    +
    +

    +
    + +
    +
    +void setInstanceDataBuffer(VertexBufferHandle _handle, uint32_t _start, uint32_t _num)

    Set instance data buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_from_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Vertex buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _start: First instance data.

      • +
      • [in] _num: Number of data instances.

    +

    -
    -void setInstanceDataBuffer(DynamicVertexBufferHandle _handle, uint32_t _start, uint32_t _num)
    +
    +void setInstanceDataBuffer(DynamicVertexBufferHandle _handle, uint32_t _start, uint32_t _num)

    Set instance data buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_instance_data_from_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Vertex buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _start: First instance data.

      • +
      • [in] _num: Number of data instances.

    +

    -
    -void setInstanceCount(uint32_t _numInstances)
    +
    +void setInstanceCount(uint32_t _numInstances)

    Set number of instances for auto generated instances use in conjuction with gl_InstanceID.

    Attention

    Availability depends on: BGFX_CAPS_VERTEX_ID.

    Attention

    C99 equivalent is bgfx_encoder_set_instance_count.

    -
    -

    -
    -
    Parameters
    -

    _numInstances[in] Number of instances.

    +
    Parameters
      +
    • [in] _numInstances: Number of instances.

    • +
    +

    -
    -void setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle, uint32_t _flags = UINT32_MAX)
    +
    +void setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle, uint32_t _flags = UINT32_MAX)

    Set texture stage for draw primitive.

    Attention

    C99 equivalent is bgfx_encoder_set_texture.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Texture unit.

    • -
    • _sampler[in] Program sampler.

    • -
    • _handle[in] Texture handle.

    • -
    • _flags[in] Texture sampling mode. Default value UINT32_MAX uses texture sampling settings from the texture.

        +
        Parameters
          +
        • [in] _stage: Texture unit.

        • +
        • [in] _sampler: Program sampler.

        • +
        • [in] _handle: Texture handle.

        • +
        • [in] _flags: Texture sampling mode. Default value UINT32_MAX uses texture sampling settings from the texture.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

          @@ -3514,279 +3298,245 @@ In graphics debugger view name will appear as:
          -
          -void touch(ViewId _id)
          +
          +void touch(ViewId _id)

          Submit an empty primitive for rendering. Uniforms and draw state will be applied but no geometry will be submitted. Useful in cases when no other draw/compute primitive is submitted to view, but it’s desired to execute clear view.

          These empty draw calls will sort before ordinary draw calls.

          Attention

          C99 equivalent is bgfx_encoder_touch.

          -
          -

          -
          -
          Parameters
          -

          _id[in] View id.

          +
          Parameters
            +
          • [in] _id: View id.

          • +
          +

    -
    -void submit(ViewId _id, ProgramHandle _program, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void submit(ViewId _id, ProgramHandle _program, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)

    Submit primitive for rendering.

    Attention

    C99 equivalent is bgfx_encoder_submit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void submit(ViewId _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void submit(ViewId _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)

    Submit primitive with occlusion query for rendering.

    Attention

    C99 equivalent is bgfx_encoder_submit_occlusion_query.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _occlusionQuery[in] Occlusion query.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _occlusionQuery: Occlusion query.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void 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)
    +
    +void 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)

    Submit primitive for rendering with index and instance data info from indirect buffer.

    Attention

    C99 equivalent is bgfx_encoder_submit_indirect.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _indirectHandle[in] Indirect buffer.

    • -
    • _start[in] First element in indirect buffer.

    • -
    • _num[in] Number of dispatches.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _indirectHandle: Indirect buffer.

      • +
      • [in] _start: First element in indirect buffer.

      • +
      • [in] _num: Number of dispatches.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void setBuffer(uint8_t _stage, IndexBufferHandle _handle, Access::Enum _access)
    +
    +void setBuffer(uint8_t _stage, IndexBufferHandle _handle, Access::Enum _access)

    Set compute index buffer.

    Attention

    C99 equivalent is bgfx_encoder_set_compute_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Index buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Index buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void setBuffer(uint8_t _stage, VertexBufferHandle _handle, Access::Enum _access)
    +
    +void setBuffer(uint8_t _stage, VertexBufferHandle _handle, Access::Enum _access)

    Set compute vertex buffer.

    Attention

    C99 equivalent is bgfx_encoder_set_compute_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Vertex buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Vertex buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void setBuffer(uint8_t _stage, DynamicIndexBufferHandle _handle, Access::Enum _access)
    +
    +void setBuffer(uint8_t _stage, DynamicIndexBufferHandle _handle, Access::Enum _access)

    Set compute dynamic index buffer.

    Attention

    C99 equivalent is bgfx_encoder_set_compute_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Dynamic index buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Dynamic index buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void setBuffer(uint8_t _stage, DynamicVertexBufferHandle _handle, Access::Enum _access)
    +
    +void setBuffer(uint8_t _stage, DynamicVertexBufferHandle _handle, Access::Enum _access)

    Set compute dynamic vertex buffer.

    Attention

    C99 equivalent is bgfx_encoder_set_compute_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Dynamic vertex buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Dynamic vertex buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void setBuffer(uint8_t _stage, IndirectBufferHandle _handle, Access::Enum _access)
    +
    +void setBuffer(uint8_t _stage, IndirectBufferHandle _handle, Access::Enum _access)

    Set compute indirect buffer.

    Attention

    C99 equivalent is bgfx_encoder_set_compute_indirect_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Indirect buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Indirect buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void setImage(uint8_t _stage, TextureHandle _handle, uint8_t _mip, Access::Enum _access, TextureFormat::Enum _format = TextureFormat::Count)
    +
    +void setImage(uint8_t _stage, TextureHandle _handle, uint8_t _mip, Access::Enum _access, TextureFormat::Enum _format = TextureFormat::Count)

    Set compute image from texture.

    Attention

    C99 equivalent is bgfx_encoder_set_image.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Texture unit.

    • -
    • _handle[in] Texture handle.

    • -
    • _mip[in] Mip level.

    • -
    • _access[in] Texture access. See Access::Enum.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • +
      Parameters
        +
      • [in] _stage: Texture unit.

      • +
      • [in] _handle: Texture handle.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _access: Texture access. See Access::Enum.

      • +
      • [in] _format: Texture format. See: TextureFormat::Enum.

    +

    -
    -void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1, uint8_t _flags = BGFX_DISCARD_ALL)

    Dispatch compute.

    Attention

    C99 equivalent is bgfx_encoder_dispatch.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _handle[in] Compute program.

    • -
    • _numX[in] Number of groups X.

    • -
    • _numY[in] Number of groups Y.

    • -
    • _numZ[in] Number of groups Z.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _handle: Compute program.

      • +
      • [in] _numX: Number of groups X.

      • +
      • [in] _numY: Number of groups Y.

      • +
      • [in] _numZ: Number of groups Z.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint8_t _flags = BGFX_DISCARD_ALL)

    Dispatch compute indirect.

    Attention

    C99 equivalent is bgfx_encoder_dispatch_indirect.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _handle[in] Compute program.

    • -
    • _indirectHandle[in] Indirect buffer.

    • -
    • _start[in] First element in indirect buffer.

    • -
    • _num[in] Number of dispatches.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _handle: Compute program.

      • +
      • [in] _indirectHandle: Indirect buffer.

      • +
      • [in] _start: First element in indirect buffer.

      • +
      • [in] _num: Number of dispatches.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void discard(uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void discard(uint8_t _flags = BGFX_DISCARD_ALL)

    Discard all previously set state for draw or compute call.

    Attention

    C99 equivalent is bgfx_encoder_discard.

    -
    -

    -
    -
    Parameters
    -

    _flags[in] Draw/compute states to discard.

    +
    Parameters
      +
    • [in] _flags: Draw/compute states to discard.

    • +
    +

    -
    -void 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)
    +
    +void 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)

    Blit texture 2D region between two 2D textures.

    Attention

    Destination texture must be created with BGFX_TEXTURE_BLIT_DST flag.

    @@ -3795,28 +3545,25 @@ In graphics debugger view name will appear as:
    bgfx_encoder_blit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _dst[in] Destination texture handle.

    • -
    • _dstX[in] Destination texture X position.

    • -
    • _dstY[in] Destination texture Y position.

    • -
    • _src[in] Source texture handle.

    • -
    • _srcX[in] Source texture X position.

    • -
    • _srcY[in] Source texture Y position.

    • -
    • _width[in] Width of region.

    • -
    • _height[in] Height of region.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _dst: Destination texture handle.

      • +
      • [in] _dstX: Destination texture X position.

      • +
      • [in] _dstY: Destination texture Y position.

      • +
      • [in] _src: Source texture handle.

      • +
      • [in] _srcX: Source texture X position.

      • +
      • [in] _srcY: Source texture Y position.

      • +
      • [in] _width: Width of region.

      • +
      • [in] _height: Height of region.

    +

    -
    -void 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)
    +
    +void 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)

    Blit texture region between two textures.

    Attention

    Destination texture must be created with BGFX_TEXTURE_BLIT_DST flag.

    @@ -3825,46 +3572,43 @@ In graphics debugger view name will appear as:
    bgfx_encoder_blit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _dst[in] Destination texture handle.

    • -
    • _dstMip[in] Destination texture mip level.

    • -
    • _dstX[in] Destination texture X position.

    • -
    • _dstY[in] Destination texture Y position.

    • -
    • _dstZ[in] If texture is 2D this argument should be 0. If destination texture is cube this argument represents destination texture cube face. For 3D texture this argument represents destination texture Z position.

    • -
    • _src[in] Source texture handle.

    • -
    • _srcMip[in] Source texture mip level.

    • -
    • _srcX[in] Source texture X position.

    • -
    • _srcY[in] Source texture Y position.

    • -
    • _srcZ[in] If texture is 2D this argument should be 0. If source texture is cube this argument represents source texture cube face. For 3D texture this argument represents source texture Z position.

    • -
    • _width[in] Width of region.

    • -
    • _height[in] Height of region.

    • -
    • _depth[in] If texture is 3D this argument represents depth of region, otherwise it’s unused.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _dst: Destination texture handle.

      • +
      • [in] _dstMip: Destination texture mip level.

      • +
      • [in] _dstX: Destination texture X position.

      • +
      • [in] _dstY: Destination texture Y position.

      • +
      • [in] _dstZ: If texture is 2D this argument should be 0. If destination texture is cube this argument represents destination texture cube face. For 3D texture this argument represents destination texture Z position.

      • +
      • [in] _src: Source texture handle.

      • +
      • [in] _srcMip: Source texture mip level.

      • +
      • [in] _srcX: Source texture X position.

      • +
      • [in] _srcY: Source texture Y position.

      • +
      • [in] _srcZ: If texture is 2D this argument should be 0. If source texture is cube this argument represents source texture cube face. For 3D texture this argument represents source texture Z position.

      • +
      • [in] _width: Width of region.

      • +
      • [in] _height: Height of region.

      • +
      • [in] _depth: If texture is 3D this argument represents depth of region, otherwise it’s unused.

    +

    -
    -
    +
    +

    Draw

    Draw state is not preserved between two draw calls. All state is cleared after calling bgfx::submit.

    -
    +

    State

    -
    -
    +
    +

    Debug

    -
    -void bgfx::setMarker(const char *_marker)
    +
    +void bgfx::setMarker(const char *_marker)

    Sets debug marker.

    Attention

    C99 equivalent is bgfx_set_marker.

    @@ -3874,51 +3618,45 @@ In graphics debugger view name will appear as:
    -
    -void bgfx::setName(ShaderHandle _handle, const char *_name, int32_t _len = INT32_MAX)
    +
    +void bgfx::setName(ShaderHandle _handle, const char *_name, int32_t _len = INT32_MAX)

    Set shader debug name.

    Attention

    C99 equivalent is bgfx_set_shader_name.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Shader handle.

    • -
    • _name[in] Shader name.

    • -
    • _len[in] Shader name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    • +
      Parameters
        +
      • [in] _handle: Shader handle.

      • +
      • [in] _name: Shader name.

      • +
      • [in] _len: Shader name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    +

    -
    -void bgfx::setName(TextureHandle _handle, const char *_name, int32_t _len = INT32_MAX)
    +
    +void bgfx::setName(TextureHandle _handle, const char *_name, int32_t _len = INT32_MAX)

    Set texture debug name.

    Attention

    C99 equivalent is bgfx_set_texture_name.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _name[in] Texture name.

    • -
    • _len[in] Texture name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    • +
      Parameters
        +
      • [in] _handle: Texture handle.

      • +
      • [in] _name: Texture name.

      • +
      • [in] _len: Texture name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    +

    - -
    +
    +

    State

    -
    -void bgfx::setState(uint64_t _state, uint32_t _rgba = 0)
    +
    +void bgfx::setState(uint64_t _state, uint32_t _rgba = 0)

    Set render states for draw primitive.

    Remark

      @@ -3929,12 +3667,8 @@ In graphics debugger view name will appear as:
      bgfx_set_state.

    -
    -

    -
    -
    Parameters
    -
      -
    • _state[in] State flags. Default state for primitive type is triangles. See: BGFX_STATE_DEFAULT.

        +
        Parameters
          +
        • [in] _state: State flags. Default state for primitive type is triangles. See: BGFX_STATE_DEFAULT.

          • BGFX_STATE_DEPTH_TEST_* - Depth test function.

          • BGFX_STATE_BLEND_* - See remark 1 about BGFX_STATE_BLEND_FUNC.

          • BGFX_STATE_BLEND_EQUATION_* - See remark 2.

          • @@ -3944,523 +3678,494 @@ In graphics debugger view name will appear as:
            BGFX_STATE_PT_[TRISTRIP/LINES/POINTS] - Primitive type.

        • -
        • _rgba[in] Sets blend factor used by BGFX_STATE_BLEND_FACTOR and BGFX_STATE_BLEND_INV_FACTOR blend modes.

        • +
        • [in] _rgba: Sets blend factor used by BGFX_STATE_BLEND_FACTOR and BGFX_STATE_BLEND_INV_FACTOR blend modes.

    +

    - -
    +
    +

    State Flags

    Write

    -
    -BGFX_STATE_WRITE_R
    +
    +BGFX_STATE_WRITE_R

    Enable R write.

    Color RGB/alpha/depth write. When it’s not specified write will be disabled.

    -
    -BGFX_STATE_WRITE_G
    +
    +BGFX_STATE_WRITE_G

    Enable G write.

    -
    -BGFX_STATE_WRITE_B
    +
    +BGFX_STATE_WRITE_B

    Enable B write.

    -
    -BGFX_STATE_WRITE_RGB
    +
    +BGFX_STATE_WRITE_RGB
    -
    -BGFX_STATE_WRITE_A
    +
    +BGFX_STATE_WRITE_A

    Enable alpha write.

    -
    -BGFX_STATE_WRITE_Z
    +
    +BGFX_STATE_WRITE_Z

    Enable depth write. Enable RGB write.

    Depth Test

    -
    -BGFX_STATE_DEPTH_TEST_LESS
    +
    +BGFX_STATE_DEPTH_TEST_LESS

    Enable depth test, less.

    Depth test state. When BGFX_STATE_DEPTH_ is not specified depth test will be disabled.

    -
    -BGFX_STATE_DEPTH_TEST_LEQUAL
    +
    +BGFX_STATE_DEPTH_TEST_LEQUAL

    Enable depth test, less or equal.

    -
    -BGFX_STATE_DEPTH_TEST_EQUAL
    +
    +BGFX_STATE_DEPTH_TEST_EQUAL

    Enable depth test, equal.

    -
    -BGFX_STATE_DEPTH_TEST_GEQUAL
    +
    +BGFX_STATE_DEPTH_TEST_GEQUAL

    Enable depth test, greater or equal.

    -
    -BGFX_STATE_DEPTH_TEST_GREATER
    +
    +BGFX_STATE_DEPTH_TEST_GREATER

    Enable depth test, greater.

    -
    -BGFX_STATE_DEPTH_TEST_NOTEQUAL
    +
    +BGFX_STATE_DEPTH_TEST_NOTEQUAL

    Enable depth test, not equal.

    -
    -BGFX_STATE_DEPTH_TEST_NEVER
    +
    +BGFX_STATE_DEPTH_TEST_NEVER

    Enable depth test, never.

    -
    -BGFX_STATE_DEPTH_TEST_ALWAYS
    +
    +BGFX_STATE_DEPTH_TEST_ALWAYS

    Enable depth test, always.

    Blend Mode

    -
    -BGFX_STATE_BLEND_ZERO
    +
    +BGFX_STATE_BLEND_ZERO

    0, 0, 0, 0

    Use BGFX_STATE_BLEND_FUNC(_src, _dst) or BGFX_STATE_BLEND_FUNC_SEPARATE(_srcRGB, _dstRGB, _srcA, _dstA) helper macros.

    -
    -BGFX_STATE_BLEND_ONE
    +
    +BGFX_STATE_BLEND_ONE

    1, 1, 1, 1

    -
    -BGFX_STATE_BLEND_SRC_COLOR
    +
    +BGFX_STATE_BLEND_SRC_COLOR

    Rs, Gs, Bs, As.

    -
    -BGFX_STATE_BLEND_INV_SRC_COLOR
    +
    +BGFX_STATE_BLEND_INV_SRC_COLOR

    1-Rs, 1-Gs, 1-Bs, 1-As

    -
    -BGFX_STATE_BLEND_SRC_ALPHA
    +
    +BGFX_STATE_BLEND_SRC_ALPHA

    As, As, As, As.

    -
    -BGFX_STATE_BLEND_INV_SRC_ALPHA
    +
    +BGFX_STATE_BLEND_INV_SRC_ALPHA

    1-As, 1-As, 1-As, 1-As

    -
    -BGFX_STATE_BLEND_DST_ALPHA
    +
    +BGFX_STATE_BLEND_DST_ALPHA

    Ad, Ad, Ad, Ad.

    -
    -BGFX_STATE_BLEND_INV_DST_ALPHA
    +
    +BGFX_STATE_BLEND_INV_DST_ALPHA

    1-Ad, 1-Ad, 1-Ad ,1-Ad

    -
    -BGFX_STATE_BLEND_DST_COLOR
    +
    +BGFX_STATE_BLEND_DST_COLOR

    Rd, Gd, Bd, Ad.

    -
    -BGFX_STATE_BLEND_INV_DST_COLOR
    +
    +BGFX_STATE_BLEND_INV_DST_COLOR

    1-Rd, 1-Gd, 1-Bd, 1-Ad

    -
    -BGFX_STATE_BLEND_SRC_ALPHA_SAT
    +
    +BGFX_STATE_BLEND_SRC_ALPHA_SAT

    f, f, f, 1; f = min(As, 1-Ad)

    -
    -BGFX_STATE_BLEND_FACTOR
    +
    +BGFX_STATE_BLEND_FACTOR

    Blend factor.

    -
    -BGFX_STATE_BLEND_INV_FACTOR
    +
    +BGFX_STATE_BLEND_INV_FACTOR

    1-Blend factor

    Blend Equaation

    -
    -BGFX_STATE_BLEND_EQUATION_ADD
    +
    +BGFX_STATE_BLEND_EQUATION_ADD

    Blend add: src + dst.

    Use BGFX_STATE_BLEND_EQUATION(_equation) or BGFX_STATE_BLEND_EQUATION_SEPARATE(_equationRGB, _equationA) helper macros.

    -
    -BGFX_STATE_BLEND_EQUATION_SUB
    +
    +BGFX_STATE_BLEND_EQUATION_SUB

    Blend subtract: src - dst.

    -
    -BGFX_STATE_BLEND_EQUATION_REVSUB
    +
    +BGFX_STATE_BLEND_EQUATION_REVSUB

    Blend reverse subtract: dst - src.

    -
    -BGFX_STATE_BLEND_EQUATION_MIN
    +
    +BGFX_STATE_BLEND_EQUATION_MIN

    Blend min: min(src, dst).

    -
    -BGFX_STATE_BLEND_EQUATION_MAX
    +
    +BGFX_STATE_BLEND_EQUATION_MAX

    Blend max: max(src, dst).

    Primitive Culling

    -
    -BGFX_STATE_CULL_CW
    +
    +BGFX_STATE_CULL_CW

    Cull clockwise triangles.

    Cull state. When BGFX_STATE_CULL_* is not specified culling will be disabled.

    -
    -BGFX_STATE_CULL_CCW
    +
    +BGFX_STATE_CULL_CCW

    Cull counter-clockwise triangles.

    Primitive Type

    -
    -BGFX_STATE_PT_TRISTRIP
    +
    +BGFX_STATE_PT_TRISTRIP

    Tristrip.

    -
    -BGFX_STATE_PT_LINES
    +
    +BGFX_STATE_PT_LINES

    Lines.

    -
    -BGFX_STATE_PT_LINESTRIP
    +
    +BGFX_STATE_PT_LINESTRIP

    Line strip.

    -
    -BGFX_STATE_PT_POINTS
    +
    +BGFX_STATE_PT_POINTS

    Points.

    Misc

    -
    -BGFX_STATE_BLEND_INDEPENDENT
    +
    +BGFX_STATE_BLEND_INDEPENDENT

    Enable blend independent.

    -
    -BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
    +
    +BGFX_STATE_BLEND_ALPHA_TO_COVERAGE

    Enable alpha to coverage. Default state is write to RGB, alpha, and depth with depth test less enabled, with clockwise culling and MSAA (when writing into MSAA frame buffer, otherwise this flag is ignored).

    -
    -BGFX_STATE_MSAA
    +
    +BGFX_STATE_MSAA

    Enable MSAA rasterization.

    Enable MSAA write when writing into MSAA frame buffer. This flag is ignored when not writing into MSAA frame buffer.

    -
    -BGFX_STATE_LINEAA
    +
    +BGFX_STATE_LINEAA

    Enable line AA rasterization.

    - -
    +
    +

    Stencil

    -
    -void bgfx::setStencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE)
    +
    +void bgfx::setStencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE)

    Set stencil test state.

    Attention

    C99 equivalent is bgfx_set_stencil.

    -
    -

    -
    -
    Parameters
    -
      -
    • _fstencil[in] Front stencil state.

    • -
    • _bstencil[in] Back stencil state. If back is set to BGFX_STENCIL_NONE _fstencil is applied to both front and back facing primitives.

    • +
      Parameters
        +
      • [in] _fstencil: Front stencil state.

      • +
      • [in] _bstencil: Back stencil state. If back is set to BGFX_STENCIL_NONE _fstencil is applied to both front and back facing primitives.

    +

    - -
    +
    +

    Stencil Flags

    -
    -BGFX_STENCIL_TEST_LESS
    +
    +BGFX_STENCIL_TEST_LESS

    Enable stencil test, less.

    - -
    +
    +

    Scissor

    When scissor rectangle is changing per draw call inside the same view use bgfx::setScissor, otherwise prefer bgfx::setViewScissor.

    -
    -uint16_t bgfx::setScissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
    +
    +uint16_t bgfx::setScissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)

    Set scissor for draw primitive. For scissor for all primitives in view see bgfx::setViewScissor.

    +
    Return

    Scissor cache index.

    +
    Attention

    C99 equivalent is bgfx_set_scissor.

    +
    Parameters
      +
    • [in] _x: Position x from the left corner of the window.

    • +
    • [in] _y: Position y from the top corner of the window.

    • +
    • [in] _width: Width of scissor region.

    • +
    • [in] _height: Height of scissor region.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _x[in] Position x from the left corner of the window.

    • -
    • _y[in] Position y from the top corner of the window.

    • -
    • _width[in] Width of scissor region.

    • -
    • _height[in] Height of scissor region.

    • -
    -
    -
    Returns
    -

    Scissor cache index.

    -
    -
    -
    -void bgfx::setScissor(uint16_t _cache = UINT16_MAX)
    +
    +void bgfx::setScissor(uint16_t _cache = UINT16_MAX)

    Set scissor from cache for draw primitive.

    Attention

    C99 equivalent is bgfx_set_scissor_cached.

    -
    -

    -
    -
    Parameters
    -

    _cache[in] Index in scissor cache. Passing UINT16_MAX unset primitive scissor and primitive will use view scissor instead.

    +
    Parameters
      +
    • [in] _cache: Index in scissor cache. Passing UINT16_MAX unset primitive scissor and primitive will use view scissor instead.

    • +
    +

    - -
    +
    +

    Transform

    -
    -uint32_t bgfx::allocTransform(Transform *_transform, uint16_t _num)
    +
    +uint32_t bgfx::allocTransform(Transform *_transform, uint16_t _num)

    Reserve _num matrices in internal matrix cache.

    +
    Return

    index into matrix cache.

    +
    Attention

    Pointer returned can be modifed until bgfx::frame is called.

    Attention

    C99 equivalent is bgfx_alloc_transform.

    -
    -

    -
    -
    Parameters
    -
      -
    • _transform[in] Pointer to Transform structure.

    • -
    • _num[in] Number of matrices.

    • +
      Parameters
        +
      • [in] _transform: Pointer to Transform structure.

      • +
      • [in] _num: Number of matrices.

      -
      Returns
      -

      index into matrix cache.

      -
    +

    -
    -uint32_t bgfx::setTransform(const void *_mtx, uint16_t _num = 1)
    +
    +uint32_t bgfx::setTransform(const void *_mtx, uint16_t _num = 1)

    Set model matrix for draw primitive. If it is not called, the model will be rendered with an identity model matrix.

    +
    Return

    index into matrix cache in case the same model matrix has to be used for other draw primitive call.

    +
    Attention

    C99 equivalent is bgfx_set_transform.

    +
    Parameters
      +
    • [in] _mtx: Pointer to first matrix in array.

    • +
    • [in] _num: Number of matrices in array.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _mtx[in] Pointer to first matrix in array.

    • -
    • _num[in] Number of matrices in array.

    • -
    -
    -
    Returns
    -

    index into matrix cache in case the same model matrix has to be used for other draw primitive call.

    -
    -
    -
    -void bgfx::setTransform(uint32_t _cache, uint16_t _num = 1)
    +
    +void bgfx::setTransform(uint32_t _cache, uint16_t _num = 1)

    Set model matrix from matrix cache for draw primitive.

    Attention

    C99 equivalent is bgfx_set_transform_cached.

    -
    -

    -
    -
    Parameters
    -
      -
    • _cache[in] Index in matrix cache.

    • -
    • _num[in] Number of matrices from cache.

    • +
      Parameters
        +
      • [in] _cache: Index in matrix cache.

      • +
      • [in] _num: Number of matrices from cache.

    +

    - -
    +
    +

    Conditional Rendering

    -
    -void bgfx::setCondition(OcclusionQueryHandle _handle, bool _visible)
    +
    +void bgfx::setCondition(OcclusionQueryHandle _handle, bool _visible)

    Set condition for rendering.

    Attention

    C99 equivalent is bgfx_set_condition.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Occlusion query handle.

    • -
    • _visible[in] Render if occlusion query is visible.

    • +
      Parameters
        +
      • [in] _handle: Occlusion query handle.

      • +
      • [in] _visible: Render if occlusion query is visible.

    +

    - -
    +
    +

    Buffers

    -
    -void bgfx::setIndexBuffer(IndexBufferHandle _handle)
    +
    +void bgfx::setIndexBuffer(IndexBufferHandle _handle)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Index buffer.

    +
    Parameters
      +
    • [in] _handle: Index buffer.

    • +
    +

    -
    -void bgfx::setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void bgfx::setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _handle: Index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -void bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle)
    +
    +void bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Dynamic index buffer.

    +
    Parameters
      +
    • [in] _handle: Dynamic index buffer.

    • +
    +

    -
    -void bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void bgfx::setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Dynamic index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _handle: Dynamic index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -struct bgfx::TransientIndexBuffer
    +
    +struct bgfx::TransientIndexBuffer

    Transient index buffer.

    Attention

    C99 equivalent is bgfx_transient_index_buffer_t.

    @@ -4468,34 +4173,34 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -uint8_t *data
    +
    +uint8_t *data

    Pointer to data.

    -
    -uint32_t size
    +
    +uint32_t size

    Data size.

    -
    -uint32_t startIndex
    +
    +uint32_t startIndex

    First index.

    -
    -IndexBufferHandle handle
    +
    +IndexBufferHandle handle

    Index buffer handle.

    -
    -bool isIndex16
    +
    +bool isIndex16

    Index buffer format is 16-bits if true, otherwise it is 32-bit.

    @@ -4503,126 +4208,110 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::setIndexBuffer(const TransientIndexBuffer *_tib)
    +
    +void bgfx::setIndexBuffer(const TransientIndexBuffer *_tib)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _tib[in] Transient index buffer.

    +
    Parameters
      +
    • [in] _tib: Transient index buffer.

    • +
    +

    -
    -void bgfx::setIndexBuffer(const TransientIndexBuffer *_tib, uint32_t _firstIndex, uint32_t _numIndices)
    +
    +void bgfx::setIndexBuffer(const TransientIndexBuffer *_tib, uint32_t _firstIndex, uint32_t _numIndices)

    Set index buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _tib[in] Transient index buffer.

    • -
    • _firstIndex[in] First index to render.

    • -
    • _numIndices[in] Number of indices to render.

    • +
      Parameters
        +
      • [in] _tib: Transient index buffer.

      • +
      • [in] _firstIndex: First index to render.

      • +
      • [in] _numIndices: Number of indices to render.

    +

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Vertex buffer.

    +

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Dynamic vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Dynamic vertex buffer.

    +

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _handle[in] Dynamic vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _handle: Dynamic vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -struct bgfx::TransientVertexBuffer
    +
    +struct bgfx::TransientVertexBuffer

    Transient vertex buffer.

    Attention

    C99 equivalent is bgfx_transient_vertex_buffer_t.

    @@ -4630,40 +4319,40 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -uint8_t *data
    +
    +uint8_t *data

    Pointer to data.

    -
    -uint32_t size
    +
    +uint32_t size

    Data size.

    -
    -uint32_t startVertex
    +
    +uint32_t startVertex

    First vertex.

    -
    -uint16_t stride
    +
    +uint16_t stride

    Vertex stride.

    -
    -VertexBufferHandle handle
    +
    +VertexBufferHandle handle

    Vertex buffer handle.

    -
    -VertexLayoutHandle layoutHandle
    +
    +VertexLayoutHandle layoutHandle

    Vertex layout handle.

    @@ -4671,67 +4360,60 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _tvb[in] Transient vertex buffer.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _tvb: Transient vertex buffer.

    +

    -
    -void bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)
    +
    +void bgfx::setVertexBuffer(uint8_t _stream, const TransientVertexBuffer *_tvb, uint32_t _startVertex, uint32_t _numVertices, VertexLayoutHandle _layoutHandle = BGFX_INVALID_HANDLE)

    Set vertex buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stream[in] Vertex stream.

    • -
    • _tvb[in] Transient vertex buffer.

    • -
    • _startVertex[in] First vertex to render.

    • -
    • _numVertices[in] Number of vertices to render.

    • -
    • _layoutHandle[in] Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    • +
      Parameters
        +
      • [in] _stream: Vertex stream.

      • +
      • [in] _tvb: Transient vertex buffer.

      • +
      • [in] _startVertex: First vertex to render.

      • +
      • [in] _numVertices: Number of vertices to render.

      • +
      • [in] _layoutHandle: Vertex layout for aliasing vertex buffer. If invalid handle is used, vertex layout used for creation of vertex buffer will be used.

    +

    -
    -void bgfx::setVertexCount(uint32_t _numVertices)
    +
    +void bgfx::setVertexCount(uint32_t _numVertices)

    Set number of vertices for auto generated vertices use in conjuction with gl_VertexID.

    Attention

    Availability depends on: BGFX_CAPS_VERTEX_ID.

    Attention

    C99 equivalent is bgfx_set_vertex_count.

    -
    -

    -
    -
    Parameters
    -

    _numVertices[in] Number of vertices.

    +
    Parameters
      +
    • [in] _numVertices: Number of vertices.

    • +
    +

    -
    -struct bgfx::InstanceDataBuffer
    +
    +struct bgfx::InstanceDataBuffer

    Instance data buffer info.

    Attention

    C99 equivalent is bgfx_instance_data_buffer_t.

    @@ -4739,40 +4421,40 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -uint8_t *data
    +
    +uint8_t *data

    Pointer to data.

    -
    -uint32_t size
    +
    +uint32_t size

    Data size.

    -
    -uint32_t offset
    +
    +uint32_t offset

    Offset in vertex buffer.

    -
    -uint32_t num
    +
    +uint32_t num

    Number of instances.

    -
    -uint16_t stride
    +
    +uint16_t stride

    Vertex buffer stride.

    -
    -VertexBufferHandle handle
    +
    +VertexBufferHandle handle

    Vertex buffer object handle.

    @@ -4780,118 +4462,103 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb)
    +
    +void bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb)

    Set instance data buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_instance_data_buffer.

    -
    -

    -
    -
    Parameters
    -

    _idb[in] Transient instance data buffer.

    -
    -
    -
    - -
    -
    -void bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb, uint32_t _start, uint32_t _num)
    -

    Set instance data buffer for draw primitive.

    -

    -
    Attention

    C99 equivalent is bgfx_set_instance_data_buffer.

    -
    -
    -

    -
    -
    Parameters
    -
      -
    • _idb[in] Transient instance data buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _idb: Transient instance data buffer.

    +

    -
    -void bgfx::setInstanceDataBuffer(VertexBufferHandle _handle, uint32_t _start, uint32_t _num)
    +
    +void bgfx::setInstanceDataBuffer(const InstanceDataBuffer *_idb, uint32_t _start, uint32_t _num)
    +

    Set instance data buffer for draw primitive.

    +

    +
    Attention

    C99 equivalent is bgfx_set_instance_data_buffer.

    +
    +
    Parameters
      +
    • [in] _idb: Transient instance data buffer.

    • +
    • [in] _start: First instance data.

    • +
    • [in] _num: Number of data instances.

    • +
    +
    +
    +

    +
    + +
    +
    +void bgfx::setInstanceDataBuffer(VertexBufferHandle _handle, uint32_t _start, uint32_t _num)

    Set instance data buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_instance_data_from_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Vertex buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _start: First instance data.

      • +
      • [in] _num: Number of data instances.

    +

    -
    -void bgfx::setInstanceDataBuffer(DynamicVertexBufferHandle _handle, uint32_t _start, uint32_t _num)
    +
    +void bgfx::setInstanceDataBuffer(DynamicVertexBufferHandle _handle, uint32_t _start, uint32_t _num)

    Set instance data buffer for draw primitive.

    Attention

    C99 equivalent is bgfx_set_instance_data_from_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Vertex buffer.

    • -
    • _start[in] First instance data.

    • -
    • _num[in] Number of data instances.

    • +
      Parameters
        +
      • [in] _handle: Vertex buffer.

      • +
      • [in] _start: First instance data.

      • +
      • [in] _num: Number of data instances.

    +

    -
    -void bgfx::setInstanceCount(uint32_t _numInstances)
    +
    +void bgfx::setInstanceCount(uint32_t _numInstances)

    Set number of instances for auto generated instances use in conjuction with gl_InstanceID.

    Attention

    Availability depends on: BGFX_CAPS_VERTEX_ID.

    Attention

    C99 equivalent is bgfx_set_instance_count.

    -
    -

    -
    -
    Parameters
    -

    _numInstances[in] Number of instances.

    +
    Parameters
      +
    • [in] _numInstances: Number of instances.

    • +
    +

    - -
    +
    +

    Textures

    -
    -void bgfx::setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle, uint32_t _flags = UINT32_MAX)
    +
    +void bgfx::setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle, uint32_t _flags = UINT32_MAX)

    Set texture stage for draw primitive.

    Attention

    C99 equivalent is bgfx_set_texture.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Texture unit.

    • -
    • _sampler[in] Program sampler.

    • -
    • _handle[in] Texture handle.

    • -
    • _flags[in] Texture sampling mode. Default value UINT32_MAX uses texture sampling settings from the texture.

        +
        Parameters
          +
        • [in] _stage: Texture unit.

        • +
        • [in] _sampler: Program sampler.

        • +
        • [in] _handle: Texture handle.

        • +
        • [in] _flags: Texture sampling mode. Default value UINT32_MAX uses texture sampling settings from the texture.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

          @@ -4899,90 +4566,82 @@ otherwise prefer bgfx::setViewScissor.

    +

    - -
    +
    +

    Submit

    Within view all draw commands are executed after blit and compute commands.

    -
    -void bgfx::submit(ViewId _id, ProgramHandle _program, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void bgfx::submit(ViewId _id, ProgramHandle _program, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)

    Submit primitive for rendering.

    Attention

    C99 equivalent is bgfx_submit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void bgfx::submit(ViewId _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void bgfx::submit(ViewId _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, uint32_t _depth = 0, uint8_t _flags = BGFX_DISCARD_ALL)

    Submit primitive with occlusion query for rendering.

    Attention

    C99 equivalent is bgfx_submit_occlusion_query.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _occlusionQuery[in] Occlusion query.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _occlusionQuery: Occlusion query.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void 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)
    +
    +void 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)

    Submit primitive for rendering with index and instance data info from indirect buffer.

    Attention

    C99 equivalent is bgfx_submit_indirect.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _program[in] Program.

    • -
    • _indirectHandle[in] Indirect buffer.

    • -
    • _start[in] First element in indirect buffer.

    • -
    • _num[in] Number of dispatches.

    • -
    • _depth[in] Depth for sorting.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _program: Program.

      • +
      • [in] _indirectHandle: Indirect buffer.

      • +
      • [in] _start: First element in indirect buffer.

      • +
      • [in] _num: Number of dispatches.

      • +
      • [in] _depth: Depth for sorting.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    - - -
    +
    + +

    Compute

    Compute state is not preserved between two compute dispatches. All state is cleared after calling bgfx::dispatch.

    -
    +

    Buffers

    -
    -struct bgfx::Access
    +
    +struct bgfx::Access

    Access mode enum.

    Attention

    C99 equivalent is bgfx_access_t.

    @@ -4990,33 +4649,33 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Access:

    Values:

    -
    -enumerator Read
    +
    +enumerator Read

    Read.

    -
    -enumerator Write
    +
    +enumerator Write

    Write.

    -
    -enumerator ReadWrite
    +
    +enumerator ReadWrite

    Read and write.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -5025,188 +4684,164 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::setBuffer(uint8_t _stage, IndexBufferHandle _handle, Access::Enum _access)
    +
    +void bgfx::setBuffer(uint8_t _stage, IndexBufferHandle _handle, Access::Enum _access)

    Set compute index buffer.

    Attention

    C99 equivalent is bgfx_set_compute_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Index buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Index buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void bgfx::setBuffer(uint8_t _stage, VertexBufferHandle _handle, Access::Enum _access)
    +
    +void bgfx::setBuffer(uint8_t _stage, VertexBufferHandle _handle, Access::Enum _access)

    Set compute vertex buffer.

    Attention

    C99 equivalent is bgfx_set_compute_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Vertex buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Vertex buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void bgfx::setBuffer(uint8_t _stage, DynamicIndexBufferHandle _handle, Access::Enum _access)
    +
    +void bgfx::setBuffer(uint8_t _stage, DynamicIndexBufferHandle _handle, Access::Enum _access)

    Set compute dynamic index buffer.

    Attention

    C99 equivalent is bgfx_set_compute_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Dynamic index buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Dynamic index buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void bgfx::setBuffer(uint8_t _stage, DynamicVertexBufferHandle _handle, Access::Enum _access)
    +
    +void bgfx::setBuffer(uint8_t _stage, DynamicVertexBufferHandle _handle, Access::Enum _access)

    Set compute dynamic vertex buffer.

    Attention

    C99 equivalent is bgfx_set_compute_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Dynamic vertex buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Dynamic vertex buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -void bgfx::setBuffer(uint8_t _stage, IndirectBufferHandle _handle, Access::Enum _access)
    +
    +void bgfx::setBuffer(uint8_t _stage, IndirectBufferHandle _handle, Access::Enum _access)

    Set compute indirect buffer.

    Attention

    C99 equivalent is bgfx_set_compute_indirect_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Compute stage.

    • -
    • _handle[in] Indirect buffer handle.

    • -
    • _access[in] Buffer access. See Access::Enum.

    • +
      Parameters
        +
      • [in] _stage: Compute stage.

      • +
      • [in] _handle: Indirect buffer handle.

      • +
      • [in] _access: Buffer access. See Access::Enum.

    +

    -
    -
    +
    +

    Images

    -
    -void bgfx::setImage(uint8_t _stage, TextureHandle _handle, uint8_t _mip, Access::Enum _access, TextureFormat::Enum _format = TextureFormat::Count)
    +
    +void bgfx::setImage(uint8_t _stage, TextureHandle _handle, uint8_t _mip, Access::Enum _access, TextureFormat::Enum _format = TextureFormat::Count)

    Set compute image from texture.

    Attention

    C99 equivalent is bgfx_set_image.

    -
    -

    -
    -
    Parameters
    -
      -
    • _stage[in] Texture unit.

    • -
    • _handle[in] Texture handle.

    • -
    • _mip[in] Mip level.

    • -
    • _access[in] Texture access. See Access::Enum.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • +
      Parameters
        +
      • [in] _stage: Texture unit.

      • +
      • [in] _handle: Texture handle.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _access: Texture access. See Access::Enum.

      • +
      • [in] _format: Texture format. See: TextureFormat::Enum.

    +

    - -
    +
    +

    Dispatch

    Within view all compute commands are dispatched after blit commands, and before draw commands.

    -
    -void bgfx::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void bgfx::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1, uint8_t _flags = BGFX_DISCARD_ALL)

    Dispatch compute.

    Attention

    C99 equivalent is bgfx_dispatch.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _handle[in] Compute program.

    • -
    • _numX[in] Number of groups X.

    • -
    • _numY[in] Number of groups Y.

    • -
    • _numZ[in] Number of groups Z.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _handle: Compute program.

      • +
      • [in] _numX: Number of groups X.

      • +
      • [in] _numY: Number of groups Y.

      • +
      • [in] _numZ: Number of groups Z.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    -
    -void bgfx::dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint8_t _flags = BGFX_DISCARD_ALL)
    +
    +void bgfx::dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start = 0, uint16_t _num = 1, uint8_t _flags = BGFX_DISCARD_ALL)

    Dispatch compute indirect.

    Attention

    C99 equivalent is bgfx_dispatch_indirect.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _handle[in] Compute program.

    • -
    • _indirectHandle[in] Indirect buffer.

    • -
    • _start[in] First element in indirect buffer.

    • -
    • _num[in] Number of dispatches.

    • -
    • _flags[in] Discard or preserve states. See BGFX_DISCARD_*.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _handle: Compute program.

      • +
      • [in] _indirectHandle: Indirect buffer.

      • +
      • [in] _start: First element in indirect buffer.

      • +
      • [in] _num: Number of dispatches.

      • +
      • [in] _flags: Discard or preserve states. See BGFX_DISCARD_*.

    +

    - - -
    +
    + +

    Blit

    Within view all blit commands are executed before compute, and draw commands.

    -
    -void 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)
    +
    +void 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)

    Blit 2D texture region between two 2D textures.

    Attention

    Destination texture must be created with BGFX_TEXTURE_BLIT_DST flag.

    @@ -5215,28 +4850,25 @@ otherwise prefer bgfx::setViewScissor.

    Attention

    C99 equivalent is bgfx_blit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _dst[in] Destination texture handle.

    • -
    • _dstX[in] Destination texture X position.

    • -
    • _dstY[in] Destination texture Y position.

    • -
    • _src[in] Source texture handle.

    • -
    • _srcX[in] Source texture X position.

    • -
    • _srcY[in] Source texture Y position.

    • -
    • _width[in] Width of region.

    • -
    • _height[in] Height of region.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _dst: Destination texture handle.

      • +
      • [in] _dstX: Destination texture X position.

      • +
      • [in] _dstY: Destination texture Y position.

      • +
      • [in] _src: Source texture handle.

      • +
      • [in] _srcX: Source texture X position.

      • +
      • [in] _srcY: Source texture Y position.

      • +
      • [in] _width: Width of region.

      • +
      • [in] _height: Height of region.

    +

    -
    -void 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)
    +
    +void 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)

    Blit texture region between two textures.

    Attention

    Destination texture must be created with BGFX_TEXTURE_BLIT_DST flag.

    @@ -5245,37 +4877,34 @@ otherwise prefer bgfx::setViewScissor.

    Attention

    C99 equivalent is bgfx_blit.

    -
    -

    -
    -
    Parameters
    -
      -
    • _id[in] View id.

    • -
    • _dst[in] Destination texture handle.

    • -
    • _dstMip[in] Destination texture mip level.

    • -
    • _dstX[in] Destination texture X position.

    • -
    • _dstY[in] Destination texture Y position.

    • -
    • _dstZ[in] If texture is 2D this argument should be 0. If destination texture is cube this argument represents destination texture cube face. For 3D texture this argument represents destination texture Z position.

    • -
    • _src[in] Source texture handle.

    • -
    • _srcMip[in] Source texture mip level.

    • -
    • _srcX[in] Source texture X position.

    • -
    • _srcY[in] Source texture Y position.

    • -
    • _srcZ[in] If texture is 2D this argument should be 0. If source texture is cube this argument represents source texture cube face. For 3D texture this argument represents source texture Z position.

    • -
    • _width[in] Width of region.

    • -
    • _height[in] Height of region.

    • -
    • _depth[in] If texture is 3D this argument represents depth of region, otherwise it’s unused.

    • +
      Parameters
        +
      • [in] _id: View id.

      • +
      • [in] _dst: Destination texture handle.

      • +
      • [in] _dstMip: Destination texture mip level.

      • +
      • [in] _dstX: Destination texture X position.

      • +
      • [in] _dstY: Destination texture Y position.

      • +
      • [in] _dstZ: If texture is 2D this argument should be 0. If destination texture is cube this argument represents destination texture cube face. For 3D texture this argument represents destination texture Z position.

      • +
      • [in] _src: Source texture handle.

      • +
      • [in] _srcMip: Source texture mip level.

      • +
      • [in] _srcX: Source texture X position.

      • +
      • [in] _srcY: Source texture Y position.

      • +
      • [in] _srcZ: If texture is 2D this argument should be 0. If source texture is cube this argument represents source texture cube face. For 3D texture this argument represents source texture Z position.

      • +
      • [in] _width: Width of region.

      • +
      • [in] _height: Height of region.

      • +
      • [in] _depth: If texture is 3D this argument represents depth of region, otherwise it’s unused.

    +

    - - -
    +
    + +

    Resources

    -
    -struct bgfx::Memory
    +
    +struct bgfx::Memory

    Memory must be obtained by calling bgfx::alloc, bgfx::copy, or bgfx::makeRef.

    Attention

    It is illegal to create this structure on stack and pass it to any bgfx API.

    @@ -5285,16 +4914,16 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -uint8_t *data
    +
    +uint8_t *data

    Pointer to data.

    -
    -uint32_t size
    +
    +uint32_t size

    Data size.

    @@ -5302,191 +4931,169 @@ otherwise prefer bgfx::setViewScissor.

    -
    -const Memory *bgfx::alloc(uint32_t _size)
    +
    +const Memory *bgfx::alloc(uint32_t _size)

    Allocate buffer to pass to bgfx calls. Data will be freed inside bgfx.

    Attention

    C99 equivalent is bgfx_alloc.

    -
    -

    -
    -
    Parameters
    -

    _size[in] Size to allocate.

    +
    Parameters
      +
    • [in] _size: Size to allocate.

    • +
    +

    -
    -const Memory *bgfx::copy(const void *_data, uint32_t _size)
    +
    +const Memory *bgfx::copy(const void *_data, uint32_t _size)

    Allocate buffer and copy data into it. Data will be freed inside bgfx.

    Attention

    C99 equivalent is bgfx_copy.

    -
    -

    -
    -
    Parameters
    -
      -
    • _data[in] Pointer to data to be copied.

    • -
    • _size[in] Size of data to be copied.

    • +
      Parameters
        +
      • [in] _data: Pointer to data to be copied.

      • +
      • [in] _size: Size of data to be copied.

    +

    -
    -const Memory *bgfx::makeRef(const void *_data, uint32_t _size, ReleaseFn _releaseFn = NULL, void *_userData = NULL)
    +
    +const Memory *bgfx::makeRef(const void *_data, uint32_t _size, ReleaseFn _releaseFn = NULL, void *_userData = NULL)

    Make reference to data to pass to bgfx. Unlike bgfx::alloc, this call doesn’t allocate memory for data. It just copies the _data pointer. You can pass ReleaseFn function pointer to release this memory after it’s consumed, otherwise you must make sure _data is available for at least 2 bgfx::frame calls. ReleaseFn function must be able to be called from any thread.

    Attention

    Data passed must be available for at least 2 bgfx::frame calls.

    Attention

    C99 equivalent are bgfx_make_ref, bgfx_make_ref_release.

    -
    -

    -
    -
    Parameters
    -
      -
    • _data[in] Pointer to data.

    • -
    • _size[in] Size of data.

    • -
    • _releaseFn[in] Callback function to release memory after use.

    • -
    • _userData[in] User data to be passed to callback function.

    • +
      Parameters
        +
      • [in] _data: Pointer to data.

      • +
      • [in] _size: Size of data.

      • +
      • [in] _releaseFn: Callback function to release memory after use.

      • +
      • [in] _userData: User data to be passed to callback function.

    +

    -
    +

    Shaders and Programs

    -
    -ShaderHandle bgfx::createShader(const Memory *_mem)
    +
    +ShaderHandle bgfx::createShader(const Memory *_mem)

    Create shader from memory buffer.

    +
    Return

    Shader handle.

    +
    Attention

    C99 equivalent is bgfx_create_shader.

    -
    -
    Returns
    -

    Shader handle.

    -
    -
    -
    -uint16_t bgfx::getShaderUniforms(ShaderHandle _handle, UniformHandle *_uniforms = NULL, uint16_t _max = 0)
    +
    +uint16_t bgfx::getShaderUniforms(ShaderHandle _handle, UniformHandle *_uniforms = NULL, uint16_t _max = 0)

    Returns the number of uniforms and uniform handles used inside a shader.

    +
    Return

    Number of uniforms used by shader.

    +
    Remark

    Only non-predefined uniforms are returned.

    Attention

    C99 equivalent is bgfx_get_shader_uniforms.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Shader handle.

    • -
    • _uniforms[in] UniformHandle array where data will be stored.

    • -
    • _max[in] Maximum capacity of array.

    • +
      Parameters
        +
      • [in] _handle: Shader handle.

      • +
      • [in] _uniforms: UniformHandle array where data will be stored.

      • +
      • [in] _max: Maximum capacity of array.

      -
      Returns
      -

      Number of uniforms used by shader.

      -
    +

    -
    -void bgfx::destroy(ShaderHandle _handle)
    +
    +void bgfx::destroy(ShaderHandle _handle)

    Destroy shader. Once a shader program is created with _handle, it is safe to destroy that shader.

    Attention

    C99 equivalent is bgfx_destroy_shader.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Shader handle.

    +
    Parameters
      +
    • [in] _handle: Shader handle.

    • +
    +

    -
    -ProgramHandle bgfx::createProgram(ShaderHandle _vsh, ShaderHandle _fsh, bool _destroyShaders = false)
    +
    +ProgramHandle bgfx::createProgram(ShaderHandle _vsh, ShaderHandle _fsh, bool _destroyShaders = false)

    Create program with vertex and fragment shaders.

    +
    Return

    Program handle if vertex shader output and fragment shader input are matching, otherwise returns invalid program handle.

    +
    Attention

    C99 equivalent is bgfx_create_program.

    -
    -

    -
    -
    Parameters
    -
      -
    • _vsh[in] Vertex shader.

    • -
    • _fsh[in] Fragment shader.

    • -
    • _destroyShaders[in] If true, shaders will be destroyed when program is destroyed.

    • +
      Parameters
        +
      • [in] _vsh: Vertex shader.

      • +
      • [in] _fsh: Fragment shader.

      • +
      • [in] _destroyShaders: If true, shaders will be destroyed when program is destroyed.

      -
      Returns
      -

      Program handle if vertex shader output and fragment shader input are matching, otherwise returns invalid program handle.

      -
    +

    -
    -ProgramHandle bgfx::createProgram(ShaderHandle _csh, bool _destroyShader = false)
    +
    +ProgramHandle bgfx::createProgram(ShaderHandle _csh, bool _destroyShader = false)

    Create program with compute shader.

    +
    Return

    Program handle.

    +
    Attention

    C99 equivalent is bgfx_create_compute_program.

    +
    Parameters
      +
    • [in] _csh: Compute shader.

    • +
    • [in] _destroyShader: If true, shader will be destroyed when program is destroyed.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _csh[in] Compute shader.

    • -
    • _destroyShader[in] If true, shader will be destroyed when program is destroyed.

    • -
    -
    -
    Returns
    -

    Program handle.

    -
    -
    -
    -void bgfx::destroy(ProgramHandle _handle)
    +
    +void bgfx::destroy(ProgramHandle _handle)

    Destroy program.

    Attention

    C99 equivalent is bgfx_destroy_program.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Program handle.

    +
    Parameters
      +
    • [in] _handle: Program handle.

    • +
    +

    -
    -
    +
    +

    Uniforms

    -
    -UniformHandle bgfx::createUniform(const char *_name, UniformType::Enum _type, uint16_t _num = 1)
    +
    +UniformHandle bgfx::createUniform(const char *_name, UniformType::Enum _type, uint16_t _num = 1)

    Create shader uniform parameter.

    +
    Return

    Handle to uniform object.

    +
    Remark

    1. Uniform names are unique. It’s valid to call bgfx::createUniform multiple times with the same uniform name. The library will always return the same handle, but the handle reference count will be incremented. This means that the same number of bgfx::destroyUniform must be called to properly destroy the uniform.

    2. Predefined uniforms (declared in bgfx_shader.sh):

        @@ -5509,60 +5116,50 @@ otherwise prefer bgfx::setViewScissor.

    Attention

    C99 equivalent is bgfx_create_uniform.

    -
    -

    -
    -
    Parameters
    -
      -
    • _name[in] Uniform name in shader.

    • -
    • _type[in] Type of uniform (See: bgfx::UniformType).

    • -
    • _num[in] Number of elements in array.

    • +
      Parameters
        +
      • [in] _name: Uniform name in shader.

      • +
      • [in] _type: Type of uniform (See: bgfx::UniformType).

      • +
      • [in] _num: Number of elements in array.

      -
      Returns
      -

      Handle to uniform object.

      -
    +

    -
    -void bgfx::getUniformInfo(UniformHandle _handle, UniformInfo &_info)
    +
    +void bgfx::getUniformInfo(UniformHandle _handle, UniformInfo &_info)

    Retrieve uniform info.

    Attention

    C99 equivalent is bgfx_get_uniform_info.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Handle to uniform object.

    • -
    • _info[out] Uniform info.

    • +
      Parameters
        +
      • [in] _handle: Handle to uniform object.

      • +
      • [out] _info: Uniform info.

    +

    -
    -void bgfx::destroy(UniformHandle _handle)
    +
    +void bgfx::destroy(UniformHandle _handle)

    Destroy shader uniform parameter.

    Attention

    C99 equivalent is bgfx_destroy_uniform.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Handle to uniform object.

    +
    Parameters
      +
    • [in] _handle: Handle to uniform object.

    • +
    +

    -
    -struct bgfx::UniformType
    +
    +struct bgfx::UniformType

    Uniform type enum.

    Attention

    C99 equivalent is bgfx_uniform_type_t.

    @@ -5570,45 +5167,45 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Uniform types:

    Values:

    -
    -enumerator Sampler
    +
    +enumerator Sampler

    Sampler.

    -
    -enumerator End
    +
    +enumerator End

    Reserved, do not use.

    -
    -enumerator Vec4
    +
    +enumerator Vec4

    4 floats vector.

    -
    -enumerator Mat3
    +
    +enumerator Mat3

    3x3 matrix.

    -
    -enumerator Mat4
    +
    +enumerator Mat4

    4x4 matrix.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -5617,8 +5214,8 @@ otherwise prefer bgfx::setViewScissor.

    -
    -struct bgfx::UniformInfo
    +
    +struct bgfx::UniformInfo

    Uniform info.

    Attention

    C99 equivalent is bgfx_uniform_info_t.

    @@ -5626,34 +5223,34 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -char name[256]
    +
    +char name[256]

    Uniform name.

    -
    -UniformType::Enum type
    +
    +UniformType::Enum type

    Uniform type.

    -
    -uint16_t num
    +
    +uint16_t num

    Number of elements in array.

    - -
    +
    +

    Vertex Buffers

    -
    -VertexLayoutHandle bgfx::createVertexLayout(const VertexLayout &_layout)
    +
    +VertexLayoutHandle bgfx::createVertexLayout(const VertexLayout &_layout)

    Create vertex layout.

    Attention

    C99 equivalent is bgfx_create_vertex_layout.

    @@ -5663,8 +5260,8 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::destroy(VertexLayoutHandle _handle)
    +
    +void bgfx::destroy(VertexLayoutHandle _handle)

    Destroy vertex layout.

    Attention

    C99 equivalent is bgfx_destroy_vertex_layout.

    @@ -5674,20 +5271,18 @@ otherwise prefer bgfx::setViewScissor.

    -
    -VertexBufferHandle bgfx::createVertexBuffer(const Memory *_mem, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +VertexBufferHandle bgfx::createVertexBuffer(const Memory *_mem, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)

    Create static vertex buffer.

    +
    Return

    Static vertex buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _mem[in] Vertex buffer data.

    • -
    • _layout[in] Vertex layout.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _mem: Vertex buffer data.

        • +
        • [in] _layout: Vertex layout.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -5698,51 +5293,45 @@ otherwise prefer bgfx::setViewScissor.

        -
        Returns
        -

        Static vertex buffer handle.

        -
    +

    -
    -void bgfx::setName(VertexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
    +
    +void bgfx::setName(VertexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)

    Set static vertex buffer debug name.

    Attention

    C99 equivalent is bgfx_set_vertex_buffer_name.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Static vertex buffer handle.

    • -
    • _name[in] Static vertex buffer name.

    • -
    • _len[in] Static vertex buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    • +
      Parameters
        +
      • [in] _handle: Static vertex buffer handle.

      • +
      • [in] _name: Static vertex buffer name.

      • +
      • [in] _len: Static vertex buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    +

    -
    -void bgfx::destroy(VertexBufferHandle _handle)
    +
    +void bgfx::destroy(VertexBufferHandle _handle)

    Destroy static vertex buffer.

    Attention

    C99 equivalent is bgfx_destroy_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Static vertex buffer handle.

    +
    Parameters
      +
    • [in] _handle: Static vertex buffer handle.

    • +
    +

    -
    -struct bgfx::VertexLayout
    +
    +struct bgfx::VertexLayout

    Vertex layout.

    Attention

    C99 equivalent is bgfx_vertex_layout_t.

    @@ -5750,29 +5339,27 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Functions

    +

    Public Functions

    -
    -VertexLayout &begin(RendererType::Enum _renderer = RendererType::Noop)
    +
    +VertexLayout &begin(RendererType::Enum _renderer = RendererType::Noop)

    Start VertexLayout.

    +
    Return

    Returns itself.

    +
    Attention

    C99 equivalent is bgfx_vertex_layout_begin.

    +
    Parameters
    +

    -
    -
    Parameters
    -

    _renderer[in] Renderer backend type. See: bgfx::RendererType

    -
    -
    Returns
    -

    Returns itself.

    -
    -
    -
    -void end()
    +
    +void end()

    End VertexLayout.

    Attention

    C99 equivalent is bgfx_vertex_layout_end.

    @@ -5782,51 +5369,44 @@ otherwise prefer bgfx::setViewScissor.

    -
    -VertexLayout &add(Attrib::Enum _attrib, uint8_t _num, AttribType::Enum _type, bool _normalized = false, bool _asInt = false)
    +
    +VertexLayout &add(Attrib::Enum _attrib, uint8_t _num, AttribType::Enum _type, bool _normalized = false, bool _asInt = false)

    Add attribute to VertexLayout.

    +
    Return

    Returns itself.

    +
    Remark

    Must be called between begin/end.

    Attention

    C99 equivalent is bgfx_vertex_layout_add.

    -
    -

    -
    -
    Parameters
    -
      -
    • _attrib[in] Attribute semantics. See: bgfx::Attrib

    • -
    • _num[in] Number of elements 1, 2, 3 or 4.

    • -
    • _type[in] Element type.

    • -
    • _normalized[in] When using fixed point AttribType (f.e. Uint8) value will be normalized for vertex shader usage. When normalized is set to true, AttribType::Uint8 value in range 0-255 will be in range 0.0-1.0 in vertex shader.

    • -
    • _asInt[in] Packaging rule for vertexPack, vertexUnpack, and vertexConvert for AttribType::Uint8 and AttribType::Int16. Unpacking code must be implemented inside vertex shader.

    • +
      Parameters
        +
      • [in] _attrib: Attribute semantics. See: bgfx::Attrib

      • +
      • [in] _num: Number of elements 1, 2, 3 or 4.

      • +
      • [in] _type: Element type.

      • +
      • [in] _normalized: When using fixed point AttribType (f.e. Uint8) value will be normalized for vertex shader usage. When normalized is set to true, AttribType::Uint8 value in range 0-255 will be in range 0.0-1.0 in vertex shader.

      • +
      • [in] _asInt: Packaging rule for vertexPack, vertexUnpack, and vertexConvert for AttribType::Uint8 and AttribType::Int16. Unpacking code must be implemented inside vertex shader.

      -
      Returns
      -

      Returns itself.

      -
    +

    -
    -VertexLayout &skip(uint8_t _num)
    +
    +VertexLayout &skip(uint8_t _num)

    Skip _num bytes in vertex stream.

    +
    Return

    Returns itself.

    +
    Attention

    C99 equivalent is bgfx_vertex_layout_skip.

    -
    -
    Returns
    -

    Returns itself.

    -
    -
    -
    -void decode(Attrib::Enum _attrib, uint8_t &_num, AttribType::Enum &_type, bool &_normalized, bool &_asInt) const
    +
    +void decode(Attrib::Enum _attrib, uint8_t &_num, AttribType::Enum &_type, bool &_normalized, bool &_asInt) const

    Decode attribute.

    Attention

    C99 equivalent is bgfx_vertex_layout_decode.

    @@ -5836,87 +5416,87 @@ otherwise prefer bgfx::setViewScissor.

    -
    -inline bool has(Attrib::Enum _attrib) const
    +
    +bool has(Attrib::Enum _attrib) const

    Returns true if VertexLayout contains attribute.

    +
    Return

    True if VertexLayout contains attribute.

    +
    Attention

    C99 equivalent is bgfx_vertex_layout_has.

    +
    Parameters
    +

    -
    -
    Parameters
    -

    _attrib[in] Attribute semantics. See: bgfx::Attrib

    -
    -
    Returns
    -

    True if VertexLayout contains attribute.

    -
    -
    -
    -inline uint16_t getOffset(Attrib::Enum _attrib) const
    +
    +uint16_t getOffset(Attrib::Enum _attrib) const

    Returns relative attribute offset from the vertex.

    -
    -
    Parameters
    -

    _attrib[in] Attribute semantics. See: bgfx::Attrib

    +

    +
    Return

    Relative attribute offset from the vertex.

    -
    Returns
    -

    Relative attribute offset from the vertex.

    +
    Parameters
    +

    -
    -inline uint16_t getStride() const
    +
    +uint16_t getStride() const

    Returns vertex stride.

    -
    -
    Returns
    -

    Vertex stride.

    +

    +
    Return

    Vertex stride.

    +

    -
    -inline uint32_t getSize(uint32_t _num) const
    +
    +uint32_t getSize(uint32_t _num) const

    Returns size of vertex buffer for number of vertices.

    -
    -
    Parameters
    -

    _num[in] Number of vertices.

    +

    +
    Return

    Size of vertex buffer for number of vertices.

    -
    Returns
    -

    Size of vertex buffer for number of vertices.

    +
    Parameters
      +
    • [in] _num: Number of vertices.

    • +
    +

    -

    Public Members

    +

    Public Members

    -
    -uint32_t m_hash
    +
    +uint32_t m_hash

    Hash.

    -
    -uint16_t m_stride
    +
    +uint16_t m_stride

    Stride.

    -
    -uint16_t m_offset[Attrib::Count]
    +
    +uint16_t m_offset[Count]

    Attribute offsets.

    -
    -uint16_t m_attributes[Attrib::Count]
    +
    +uint16_t m_attributes[Count]

    Used attributes.

    @@ -5924,8 +5504,8 @@ otherwise prefer bgfx::setViewScissor.

    -
    -struct bgfx::Attrib
    +
    +struct bgfx::Attrib

    Vertex attribute enum.

    Attention

    C99 equivalent is bgfx_attrib_t.

    @@ -5933,123 +5513,123 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Corresponds to vertex shader attribute.

    Values:

    -
    -enumerator Position
    +
    +enumerator Position

    a_position

    -
    -enumerator Normal
    +
    +enumerator Normal

    a_normal

    -
    -enumerator Tangent
    +
    +enumerator Tangent

    a_tangent

    -
    -enumerator Bitangent
    +
    +enumerator Bitangent

    a_bitangent

    -
    -enumerator Color0
    +
    +enumerator Color0

    a_color0

    -
    -enumerator Color1
    +
    +enumerator Color1

    a_color1

    -
    -enumerator Color2
    +
    +enumerator Color2

    a_color2

    -
    -enumerator Color3
    +
    +enumerator Color3

    a_color3

    -
    -enumerator Indices
    +
    +enumerator Indices

    a_indices

    -
    -enumerator Weight
    +
    +enumerator Weight

    a_weight

    -
    -enumerator TexCoord0
    +
    +enumerator TexCoord0

    a_texcoord0

    -
    -enumerator TexCoord1
    +
    +enumerator TexCoord1

    a_texcoord1

    -
    -enumerator TexCoord2
    +
    +enumerator TexCoord2

    a_texcoord2

    -
    -enumerator TexCoord3
    +
    +enumerator TexCoord3

    a_texcoord3

    -
    -enumerator TexCoord4
    +
    +enumerator TexCoord4

    a_texcoord4

    -
    -enumerator TexCoord5
    +
    +enumerator TexCoord5

    a_texcoord5

    -
    -enumerator TexCoord6
    +
    +enumerator TexCoord6

    a_texcoord6

    -
    -enumerator TexCoord7
    +
    +enumerator TexCoord7

    a_texcoord7

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -6058,8 +5638,8 @@ otherwise prefer bgfx::setViewScissor.

    -
    -struct bgfx::AttribType
    +
    +struct bgfx::AttribType

    Vertex attribute type enum.

    Attention

    C99 equivalent is bgfx_attrib_type_t.

    @@ -6067,45 +5647,45 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Attribute types:

    Values:

    -
    -enumerator Uint8
    +
    +enumerator Uint8

    Uint8.

    -
    -enumerator Uint10
    +
    +enumerator Uint10

    Uint10, availability depends on: BGFX_CAPS_VERTEX_ATTRIB_UINT10.

    -
    -enumerator Int16
    +
    +enumerator Int16

    Int16.

    -
    -enumerator Half
    +
    +enumerator Half

    Half, availability depends on: BGFX_CAPS_VERTEX_ATTRIB_HALF.

    -
    -enumerator Float
    +
    +enumerator Float

    Float.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -6114,20 +5694,18 @@ otherwise prefer bgfx::setViewScissor.

    -
    -DynamicVertexBufferHandle bgfx::createDynamicVertexBuffer(uint32_t _num, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +DynamicVertexBufferHandle bgfx::createDynamicVertexBuffer(uint32_t _num, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)

    Create empty dynamic vertex buffer.

    +
    Return

    Dynamic vertex buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of vertices.

    • -
    • _layout[in] Vertex layout.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _num: Number of vertices.

        • +
        • [in] _layout: Vertex layout.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -6138,27 +5716,23 @@ otherwise prefer bgfx::setViewScissor.

        -
        Returns
        -

        Dynamic vertex buffer handle.

        -
    +

    -
    -DynamicVertexBufferHandle bgfx::createDynamicVertexBuffer(const Memory *_mem, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +DynamicVertexBufferHandle bgfx::createDynamicVertexBuffer(const Memory *_mem, const VertexLayout &_layout, uint16_t _flags = BGFX_BUFFER_NONE)

    Create dynamic vertex buffer and initialize it.

    +
    Return

    Dynamic vertex buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_dynamic_vertex_buffer_mem.

    -
    -

    -
    -
    Parameters
    -
      -
    • _mem[in] Vertex buffer data.

    • -
    • _layout[in] Vertex layout.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _mem: Vertex buffer data.

        • +
        • [in] _layout: Vertex layout.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -6169,104 +5743,88 @@ otherwise prefer bgfx::setViewScissor.

        -
        Returns
        -

        Dynamic vertex buffer handle.

        -
    +

    -
    -void bgfx::update(DynamicVertexBufferHandle _handle, uint32_t _startVertex, const Memory *_mem)
    +
    +void bgfx::update(DynamicVertexBufferHandle _handle, uint32_t _startVertex, const Memory *_mem)

    Update dynamic vertex buffer.

    Attention

    C99 equivalent is bgfx_update_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Dynamic vertex buffer handle.

    • -
    • _startVertex[in] Start vertex.

    • -
    • _mem[in] Vertex buffer data.

    • +
      Parameters
        +
      • [in] _handle: Dynamic vertex buffer handle.

      • +
      • [in] _startVertex: Start vertex.

      • +
      • [in] _mem: Vertex buffer data.

    +

    -
    -void bgfx::destroy(DynamicVertexBufferHandle _handle)
    +
    +void bgfx::destroy(DynamicVertexBufferHandle _handle)

    Destroy dynamic vertex buffer.

    Attention

    C99 equivalent is bgfx_destroy_dynamic_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Dynamic vertex buffer handle.

    +
    Parameters
      +
    • [in] _handle: Dynamic vertex buffer handle.

    • +
    +

    -
    -uint32_t bgfx::getAvailTransientVertexBuffer(uint32_t _num, const VertexLayout &_layout)
    +
    +uint32_t bgfx::getAvailTransientVertexBuffer(uint32_t _num, const VertexLayout &_layout)

    Returns number of requested or maximum available vertices.

    Attention

    C99 equivalent is bgfx_get_avail_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of required vertices.

    • -
    • _layout[in] Vertex layout.

    • +
      Parameters
        +
      • [in] _num: Number of required vertices.

      • +
      • [in] _layout: Vertex layout.

    +

    -
    -void bgfx::allocTransientVertexBuffer(TransientVertexBuffer *_tvb, uint32_t _num, const VertexLayout &_layout)
    +
    +void bgfx::allocTransientVertexBuffer(TransientVertexBuffer *_tvb, uint32_t _num, const VertexLayout &_layout)

    Allocate transient vertex buffer.

    Attention

    C99 equivalent is bgfx_alloc_transient_vertex_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _tvb[out] TransientVertexBuffer structure is filled and is valid for the duration of frame, and it can be reused for multiple draw calls.

    • -
    • _num[in] Number of vertices to allocate.

    • -
    • _layout[in] Vertex layout.

    • +
      Parameters
        +
      • [out] _tvb: TransientVertexBuffer structure is filled and is valid for the duration of frame, and it can be reused for multiple draw calls.

      • +
      • [in] _num: Number of vertices to allocate.

      • +
      • [in] _layout: Vertex layout.

    +

    - -
    +
    +

    Index Buffers

    -
    -IndexBufferHandle bgfx::createIndexBuffer(const Memory *_mem, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +IndexBufferHandle bgfx::createIndexBuffer(const Memory *_mem, uint16_t _flags = BGFX_BUFFER_NONE)

    Create static index buffer.

    Attention

    C99 equivalent is bgfx_create_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _mem[in] Index buffer data.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _mem: Index buffer data.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -6278,58 +5836,53 @@ otherwise prefer bgfx::setViewScissor.

    +

    -
    -void bgfx::setName(IndexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
    +
    +void bgfx::setName(IndexBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)

    Set static index buffer debug name.

    Attention

    C99 equivalent is bgfx_set_index_buffer_name.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Static index buffer handle.

    • -
    • _name[in] Static index buffer name.

    • -
    • _len[in] Static index buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    • +
      Parameters
        +
      • [in] _handle: Static index buffer handle.

      • +
      • [in] _name: Static index buffer name.

      • +
      • [in] _len: Static index buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    +

    -
    -void bgfx::destroy(IndexBufferHandle _handle)
    +
    +void bgfx::destroy(IndexBufferHandle _handle)

    Destroy static index buffer.

    Attention

    C99 equivalent is bgfx_destroy_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Static index buffer handle.

    +
    Parameters
      +
    • [in] _handle: Static index buffer handle.

    • +
    +

    -
    -DynamicIndexBufferHandle bgfx::createDynamicIndexBuffer(uint32_t _num, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +DynamicIndexBufferHandle bgfx::createDynamicIndexBuffer(uint32_t _num, uint16_t _flags = BGFX_BUFFER_NONE)

    Create empty dynamic index buffer.

    +
    Return

    Dynamic index buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of indices.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _num: Number of indices.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -6340,26 +5893,22 @@ otherwise prefer bgfx::setViewScissor.

        -
        Returns
        -

        Dynamic index buffer handle.

        -
    +

    -
    -DynamicIndexBufferHandle bgfx::createDynamicIndexBuffer(const Memory *_mem, uint16_t _flags = BGFX_BUFFER_NONE)
    +
    +DynamicIndexBufferHandle bgfx::createDynamicIndexBuffer(const Memory *_mem, uint16_t _flags = BGFX_BUFFER_NONE)

    Create dynamic index buffer and initialized it.

    +
    Return

    Dynamic index buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_dynamic_index_buffer_mem.

    -
    -

    -
    -
    Parameters
    -
      -
    • _mem[in] Index buffer data.

    • -
    • _flags[in] Buffer creation flags.

        +
        Parameters
          +
        • [in] _mem: Index buffer data.

        • +
        • [in] _flags: Buffer creation flags.

          • BGFX_BUFFER_NONE - No flags.

          • BGFX_BUFFER_COMPUTE_READ - Buffer will be read from by compute shader.

          • BGFX_BUFFER_COMPUTE_WRITE - Buffer will be written into by compute shader. When buffer is created with BGFX_BUFFER_COMPUTE_WRITE flag it cannot be updated from CPU.

          • @@ -6370,93 +5919,81 @@ otherwise prefer bgfx::setViewScissor.

        -
        Returns
        -

        Dynamic index buffer handle.

        -
    +

    -
    -void bgfx::update(DynamicIndexBufferHandle _handle, uint32_t _startIndex, const Memory *_mem)
    +
    +void bgfx::update(DynamicIndexBufferHandle _handle, uint32_t _startIndex, const Memory *_mem)

    Update dynamic index buffer.

    Attention

    C99 equivalent is bgfx_update_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Dynamic index buffer handle.

    • -
    • _startIndex[in] Start index.

    • -
    • _mem[in] Index buffer data.

    • +
      Parameters
        +
      • [in] _handle: Dynamic index buffer handle.

      • +
      • [in] _startIndex: Start index.

      • +
      • [in] _mem: Index buffer data.

    +

    -
    -void bgfx::destroy(DynamicIndexBufferHandle _handle)
    +
    +void bgfx::destroy(DynamicIndexBufferHandle _handle)

    Destroy dynamic index buffer.

    Attention

    C99 equivalent is bgfx_destroy_dynamic_index_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Dynamic index buffer handle.

    +
    Parameters
      +
    • [in] _handle: Dynamic index buffer handle.

    • +
    +

    -
    -uint32_t bgfx::getAvailTransientIndexBuffer(uint32_t _num, bool _index32 = false)
    +
    +uint32_t bgfx::getAvailTransientIndexBuffer(uint32_t _num, bool _index32 = false)

    Returns number of requested or maximum available indices.

    Attention

    C99 equivalent is bgfx_get_avail_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of required indices.

    • -
    • _index32[in] Set to true if input indices will be 32-bit.

    • +
      Parameters
        +
      • [in] _num: Number of required indices.

      • +
      • [in] _index32: Set to true if input indices will be 32-bit.

    +

    -
    -void bgfx::allocTransientIndexBuffer(TransientIndexBuffer *_tib, uint32_t _num, bool _index32 = false)
    +
    +void bgfx::allocTransientIndexBuffer(TransientIndexBuffer *_tib, uint32_t _num, bool _index32 = false)

    Allocate transient index buffer.

    Attention

    C99 equivalent is bgfx_alloc_transient_index_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _tib[out] TransientIndexBuffer structure is filled and is valid for the duration of frame, and it can be reused for multiple draw calls.

    • -
    • _num[in] Number of indices to allocate.

    • -
    • _index32[in] Set to true if input indices will be 32-bit.

    • +
      Parameters
        +
      • [out] _tib: TransientIndexBuffer structure is filled and is valid for the duration of frame, and it can be reused for multiple draw calls.

      • +
      • [in] _num: Number of indices to allocate.

      • +
      • [in] _index32: Set to true if input indices will be 32-bit.

    +

    - -
    +
    +

    Textures

    -
    -struct bgfx::TextureFormat
    +
    +struct bgfx::TextureFormat

    Texture format enum.

    Notation:

      RGBA16S
       ^   ^ ^
    @@ -6478,466 +6015,466 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Texture formats:

    Values:

    -
    -enumerator BC1
    +
    +enumerator BC1

    DXT1 R5G6B5A1.

    -
    -enumerator BC2
    +
    +enumerator BC2

    DXT3 R5G6B5A4.

    -
    -enumerator BC3
    +
    +enumerator BC3

    DXT5 R5G6B5A8.

    -
    -enumerator BC4
    +
    +enumerator BC4

    LATC1/ATI1 R8.

    -
    -enumerator BC5
    +
    +enumerator BC5

    LATC2/ATI2 RG8.

    -
    -enumerator BC6H
    +
    +enumerator BC6H

    BC6H RGB16F.

    -
    -enumerator BC7
    +
    +enumerator BC7

    BC7 RGB 4-7 bits per color channel, 0-8 bits alpha.

    -
    -enumerator ETC1
    +
    +enumerator ETC1

    ETC1 RGB8.

    -
    -enumerator ETC2
    +
    +enumerator ETC2

    ETC2 RGB8.

    -
    -enumerator ETC2A
    +
    +enumerator ETC2A

    ETC2 RGBA8.

    -
    -enumerator ETC2A1
    +
    +enumerator ETC2A1

    ETC2 RGB8A1.

    -
    -enumerator PTC12
    +
    +enumerator PTC12

    PVRTC1 RGB 2BPP.

    -
    -enumerator PTC14
    +
    +enumerator PTC14

    PVRTC1 RGB 4BPP.

    -
    -enumerator PTC12A
    +
    +enumerator PTC12A

    PVRTC1 RGBA 2BPP.

    -
    -enumerator PTC14A
    +
    +enumerator PTC14A

    PVRTC1 RGBA 4BPP.

    -
    -enumerator PTC22
    +
    +enumerator PTC22

    PVRTC2 RGBA 2BPP.

    -
    -enumerator PTC24
    +
    +enumerator PTC24

    PVRTC2 RGBA 4BPP.

    -
    -enumerator ATC
    +
    +enumerator ATC

    ATC RGB 4BPP.

    -
    -enumerator ATCE
    +
    +enumerator ATCE

    ATCE RGBA 8 BPP explicit alpha.

    -
    -enumerator ATCI
    +
    +enumerator ATCI

    ATCI RGBA 8 BPP interpolated alpha.

    -
    -enumerator ASTC4x4
    +
    +enumerator ASTC4x4

    ASTC 4x4 8.0 BPP.

    -
    -enumerator ASTC5x5
    +
    +enumerator ASTC5x5

    ASTC 5x5 5.12 BPP.

    -
    -enumerator ASTC6x6
    +
    +enumerator ASTC6x6

    ASTC 6x6 3.56 BPP.

    -
    -enumerator ASTC8x5
    +
    +enumerator ASTC8x5

    ASTC 8x5 3.20 BPP.

    -
    -enumerator ASTC8x6
    +
    +enumerator ASTC8x6

    ASTC 8x6 2.67 BPP.

    -
    -enumerator ASTC10x5
    +
    +enumerator ASTC10x5

    ASTC 10x5 2.56 BPP.

    -
    -enumerator Unknown
    +
    +enumerator Unknown
    -
    -enumerator R1
    +
    +enumerator R1
    -
    -enumerator A8
    +
    +enumerator A8
    -
    -enumerator R8
    +
    +enumerator R8
    -
    -enumerator R8I
    +
    +enumerator R8I
    -
    -enumerator R8U
    +
    +enumerator R8U
    -
    -enumerator R8S
    +
    +enumerator R8S
    -
    -enumerator R16
    +
    +enumerator R16
    -
    -enumerator R16I
    +
    +enumerator R16I
    -
    -enumerator R16U
    +
    +enumerator R16U
    -
    -enumerator R16F
    +
    +enumerator R16F
    -
    -enumerator R16S
    +
    +enumerator R16S
    -
    -enumerator R32I
    +
    +enumerator R32I
    -
    -enumerator R32U
    +
    +enumerator R32U
    -
    -enumerator R32F
    +
    +enumerator R32F
    -
    -enumerator RG8
    +
    +enumerator RG8
    -
    -enumerator RG8I
    +
    +enumerator RG8I
    -
    -enumerator RG8U
    +
    +enumerator RG8U
    -
    -enumerator RG8S
    +
    +enumerator RG8S
    -
    -enumerator RG16
    +
    +enumerator RG16
    -
    -enumerator RG16I
    +
    +enumerator RG16I
    -
    -enumerator RG16U
    +
    +enumerator RG16U
    -
    -enumerator RG16F
    +
    +enumerator RG16F
    -
    -enumerator RG16S
    +
    +enumerator RG16S
    -
    -enumerator RG32I
    +
    +enumerator RG32I
    -
    -enumerator RG32U
    +
    +enumerator RG32U
    -
    -enumerator RG32F
    +
    +enumerator RG32F
    -
    -enumerator RGB8
    +
    +enumerator RGB8
    -
    -enumerator RGB8I
    +
    +enumerator RGB8I
    -
    -enumerator RGB8U
    +
    +enumerator RGB8U
    -
    -enumerator RGB8S
    +
    +enumerator RGB8S
    -
    -enumerator RGB9E5F
    +
    +enumerator RGB9E5F
    -
    -enumerator BGRA8
    +
    +enumerator BGRA8
    -
    -enumerator RGBA8
    +
    +enumerator RGBA8
    -
    -enumerator RGBA8I
    +
    +enumerator RGBA8I
    -
    -enumerator RGBA8U
    +
    +enumerator RGBA8U
    -
    -enumerator RGBA8S
    +
    +enumerator RGBA8S
    -
    -enumerator RGBA16
    +
    +enumerator RGBA16
    -
    -enumerator RGBA16I
    +
    +enumerator RGBA16I
    -
    -enumerator RGBA16U
    +
    +enumerator RGBA16U
    -
    -enumerator RGBA16F
    +
    +enumerator RGBA16F
    -
    -enumerator RGBA16S
    +
    +enumerator RGBA16S
    -
    -enumerator RGBA32I
    +
    +enumerator RGBA32I
    -
    -enumerator RGBA32U
    +
    +enumerator RGBA32U
    -
    -enumerator RGBA32F
    +
    +enumerator RGBA32F
    -
    -enumerator R5G6B5
    +
    +enumerator R5G6B5
    -
    -enumerator RGBA4
    +
    +enumerator RGBA4
    -
    -enumerator RGB5A1
    +
    +enumerator RGB5A1
    -
    -enumerator RGB10A2
    +
    +enumerator RGB10A2
    -
    -enumerator RG11B10F
    +
    +enumerator RG11B10F
    -
    -enumerator UnknownDepth
    +
    +enumerator UnknownDepth
    -
    -enumerator D16
    +
    +enumerator D16
    -
    -enumerator D24
    +
    +enumerator D24
    -
    -enumerator D24S8
    +
    +enumerator D24S8
    -
    -enumerator D32
    +
    +enumerator D32
    -
    -enumerator D16F
    +
    +enumerator D16F
    -
    -enumerator D24F
    +
    +enumerator D24F
    -
    -enumerator D32F
    +
    +enumerator D32F
    -
    -enumerator D0S8
    +
    +enumerator D0S8
    -
    -enumerator Count
    +
    +enumerator Count
    @@ -6946,33 +6483,29 @@ otherwise prefer bgfx::setViewScissor.

    -
    -bool bgfx::isTextureValid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags)
    +
    +bool bgfx::isTextureValid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags)

    Validate texture parameters.

    +
    Return

    True if texture can be successfully created.

    +
    Attention

    C99 equivalent is bgfx_is_texture_valid.

    +
    Parameters
      +
    • [in] _depth: Depth dimension of volume texture.

    • +
    • [in] _cubeMap: Indicates that texture contains cubemap.

    • +
    • [in] _numLayers: Number of layers in texture array.

    • +
    • [in] _format: Texture format. See: TextureFormat::Enum.

    • +
    • [in] _flags: Texture flags. See BGFX_TEXTURE_*.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _depth[in] Depth dimension of volume texture.

    • -
    • _cubeMap[in] Indicates that texture contains cubemap.

    • -
    • _numLayers[in] Number of layers in texture array.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Texture flags. See BGFX_TEXTURE_*.

    • -
    -
    -
    Returns
    -

    True if texture can be successfully created.

    -
    -
    -
    -struct bgfx::TextureInfo
    +
    +struct bgfx::TextureInfo

    Texture info.

    Attention

    C99 equivalent is bgfx_texture_info_t.

    @@ -6980,58 +6513,58 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Members

    +

    Public Members

    -
    -TextureFormat::Enum format
    +
    +TextureFormat::Enum format

    Texture format.

    -
    -uint32_t storageSize
    +
    +uint32_t storageSize

    Total amount of bytes required to store texture.

    -
    -uint16_t width
    +
    +uint16_t width

    Texture width.

    -
    -uint16_t height
    +
    +uint16_t height

    Texture height.

    -
    -uint16_t depth
    +
    +uint16_t depth

    Texture depth.

    -
    -uint16_t numLayers
    +
    +uint16_t numLayers

    Number of layers in texture array.

    -
    -uint8_t numMips
    +
    +uint8_t numMips

    Number of MIP maps.

    -
    -uint8_t bitsPerPixel
    +
    +uint8_t bitsPerPixel

    Format bits per pixel.

    -
    -bool cubeMap
    +
    +bool cubeMap

    Texture is cubemap.

    @@ -7039,103 +6572,89 @@ otherwise prefer bgfx::setViewScissor.

    -
    -void bgfx::calcTextureSize(TextureInfo &_info, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format)
    +
    +void bgfx::calcTextureSize(TextureInfo &_info, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format)

    Calculate amount of memory required for texture.

    Attention

    C99 equivalent is bgfx_calc_texture_size.

    -
    -

    -
    -
    Parameters
    -
      -
    • _info[out] Resulting texture info structure. See: TextureInfo.

    • -
    • _width[in] Width.

    • -
    • _height[in] Height.

    • -
    • _depth[in] Depth dimension of volume texture.

    • -
    • _cubeMap[in] Indicates that texture contains cubemap.

    • -
    • _hasMips[in] Indicates that texture contains full mip-map chain.

    • -
    • _numLayers[in] Number of layers in texture array.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • +
      Parameters
        +
      • [out] _info: Resulting texture info structure. See: TextureInfo.

      • +
      • [in] _width: Width.

      • +
      • [in] _height: Height.

      • +
      • [in] _depth: Depth dimension of volume texture.

      • +
      • [in] _cubeMap: Indicates that texture contains cubemap.

      • +
      • [in] _hasMips: Indicates that texture contains full mip-map chain.

      • +
      • [in] _numLayers: Number of layers in texture array.

      • +
      • [in] _format: Texture format. See: TextureFormat::Enum.

    +

    -
    -TextureHandle bgfx::createTexture(const Memory *_mem, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, uint8_t _skip = 0, TextureInfo *_info = NULL)
    +
    +TextureHandle bgfx::createTexture(const Memory *_mem, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, uint8_t _skip = 0, TextureInfo *_info = NULL)

    Create texture from memory buffer.

    +
    Return

    Texture handle.

    +
    Attention

    C99 equivalent is bgfx_create_texture.

    -
    -

    -
    -
    Parameters
    -
      -
    • _mem[in] DDS, KTX or PVR texture data.

    • -
    • _flags[in] Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _mem: DDS, KTX or PVR texture data.

        • +
        • [in] _flags: Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        • -
        • _skip[in] Skip top level mips when parsing texture.

        • -
        • _info[out] When non-NULL is specified it returns parsed texture information.

        • +
        • [in] _skip: Skip top level mips when parsing texture.

        • +
        • [out] _info: When non-NULL is specified it returns parsed texture information.

        -
        Returns
        -

        Texture handle.

        -
    +

    -
    -TextureHandle 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)
    +
    +TextureHandle 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)

    Create 2D texture.

    Attention

    C99 equivalent is bgfx_create_texture_2d.

    -
    -

    -
    -
    Parameters
    -
      -
    • _width[in] Width.

    • -
    • _height[in] Height.

    • -
    • _hasMips[in] Indicates that texture contains full mip-map chain.

    • -
    • _numLayers[in] Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_2D_ARRAY flag is not set.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _width: Width.

        • +
        • [in] _height: Height.

        • +
        • [in] _hasMips: Indicates that texture contains full mip-map chain.

        • +
        • [in] _numLayers: Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_2D_ARRAY flag is not set.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _flags: Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        • -
        • _mem[in] Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized. When _numLayers is more than 1, expected memory layout is texture and all mips together for each array element.

        • +
        • [in] _mem: Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized. When _numLayers is more than 1, expected memory layout is texture and all mips together for each array element.

    +

    -
    -TextureHandle bgfx::createTexture2D(BackbufferRatio::Enum _ratio, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE)
    +
    +TextureHandle bgfx::createTexture2D(BackbufferRatio::Enum _ratio, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE)

    Create texture with size based on backbuffer ratio. Texture will maintain ratio if back buffer resolution changes.

    Attention

    C99 equivalent is bgfx_create_texture_2d_scaled.

    -
    -

    -
    -
    Parameters
    -
      -
    • _ratio[in] Frame buffer size in respect to back-buffer size. See: BackbufferRatio::Enum.

    • -
    • _hasMips[in] Indicates that texture contains full mip-map chain.

    • -
    • _numLayers[in] Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_2D_ARRAY flag is not set.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _ratio: Frame buffer size in respect to back-buffer size. See: BackbufferRatio::Enum.

        • +
        • [in] _hasMips: Indicates that texture contains full mip-map chain.

        • +
        • [in] _numLayers: Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_2D_ARRAY flag is not set.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _flags: Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

          @@ -7143,136 +6662,121 @@ otherwise prefer bgfx::setViewScissor.

    +

    -
    -void bgfx::updateTexture2D(TextureHandle _handle, uint16_t _layer, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const Memory *_mem, uint16_t _pitch = UINT16_MAX)
    +
    +void bgfx::updateTexture2D(TextureHandle _handle, uint16_t _layer, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const Memory *_mem, uint16_t _pitch = UINT16_MAX)

    Update 2D texture.

    Attention

    It’s valid to update only mutable texture. See bgfx::createTexture2D for more info.

    Attention

    C99 equivalent is bgfx_update_texture_2d.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _layer[in] Layers in texture array.

    • -
    • _mip[in] Mip level.

    • -
    • _x[in] X offset in texture.

    • -
    • _y[in] Y offset in texture.

    • -
    • _width[in] Width of texture block.

    • -
    • _height[in] Height of texture block.

    • -
    • _mem[in] Texture update data.

    • -
    • _pitch[in] Pitch of input image (bytes). When _pitch is set to UINT16_MAX, it will be calculated internally based on _width.

    • +
      Parameters
        +
      • [in] _handle: Texture handle.

      • +
      • [in] _layer: Layers in texture array.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _x: X offset in texture.

      • +
      • [in] _y: Y offset in texture.

      • +
      • [in] _width: Width of texture block.

      • +
      • [in] _height: Height of texture block.

      • +
      • [in] _mem: Texture update data.

      • +
      • [in] _pitch: Pitch of input image (bytes). When _pitch is set to UINT16_MAX, it will be calculated internally based on _width.

    +

    -
    -TextureHandle bgfx::createTexture3D(uint16_t _width, uint16_t _height, uint16_t _depth, bool _hasMips, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, const Memory *_mem = NULL)
    +
    +TextureHandle bgfx::createTexture3D(uint16_t _width, uint16_t _height, uint16_t _depth, bool _hasMips, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, const Memory *_mem = NULL)

    Create 3D texture.

    Attention

    C99 equivalent is bgfx_create_texture_3d.

    -
    -

    -
    -
    Parameters
    -
      -
    • _width[in] Width.

    • -
    • _height[in] Height.

    • -
    • _depth[in] Depth.

    • -
    • _hasMips[in] Indicates that texture contains full mip-map chain.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _width: Width.

        • +
        • [in] _height: Height.

        • +
        • [in] _depth: Depth.

        • +
        • [in] _hasMips: Indicates that texture contains full mip-map chain.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _flags: Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        • -
        • _mem[in] Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized.

        • +
        • [in] _mem: Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized.

    +

    -
    -void bgfx::updateTexture3D(TextureHandle _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _z, uint16_t _width, uint16_t _height, uint16_t _depth, const Memory *_mem)
    +
    +void bgfx::updateTexture3D(TextureHandle _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _z, uint16_t _width, uint16_t _height, uint16_t _depth, const Memory *_mem)

    Update 3D texture.

    Attention

    It’s valid to update only mutable texture. See bgfx::createTexture3D for more info.

    Attention

    C99 equivalent is bgfx_update_texture_3d.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _mip[in] Mip level.

    • -
    • _x[in] X offset in texture.

    • -
    • _y[in] Y offset in texture.

    • -
    • _z[in] Z offset in texture.

    • -
    • _width[in] Width of texture block.

    • -
    • _height[in] Height of texture block.

    • -
    • _depth[in] Depth of texture block.

    • -
    • _mem[in] Texture update data.

    • +
      Parameters
        +
      • [in] _handle: Texture handle.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _x: X offset in texture.

      • +
      • [in] _y: Y offset in texture.

      • +
      • [in] _z: Z offset in texture.

      • +
      • [in] _width: Width of texture block.

      • +
      • [in] _height: Height of texture block.

      • +
      • [in] _depth: Depth of texture block.

      • +
      • [in] _mem: Texture update data.

    +

    -
    -TextureHandle bgfx::createTextureCube(uint16_t _size, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, const Memory *_mem = NULL)
    +
    +TextureHandle bgfx::createTextureCube(uint16_t _size, bool _hasMips, uint16_t _numLayers, TextureFormat::Enum _format, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE, const Memory *_mem = NULL)

    Create Cube texture.

    Attention

    C99 equivalent is bgfx_create_texture_cube.

    -
    -

    -
    -
    Parameters
    -
      -
    • _size[in] Cube side size.

    • -
    • _hasMips[in] Indicates that texture contains full mip-map chain.

    • -
    • _numLayers[in] Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_CUBE_ARRAY flag is not set.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _flags[in] Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _size: Cube side size.

        • +
        • [in] _hasMips: Indicates that texture contains full mip-map chain.

        • +
        • [in] _numLayers: Number of layers in texture array. Must be 1 if caps BGFX_CAPS_TEXTURE_CUBE_ARRAY flag is not set.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _flags: Texture creation (see BGFX_TEXTURE_*.), and sampler (see BGFX_SAMPLER_*) flags. Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        • -
        • _mem[in] Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized. When _numLayers is more than 1, expected memory layout is texture and all mips together for each array element.

        • +
        • [in] _mem: Texture data. If _mem is non-NULL, created texture will be immutable. If _mem is NULL content of the texture is uninitialized. When _numLayers is more than 1, expected memory layout is texture and all mips together for each array element.

    +

    -
    -void bgfx::updateTextureCube(TextureHandle _handle, uint16_t _layer, uint8_t _side, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const Memory *_mem, uint16_t _pitch = UINT16_MAX)
    +
    +void bgfx::updateTextureCube(TextureHandle _handle, uint16_t _layer, uint8_t _side, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const Memory *_mem, uint16_t _pitch = UINT16_MAX)

    Update Cube texture.

    Attention

    It’s valid to update only mutable texture. See bgfx::createTextureCube for more info.

    Attention

    C99 equivalent is bgfx_update_texture_cube.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _layer[in] Layers in texture array.

    • -
    • _side[in] Cubemap side BGFX_CUBE_MAP_<POSITIVE or NEGATIVE>_<X, Y or Z>, where 0 is +X, 1 is -X, 2 is +Y, 3 is -Y, 4 is +Z, and 5 is -Z.

                 +----------+
      +
      Parameters
        +
      • [in] _handle: Texture handle.

      • +
      • [in] _layer: Layers in texture array.

      • +
      • [in] _side: Cubemap side BGFX_CUBE_MAP_<POSITIVE or NEGATIVE>_<X, Y or Z>, where 0 is +X, 1 is -X, 2 is +Y, 3 is -Y, 4 is +Z, and 5 is -Z.

                   +----------+
                    |-z       2|
                    | ^  +y    |
                    | |        |    Unfolded cube:
        @@ -7291,193 +6795,171 @@ otherwise prefer bgfx::setViewScissor.

      • -
      • _mip[in] Mip level.

      • -
      • _x[in] X offset in texture.

      • -
      • _y[in] Y offset in texture.

      • -
      • _width[in] Width of texture block.

      • -
      • _height[in] Height of texture block.

      • -
      • _mem[in] Texture update data.

      • -
      • _pitch[in] Pitch of input image (bytes). When _pitch is set to UINT16_MAX, it will be calculated internally based on _width.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _x: X offset in texture.

      • +
      • [in] _y: Y offset in texture.

      • +
      • [in] _width: Width of texture block.

      • +
      • [in] _height: Height of texture block.

      • +
      • [in] _mem: Texture update data.

      • +
      • [in] _pitch: Pitch of input image (bytes). When _pitch is set to UINT16_MAX, it will be calculated internally based on _width.

    +

    -
    -uint32_t bgfx::readTexture(TextureHandle _handle, void *_data, uint8_t _mip = 0)
    +
    +uint32_t bgfx::readTexture(TextureHandle _handle, void *_data, uint8_t _mip = 0)

    Read back texture content.

    +
    Return

    Frame number when the result will be available. See: bgfx::frame.

    +
    Attention

    Texture must be created with BGFX_TEXTURE_READ_BACK flag.

    Attention

    Availability depends on: BGFX_CAPS_TEXTURE_READ_BACK.

    Attention

    C99 equivalent is bgfx_read_texture.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] Texture handle.

    • -
    • _data[in] Destination buffer.

    • -
    • _mip[in] Mip level.

    • +
      Parameters
        +
      • [in] _handle: Texture handle.

      • +
      • [in] _data: Destination buffer.

      • +
      • [in] _mip: Mip level.

      -
      Returns
      -

      Frame number when the result will be available. See: bgfx::frame.

      -
    +

    -
    -void *bgfx::getDirectAccessPtr(TextureHandle _handle)
    +
    +void *bgfx::getDirectAccessPtr(TextureHandle _handle)

    Returns texture direct access pointer.

    +
    Return

    Pointer to texture memory. If returned pointer is NULL direct access is not available for this texture. If pointer is UINTPTR_MAX sentinel value it means texture is pending creation. Pointer returned can be cached and it will be valid until texture is destroyed.

    +
    Attention

    Availability depends on: BGFX_CAPS_TEXTURE_DIRECT_ACCESS. This feature is available on GPUs that have unified memory architecture (UMA) support.

    Attention

    C99 equivalent is bgfx_get_direct_access_ptr.

    +
    Parameters
      +
    • [in] _handle: Texture handle.

    • +
    +

    -
    -
    Parameters
    -

    _handle[in] Texture handle.

    -
    -
    Returns
    -

    Pointer to texture memory. If returned pointer is NULL direct access is not available for this texture. If pointer is UINTPTR_MAX sentinel value it means texture is pending creation. Pointer returned can be cached and it will be valid until texture is destroyed.

    -
    -
    -
    -void bgfx::destroy(TextureHandle _handle)
    +
    +void bgfx::destroy(TextureHandle _handle)

    Destroy texture.

    Attention

    C99 equivalent is bgfx_destroy_texture.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Texture handle.

    +
    Parameters
      +
    • [in] _handle: Texture handle.

    • +
    +

    - -
    +
    +

    Frame Buffers

    -
    -FrameBufferHandle bgfx::createFrameBuffer(uint16_t _width, uint16_t _height, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)
    +
    +FrameBufferHandle bgfx::createFrameBuffer(uint16_t _width, uint16_t _height, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)

    Create frame buffer (simple).

    +
    Return

    Handle to frame buffer object.

    +
    Attention

    C99 equivalent is bgfx_create_frame_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _width[in] Texture width.

    • -
    • _height[in] Texture height.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _textureFlags[in] Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _width: Texture width.

        • +
        • [in] _height: Texture height.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _textureFlags: Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        -
        Returns
        -

        Handle to frame buffer object.

        -
    +

    -
    -FrameBufferHandle bgfx::createFrameBuffer(BackbufferRatio::Enum _ratio, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)
    +
    +FrameBufferHandle bgfx::createFrameBuffer(BackbufferRatio::Enum _ratio, TextureFormat::Enum _format, uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP)

    Create frame buffer with size based on backbuffer ratio. Frame buffer will maintain ratio if back buffer resolution changes.

    +
    Return

    Handle to frame buffer object.

    +
    Attention

    C99 equivalent is bgfx_create_frame_buffer_scaled.

    -
    -

    -
    -
    Parameters
    -
      -
    • _ratio[in] Frame buffer size in respect to back-buffer size. See: BackbufferRatio::Enum.

    • -
    • _format[in] Texture format. See: TextureFormat::Enum.

    • -
    • _textureFlags[in] Default texture sampling mode is linear, and wrap mode is repeat.

        +
        Parameters
          +
        • [in] _ratio: Frame buffer size in respect to back-buffer size. See: BackbufferRatio::Enum.

        • +
        • [in] _format: Texture format. See: TextureFormat::Enum.

        • +
        • [in] _textureFlags: Default texture sampling mode is linear, and wrap mode is repeat.

          • BGFX_SAMPLER_[U/V/W]_[MIRROR/CLAMP] - Mirror or clamp to edge wrap mode.

          • BGFX_SAMPLER_[MIN/MAG/MIP]_[POINT/ANISOTROPIC] - Point or anisotropic sampling.

        -
        Returns
        -

        Handle to frame buffer object.

        -
    +

    -
    -FrameBufferHandle bgfx::createFrameBuffer(uint8_t _num, const TextureHandle *_handles, bool _destroyTextures = false)
    +
    +FrameBufferHandle bgfx::createFrameBuffer(uint8_t _num, const TextureHandle *_handles, bool _destroyTextures = false)

    Create MRT frame buffer from texture handles (simple).

    +
    Return

    Handle to frame buffer object.

    +
    Attention

    C99 equivalent is bgfx_create_frame_buffer_from_handles.

    +
    Parameters
      +
    • [in] _num: Number of texture attachments.

    • +
    • [in] _handles: Texture attachments.

    • +
    • [in] _destroyTextures: If true, textures will be destroyed when frame buffer is destroyed.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _num[in] Number of texture attachments.

    • -
    • _handles[in] Texture attachments.

    • -
    • _destroyTextures[in] If true, textures will be destroyed when frame buffer is destroyed.

    • -
    -
    -
    Returns
    -

    Handle to frame buffer object.

    -
    -
    -
    -FrameBufferHandle bgfx::createFrameBuffer(void *_nwh, uint16_t _width, uint16_t _height, TextureFormat::Enum _format = TextureFormat::Count, TextureFormat::Enum _depthFormat = TextureFormat::Count)
    +
    +FrameBufferHandle bgfx::createFrameBuffer(void *_nwh, uint16_t _width, uint16_t _height, TextureFormat::Enum _format = TextureFormat::Count, TextureFormat::Enum _depthFormat = TextureFormat::Count)

    Create frame buffer for multiple window rendering.

    +
    Return

    Handle to frame buffer object.

    +
    Remark

    Frame buffer cannot be used for sampling.

    Attention

    C99 equivalent is bgfx_create_frame_buffer_from_nwh.

    -
    -

    -
    -
    Parameters
    -
      -
    • _nwh[in] OS’ target native window handle.

    • -
    • _width[in] Window back buffer width.

    • -
    • _height[in] Window back buffer height.

    • -
    • _format[in] Window back buffer color format.

    • -
    • _depthFormat[in] Window back buffer depth format.

    • +
      Parameters
        +
      • [in] _nwh: OS’ target native window handle.

      • +
      • [in] _width: Window back buffer width.

      • +
      • [in] _height: Window back buffer height.

      • +
      • [in] _format: Window back buffer color format.

      • +
      • [in] _depthFormat: Window back buffer depth format.

      -
      Returns
      -

      Handle to frame buffer object.

      -
    +

    -
    -struct bgfx::Attachment
    +
    +struct bgfx::Attachment

    Frame buffer texture attachment info.

    Attention

    C99 equivalent is bgfx_attachment_t.

    @@ -7485,61 +6967,61 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Functions

    +

    Public Functions

    -
    -void init(TextureHandle _handle, Access::Enum _access = Access::Write, uint16_t _layer = 0, uint16_t _numLayers = 1, uint16_t _mip = 0, uint8_t _resolve = BGFX_RESOLVE_AUTO_GEN_MIPS)
    +
    +void init(TextureHandle _handle, Access::Enum _access = Access::Write, uint16_t _layer = 0, uint16_t _numLayers = 1, uint16_t _mip = 0, uint8_t _resolve = BGFX_RESOLVE_AUTO_GEN_MIPS)

    Init attachment.

    -
    -
    Parameters
    -
      -
    • _handle[in] Render target texture handle.

    • -
    • _access[in] Access. See Access::Enum.

    • -
    • _layer[in] Cubemap side or depth layer/slice to use.

    • -
    • _numLayers[in] Number of texture layer/slice(s) in array to use.

    • -
    • _mip[in] Mip level.

    • -
    • _resolve[in] Resolve flags. See: BGFX_RESOLVE_*

    • +

      +
      Parameters
        +
      • [in] _handle: Render target texture handle.

      • +
      • [in] _access: Access. See Access::Enum.

      • +
      • [in] _layer: Cubemap side or depth layer/slice to use.

      • +
      • [in] _numLayers: Number of texture layer/slice(s) in array to use.

      • +
      • [in] _mip: Mip level.

      • +
      • [in] _resolve: Resolve flags. See: BGFX_RESOLVE_*

      +

    -

    Public Members

    +

    Public Members

    -
    -Access::Enum access
    +
    +Access::Enum access

    Attachment access. See Access::Enum.

    -
    -TextureHandle handle
    +
    +TextureHandle handle

    Render target texture handle.

    -
    -uint16_t mip
    +
    +uint16_t mip

    Mip level.

    -
    -uint16_t layer
    +
    +uint16_t layer

    Cubemap side or depth layer/slice to use.

    -
    -uint16_t numLayers
    +
    +uint16_t numLayers

    Number of texture layer/slice(s) in array to use.

    -
    -uint8_t resolve
    +
    +uint8_t resolve

    Resolve flags. See: BGFX_RESOLVE_*

    @@ -7547,188 +7029,164 @@ otherwise prefer bgfx::setViewScissor.

    -
    -FrameBufferHandle bgfx::createFrameBuffer(uint8_t _num, const Attachment *_attachment, bool _destroyTextures = false)
    +
    +FrameBufferHandle bgfx::createFrameBuffer(uint8_t _num, const Attachment *_attachment, bool _destroyTextures = false)

    Create MRT frame buffer from texture handles with specific layer and mip level.

    +
    Return

    Handle to frame buffer object.

    +
    Attention

    C99 equivalent is bgfx_create_frame_buffer_from_attachment.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of texture attachments.

    • -
    • _attachment[in] Attachment texture info. See: bgfx::Attachment.

    • -
    • _destroyTextures[in] If true, textures will be destroyed when frame buffer is destroyed.

    • +
      Parameters
        +
      • [in] _num: Number of texture attachments.

      • +
      • [in] _attachment: Attachment texture info. See: bgfx::Attachment.

      • +
      • [in] _destroyTextures: If true, textures will be destroyed when frame buffer is destroyed.

      -
      Returns
      -

      Handle to frame buffer object.

      -
    +

    -
    -TextureHandle bgfx::getTexture(FrameBufferHandle _handle, uint8_t _attachment = 0)
    +
    +TextureHandle bgfx::getTexture(FrameBufferHandle _handle, uint8_t _attachment = 0)

    Obtain texture handle of frame buffer attachment.

    +
    Return

    Returns invalid texture handle if attachment index is not correct, or frame buffer is created with native window handle.

    +
    Attention

    C99 equivalent is bgfx_get_texture.

    +
    Parameters
      +
    • [in] _handle: Frame buffer handle.

    • +
    • [in] _attachment: Frame buffer attachment index.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _handle[in] Frame buffer handle.

    • -
    • _attachment[in] Frame buffer attachment index.

    • -
    -
    -
    Returns
    -

    Returns invalid texture handle if attachment index is not correct, or frame buffer is created with native window handle.

    -
    -
    -
    -void bgfx::setName(FrameBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)
    +
    +void bgfx::setName(FrameBufferHandle _handle, const char *_name, int32_t _len = INT32_MAX)

    Set frame buffer debug name.

    Attention

    C99 equivalent is bgfx_set_frame_buffer_name.

    -
    -

    -
    -
    Parameters
    -
      -
    • _handle[in] frame buffer handle.

    • -
    • _name[in] frame buffer name.

    • -
    • _len[in] frame buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    • +
      Parameters
        +
      • [in] _handle: frame buffer handle.

      • +
      • [in] _name: frame buffer name.

      • +
      • [in] _len: frame buffer name length (if length is INT32_MAX, it’s expected that _name is zero terminated string.

    +

    -
    -void bgfx::destroy(FrameBufferHandle _handle)
    +
    +void bgfx::destroy(FrameBufferHandle _handle)

    Destroy frame buffer.

    Attention

    C99 equivalent is bgfx_destroy_frame_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Frame buffer handle.

    +
    Parameters
      +
    • [in] _handle: Frame buffer handle.

    • +
    +

    - -
    +
    +

    Instance Buffer

    -
    -uint32_t bgfx::getAvailInstanceDataBuffer(uint32_t _num, uint16_t _stride)
    +
    +uint32_t bgfx::getAvailInstanceDataBuffer(uint32_t _num, uint16_t _stride)

    Returns number of requested or maximum available instance buffer slots.

    Attention

    C99 equivalent is bgfx_get_avail_instance_data_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _num[in] Number of required instances.

    • -
    • _stride[in] Stride per instance.

    • +
      Parameters
        +
      • [in] _num: Number of required instances.

      • +
      • [in] _stride: Stride per instance.

    +

    -
    -void bgfx::allocInstanceDataBuffer(InstanceDataBuffer *_idb, uint32_t _num, uint16_t _stride)
    +
    +void bgfx::allocInstanceDataBuffer(InstanceDataBuffer *_idb, uint32_t _num, uint16_t _stride)

    Allocate instance data buffer.

    Attention

    C99 equivalent is bgfx_alloc_instance_data_buffer.

    -
    -

    -
    -
    Parameters
    -
      -
    • _idb[out] InstanceDataBuffer structure is filled and is valid for duration of frame, and it can be reused for multiple draw calls.

    • -
    • _num[in] Number of instances.

    • -
    • _stride[in] Instance stride. Must be multiple of 16.

    • +
      Parameters
        +
      • [out] _idb: InstanceDataBuffer structure is filled and is valid for duration of frame, and it can be reused for multiple draw calls.

      • +
      • [in] _num: Number of instances.

      • +
      • [in] _stride: Instance stride. Must be multiple of 16.

    +

    - -
    +
    +

    Indirect Buffer

    -
    -IndirectBufferHandle bgfx::createIndirectBuffer(uint32_t _num)
    +
    +IndirectBufferHandle bgfx::createIndirectBuffer(uint32_t _num)

    Create draw indirect buffer.

    +
    Return

    Indirect buffer handle.

    +
    Attention

    C99 equivalent is bgfx_create_indirect_buffer.

    +
    Parameters
      +
    • [in] _num: Number of indirect calls.

    • +
    +

    -
    -
    Parameters
    -

    _num[in] Number of indirect calls.

    -
    -
    Returns
    -

    Indirect buffer handle.

    -
    -
    -
    -void bgfx::destroy(IndirectBufferHandle _handle)
    +
    +void bgfx::destroy(IndirectBufferHandle _handle)

    Destroy draw indirect buffer.

    Attention

    C99 equivalent is bgfx_destroy_indirect_buffer.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Indirect buffer handle.

    +
    Parameters
      +
    • [in] _handle: Indirect buffer handle.

    • +
    +

    - -
    +
    +

    Occlusion Query

    -
    -OcclusionQueryHandle bgfx::createOcclusionQuery()
    +
    +OcclusionQueryHandle bgfx::createOcclusionQuery()

    Create occlusion query.

    +
    Return

    Handle to occlusion query object.

    +
    Attention

    C99 equivalent is bgfx_create_occlusion_query.

    -
    -
    Returns
    -

    Handle to occlusion query object.

    -
    -
    -
    -struct bgfx::OcclusionQueryResult
    +
    +struct bgfx::OcclusionQueryResult

    Occlusion query result.

    Attention

    C99 equivalent is bgfx_occlusion_query_result_t.

    @@ -7736,33 +7194,33 @@ otherwise prefer bgfx::setViewScissor.

    -

    Public Types

    +

    Public Types

    -
    -enum Enum
    +
    +enum Enum

    Occlusion query results:

    Values:

    -
    -enumerator Invisible
    +
    +enumerator Invisible

    Query failed test.

    -
    -enumerator Visible
    +
    +enumerator Visible

    Query passed test.

    -
    -enumerator NoResult
    +
    +enumerator NoResult

    Query result is not available yet.

    -
    -enumerator Count
    +
    +enumerator Count
    @@ -7771,67 +7229,70 @@ otherwise prefer bgfx::setViewScissor.

    -
    -OcclusionQueryResult::Enum bgfx::getResult(OcclusionQueryHandle _handle, int32_t *_result = NULL)
    +
    +OcclusionQueryResult::Enum bgfx::getResult(OcclusionQueryHandle _handle, int32_t *_result = NULL)

    Retrieve occlusion query result from previous frame.

    +
    Return

    Occlusion query result.

    +
    Attention

    C99 equivalent is bgfx_get_result.

    +
    Parameters
      +
    • [in] _handle: Handle to occlusion query object.

    • +
    • [out] _result: Number of pixels that passed test. This argument can be NULL if result of occlusion query is not needed.

    • +
    +

    -
    -
    Parameters
    -
      -
    • _handle[in] Handle to occlusion query object.

    • -
    • _result[out] Number of pixels that passed test. This argument can be NULL if result of occlusion query is not needed.

    • -
    -
    -
    Returns
    -

    Occlusion query result.

    -
    -
    -
    -void bgfx::destroy(OcclusionQueryHandle _handle)
    +
    +void bgfx::destroy(OcclusionQueryHandle _handle)

    Destroy occlusion query.

    Attention

    C99 equivalent is bgfx_destroy_occlusion_query.

    -
    -

    -
    -
    Parameters
    -

    _handle[in] Handle to occlusion query object.

    +
    Parameters
      +
    • [in] _handle: Handle to occlusion query object.

    • +
    +

    - - - +
    +
    +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/build.html b/build.html index 70e4d678a..b839f67cc 100644 --- a/build.html +++ b/build.html @@ -3,10 +3,9 @@ - - - - + + + Building — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -163,8 +157,6 @@ - -
    - -
    + +

    Linux

    sudo apt-get install libgl1-mesa-dev x11proto-core-dev libx11-dev
     
    -
    -
    + +

    Windows

    Windows users download GnuWin32 utilities:

    @@ -264,14 +256,14 @@
  • http://gnuwin32.sourceforge.net/packages/libintl.htm

  • -
    - -
    + + +

    Build

    bgfx uses GENie - Project generator tool to generate project files for various platform. Binaries for Linux, OSX, and Windows are included in bx repository.

    -
    +

    General

    cd bgfx
     make
    @@ -288,8 +280,8 @@ directory structure. Deleting .build directory at any time is safe.

    android-release, etc.
    -
    -
    +
    +

    Windows

    Visual Studio 2017 command line:

    make vs2017-release64
    @@ -299,8 +291,8 @@ directory structure. Deleting .build directory at any time is safe.

    start .build/projects/vs2017/bgfx.sln
     
    -
    -
    + +

    Xcode

    Xcode command line:

    make osx-release
    @@ -322,14 +314,14 @@ configuration file, it has to be set manually for each example project:

  • Check “Use custom working directory” and enter following path: ${PROJECT_DIR}/../../../examples/runtime.

  • -
    -
    + +

    Linux

    make linux-release64
     
    -
    -
    + +

    WinRT / UWP

    ..\bx\tools\bin\windows\genie --vs=winstore100 vs2017
     
    @@ -339,9 +331,9 @@ configuration file, it has to be set manually for each example project:

    Note

    Shaders will need to be compiled with the appropriate target profile for your platform.

    -
    - -
    + + +

    Amalgamated Build

    For ease of integration to other build system bgfx library can be built with single .cpp file. It’s only necessary to build @@ -349,15 +341,15 @@ with single .cpp file. It’s only necessary to build (for OSX/iOS use src/amalgamated.mm instead) inside different build system.

    -
    -
    + +

    Tools

    To build bgfx project files for tools, use --with-tools option:

    ..\bx\tools\bin\windows\genie --with-tools vs2017
     
    -
    -
    + +

    Alternative build systems

    CMake

    @@ -373,36 +365,44 @@ instead) inside different build system.

    https://github.com/floooh/fips#fips

    Conan package https://github.com/firefalcom/bgfx-conan

    -
    -
    + +

    Minimal example without bgfx’ example harness

    This project demonstrates minimal amount of code needed to integrate bgfx with GLFW, but without any of existing bgfx example harness. It also demonstrates how to build bgfx with alternative build system.

    https://github.com/jpcy/bgfx-minimal-example

    -
    - + +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/examples.html b/examples.html index 1d3502de4..1b38ce9a5 100644 --- a/examples.html +++ b/examples.html @@ -3,10 +3,9 @@ - - - - + + + Examples — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -146,6 +140,7 @@
  • 43-denoise
  • 44-sss
  • 45-bokeh
  • +
  • 46-fsr
  • API Reference
  • @@ -192,8 +187,6 @@ - -
      @@ -205,7 +198,7 @@
    • - +
    • @@ -217,28 +210,28 @@
      -
      +

      Examples

      Most of the examples require shader/texture/mesh data to be loaded. When running examples your current directory should be examples/runtime.

      <bgfx_path>/examples/runtime $ ../../.build/<config>/bin/example-00-helloworldDebug
       
      -
      +

      00-helloworld

      Initialization and debug text.

      -
      +
      example-00-helloworld -
      -
      -
      +
      +
      +

      01-cubes

      Rendering simple static mesh.

      -
      +
      example-01-cubes -
      - -
      +
      +
      +

      02-metaballs

      Rendering with transient buffers and embedding shaders.

      @@ -330,101 +323,101 @@ running examples your current directory should be examples/runtime.

      }; }; - -
      +
      +

      03-raymarch

      Updating shader uniforms.

      -
      +
      example-03-raymarch -
      - -
      +
      +
      +

      04-mesh

      Loading meshes.

      -
      +
      example-04-mesh -
      - -
      +
      +
    +

    05-instancing

    Geometry instancing.

    -
    +
    example-05-instancing -
    - -
    +
    + +

    06-bump

    Loading textures.

    -
    +
    example-06-bump -
    - -
    +
    + +

    07-callback

    Implementing application specific callbacks for taking screen shots, caching OpenGL binary shaders, and video capture.

    - -
    +
    +

    08-update

    Updating textures.

    - -
    +
    +

    09-hdr

    Using multiple views with frame buffers, and view order remapping.

    -
    +
    example-09-hdr -
    - -
    +
    + +

    10-font

    Use the font system to display text and styled text.

    -
    +
    example-10-font -
    - -
    +
    + +

    11-fontsdf

    Use a single distance field font to render text of various size.

    -
    +
    example-11-fontsdf -
    - -
    +
    + +

    12-lod

    Mesh LOD transitions.

    -
    +
    example-12-lod -
    - -
    +
    + +

    13-stencil

    Stencil reflections and shadows.

    -
    +
    example-13-stencil -
    - -
    +
    + +

    14-shadowvolumes

    Shadow volumes.

    -
    +
    example-14-shadowvolumes -
    - -
    +
    + + + +

    16-shadowmaps

    -
    +
    example-16-shadowmaps -
    - -
    +
    + +

    17-drawstress

    -
    +

    60Hz

    Draw stress is CPU stress test to show what is the maximimum number of draw calls while maintaining 60Hz frame rate. bgfx currently has default @@ -891,8 +884,8 @@ changing BGFX_CONFI (on Windows), and layout.frame_rate 500.

  • Chrome 33 command line option: --disable-gpu-vsync.

  • -
    -
    +
    +

    30Hz (test for browsers)

    By default browsers are using vsync, and don’t have option to turn it off programatically.

    @@ -1022,108 +1015,108 @@ off programatically.

    - - -
    +
    + +

    18-ibl

    Image-based lighting.

    -
    +
    example-18-ibl -
    - -
    +
    + +

    19-oit

    Weighted, Blended Order-Independent Transparency

    -
    +
    example-19-oit -
    - -
    +
    + +

    20-nanovg

    NanoVG is small antialiased vector graphics rendering library.

    -
    +
    example-20-nanovg -
    - -
    +
    + +

    21-deferred

    MRT rendering and deferred shading.

    -
    +
    example-21-deferred -
    - -
    +
    + +

    22-windows

    Rendering into multiple windows.

    - -
    +
    +

    23-vectordisplay

    Rendering lines as oldschool vectors.

    -
    +
    example-23-vectordisplay -
    - -
    +
    + +

    24-nbody

    N-body simulation with compute shaders using buffers.

    -
    +
    example-24-nbody -
    - -
    +
    + +

    25-c99

    Initialization and debug text with C99 API.

    - -
    +
    +

    26-occlusion

    Using occlusion query for conditional rendering.

    -
    +
    example-26-occlusion -
    - -
    +
    + +

    27-terrain

    Terrain painting example.

    -
    +
    example-27-terrain -
    - -
    +
    + +

    28-wireframe

    Drawing wireframe mesh.

    -
    +
    example-28-wireframe -
    - -
    +
    + +

    29-debugdraw

    Debug draw.

    -
    +
    example-29-debugdraw -
    - -
    +
    + +

    30-picking

    Mouse picking via GPU readback.

    -
    +
    example-30-picking -
    - -
    +
    + +

    31-rsm

    Global Illumination with Reflective Shadow Map.

    -
    +
    example-31-rsm -
    - -
    +
    + +

    32-particles

    Particles.

    -
    +
    example-32-particles -
    - -
    +
    + +

    33-pom

    Parallax occlusion mapping.

    @@ -1132,32 +1125,32 @@ off programatically.

    -
    +
    example-33-pom -
    - -
    +
    + +

    34-mvs

    Multiple vertex streams.

    -
    +
    example-34-mvs -
    - -
    +
    + +

    35-dynamic

    Dynamic buffers update.

    -
    +
    example-35-dynamic -
    - -
    +
    + +

    36-sky

    Perez dynamic sky model.

    -
    +
    example-36-sky -
    - -
    +
    + +

    37-gpudrivenrendering

    GPU-Driven Rendering.

    @@ -1168,11 +1161,11 @@ off programatically.

    -
    +
    example-37-gpudrivenrendering -
    - -
    +
    + +

    38-bloom

    Bloom.

    @@ -1181,11 +1174,11 @@ off programatically.

    -
    +
    example-38-bloom -
    - -
    +
    + +

    39-assao

    Adaptive Screen Space Ambient Occlusion.

    @@ -1194,18 +1187,18 @@ off programatically.

    -
    +
    example-39-assao -
    - -
    +
    + +

    40-svt

    Sparse Virtual Textures.

    -
    +
    example-40-svt -
    - -
    +
    + +

    41-tess

    Adaptive GPU Tessellation with Compute Shaders

    @@ -1214,11 +1207,11 @@ off programatically.

    -
    +
    example-41-tess -
    - -
    +
    + +

    42-bunnylod

    Simple Polygon Reduction

    @@ -1228,11 +1221,11 @@ off programatically.

    -
    +
    example-42-bunnylod -
    - -
    +
    + +

    43-denoise

    Denoise

    @@ -1243,18 +1236,18 @@ off programatically.

    -
    +
    example-43-denoise -
    - -
    +
    + +

    44-sss

    Screen-Space Shadows

    -
    +
    example-44-sss -
    - -
    +
    + +

    45-bokeh

    Bokeh Depth of Field

    @@ -1263,32 +1256,48 @@ off programatically.

    -
    +
    example-45-bokeh -
    - - +
    + +
    +

    46-fsr

    +

    AMD FidelityFX Super Resolution - high-quality solution for producing high resolution frames +from lower resolution inputs.

    +
    +example-46-fsr +
    +
    +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/genindex.html b/genindex.html index e8691213b..302f75fe7 100644 --- a/genindex.html +++ b/genindex.html @@ -3,9 +3,9 @@ - + - + Index — bgfx 1.0 documentation @@ -13,28 +13,23 @@ - - - - - - + @@ -54,7 +49,7 @@ - bgfx + bgfx @@ -137,8 +132,6 @@ - -
    +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/index.html b/index.html index 5e6f8500e..7a827d954 100644 --- a/index.html +++ b/index.html @@ -3,10 +3,9 @@ - - - - + + + Documentation — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -56,7 +50,7 @@ - bgfx + bgfx @@ -139,8 +133,6 @@ - -
    -
    +

    Contents

  • API Reference
      @@ -355,28 +348,35 @@ licensed under permissive BSD-2 clause open source license.

  • -
    - +
    +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/internals.html b/internals.html index e9a555449..3439e737a 100644 --- a/internals.html +++ b/internals.html @@ -3,10 +3,9 @@ - - - - + + + Internals — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -151,8 +145,6 @@ - -
      @@ -164,7 +156,7 @@
    • - +
    • @@ -176,9 +168,9 @@
      -
      +

      Internals

      -
      +

      Sort based draw call bucketing

      bgfx is using sort-based draw call bucketing. This means that submission order doesn’t necessarily match the rendering order, but on the low-level they will be sorted and ordered correctly. On the high level bgfx uses declarative API and internal sorting allows more optimal way of submitting draw calls for all passes at one place, and on the low-level this allows better optimization of rendering order. This sometimes creates undesired results usually for GUI rendering, where draw order should usually match submit order. bgfx provides way to enable sequential rendering for these cases (see bgfx::setViewMode).

      @@ -186,59 +178,67 @@
    • More detailed description of sort-based draw call bucketing can be found at: Order your graphics draw calls around!

    - -
    + +

    API and render thread

    API thread is thread from which bgfx::init is called. Once bgfx::init is called on thread, internally bgfx assumes that all API calls will be called from the same thread with exception of Resource, View, and Encoder API.

    Render thread from where internal rendering bgfx::renderFrame is called. On most of OS’ it’s required that this call be called on thread that OS created when executing process (some refer to this thread as “main” thread, or thread where main function is called).

    When bgfx is compiled with option BGFX_CONFIG_MULTITHREADED=1 (default is on) bgfx::renderFrame can be called by user. It’s required to be called before bgfx::init from thread that will be used as render thread. If both bgfx::renderFrame and bgfx::init are called from the same thread, bgfx will switch to execute in single threaded mode, and calling bgfx::renderFrame is not required, since it will be called automatically during bgfx::frame call.

    -
    -
    + +

    Resource API

    Any API call starting with bgfx::create*, bgfx::destroy*, bgfx::update*, bgfx::alloc* is considered part of resource API. Internally resource API calls are guarded by mutex. There is no limit of number of threads that can call resource API simultaneously. Calling any resource API is infrequent, and functions are cheap since most of work with resource is done at later point on render thread.

    -
    -
    + +

    View API

    Any API call starting with bgfx::setView* is considered part of view API. View API is not designed to be thread safe at all since all views are independentent from each other. Calling any view API for different views from different threads is safe. What’s not safe is to update the same view from multiple threads. This will lead to undefined behavior. Only view API that has to be set before any draw calls are issued is view mode bgfx::setViewMode. Internal encoder requires view mode to select sort key encoding and if user changes view mode after submit it will cause incorrect sort behavior within the view.

    -
    -
    + +

    Encoder API

    Encoder API can be obtained by calling bgfx::begin. bgfx by default allows 8 simultaneous threads to use encoders. This can be configured by changing Limits.maxEncoders init option of bgfx::Init structure.

    -
    -
    + +

    Customization

    By default each platform has sane default values. For example on Windows default renderer is DirectX, on Linux it is OpenGL, and on OSX it’s Metal. On Windows platform almost all rendering backends are available. For OpenGL ES on desktop you can find more information at:- OpenGL ES 2.0 and EGL on desktop

    If you’re targeting specific mobile hardware, you can find GLES support in their official SDKs: Adreno SDK, Mali SDK, PowerVR SDK.

    All configuration settings are located inside src/config.h.

    Every BGFX_CONFIG_* setting can be changed by passing defines thru compiler switches. For example setting preprocessor define BGFX_CONFIG_RENDERER_OPENGL=1 will change backend renderer to OpenGL 2.1. on Windows. Since rendering APIs are platform specific, this obviously won’t work nor make sense in all cases.

    -
    +

    Options

    BGFX_CONFIG_MULTITHREADED is used to enable/disable threading support inside bgfx. By default set to 1 on all platforms that support threading.

    -
    -
    - + + +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/license.html b/license.html index d369d401f..3a9fa1c72 100644 --- a/license.html +++ b/license.html @@ -3,10 +3,9 @@ - - - - + + + License — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -56,7 +50,7 @@ - bgfx + bgfx @@ -157,8 +151,6 @@ - -
    - -
    + + -
    -
    + +

    fcpp (BSD)

    Frexx C preprocessor

    @@ -242,24 +234,24 @@ directory.

  • https://github.com/bagder/fcpp

  • -
    -
    + +

    Forsyth Triangle Order Optimizer (Public Domain)

    -
    -
    + +
    -
    + +

    glsl-optimizer (MIT)

    GLSL optimizer based on Mesa’s GLSL compiler. Used in Unity for mobile shader optimization.

    @@ -268,8 +260,8 @@ shader optimization.

  • https://github.com/aras-p/glsl-optimizer

  • -
    -
    + +

    NanoVG (ZLIB)

    NanoVG is small antialiased vector graphics rendering library.

    @@ -277,8 +269,8 @@ shader optimization.

  • https://github.com/memononen/nanovg

  • -
    -
    + +

    ImGui (MIT)

    Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.

    @@ -287,8 +279,8 @@ dependencies.

  • https://github.com/ocornut/imgui

  • -
    -
    + +

    SDF (MIT)

    Sweep-and-update Euclidean distance transform of an antialised image for contour texturing.

    @@ -297,25 +289,25 @@ contour texturing.

  • https://github.com/memononen/SDF

  • -
    -
    + +

    stb (Public Domain)

    -
    -
    + +

    Vertex Cache Optimised Index Buffer Compression (BSD)

    -
    - -
    + + + -
    - + +
    + +

    - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

    + diff --git a/objects.inv b/objects.inv index d3c84cac962197f68f7078308aee77c2defbb2b2..71b86094ebaaa2bd8f1a97abf97591ead09b6c16 100644 GIT binary patch delta 26729 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 JJp`wMNh;%Fp=AI7 delta 26662 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 - - - - + + + Overview — bgfx 1.0 documentation @@ -14,28 +13,23 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -163,8 +157,6 @@ - -
      @@ -176,7 +168,7 @@
    • - +
    • @@ -188,16 +180,16 @@
      -
      +

      Overview

      -
      +

      What is it?

      Cross-platform, graphics API agnostic, “Bring Your Own Engine/Framework” style rendering library, licensed under permissive BSD-2 clause open source license.

      -

      +

      Supported rendering backends

      • Direct3D 9

      • @@ -214,8 +206,8 @@ licensed under permissive BSD-2 clause open source license.

      • WebGL 2.0

      • WebGPU/Dawn (experimental)

      -
      -
      +
      +

      Supported Platforms

      • Android (14+, ARM, x86, MIPS)

      • @@ -230,16 +222,16 @@ licensed under permissive BSD-2 clause open source license.

      • Windows (XP, Vista, 7, 8, 10)

      • UWP (Universal Windows, Xbox One)

      -
      -
      +
      +

      Supported Compilers

      • Clang 3.3 and above

      • GCC 5 and above

      • vs2017 and above

      -
      -
      +
      +

      Supported Languages

      - -
      +
      + +

      Contact

        @@ -274,11 +266,11 @@ licensed under permissive BSD-2 clause open source license.

      • Twitter @bkaradzic

      - - -
      +
      +
      +

      Debugging and Profiling

      -
      +

      RenderDoc

      Loading of RenderDoc is integrated in bgfx when using DX11 or OpenGL renderer. You can drop in renderdoc.dll from RenderDoc distribution @@ -289,16 +281,16 @@ initialization. This allows frame capture at any time by pressing

      RenderDoc How do I …? documentation.

      Shader debugging with RenderDoc and MSVC.

      -
      -
      +
      +

      IntelGPA

      Right click Intel GPA Monitor tray icon, choose preferences, check “Auto-detect launched applications” option. Find InjectionList.txt in GPA directory and add examples-* to the list.

      Download: IntelGPA

      - -
      +
      +

      Other Debuggers and Profilers

      @@ -463,9 +455,9 @@ in GPA directory and add

      RGP (Radeon GPU Profiler)

    • vogl

    • - - -
      + + +

      SDL, GLFW, etc.

      It is possible to use bgfx with SDL, GLFW and similar cross platform windowing libraries. The main requirement is that windowing library @@ -489,8 +481,8 @@ Each platform has rules about where renderer can be and how multithreading inter with context/device. To disable multithreaded render use BGFX_CONFIG_MULTITHREADED=0 preprocessor define.

      -
      -
      + +

      Getting Involved

      Everyone is welcome to contribute to bgfx by submitting bug reports, testing on different platforms, writing examples (see ideas), @@ -500,7 +492,7 @@ improving documentation, profiling and optimizing, etc.

      When contributing to the bgfx project you must agree to the BSD 2-clause licensing terms.

      -
      +

      Contributors

      Chrnonological order:

      @@ -590,38 +582,47 @@ bindings.

      43-denoise, 44-sss, and 45-bokeh example.

      +
    • Richard Schubert (@Hemofektik) - 46-fsr example.

    • and others

      -
      -
      + +

      Repository visualization

      -

      -
      - +

      + +
      + +

      - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

      + diff --git a/search.html b/search.html index 31a8354bb..7a4b1a69c 100644 --- a/search.html +++ b/search.html @@ -3,9 +3,9 @@ - + - + Search — bgfx 1.0 documentation @@ -13,18 +13,13 @@ - - - - - - + @@ -57,7 +51,7 @@ - bgfx + bgfx @@ -150,8 +144,6 @@ - -
        @@ -163,7 +155,7 @@
      • - +
      • @@ -175,9 +167,9 @@
        -
        +

        Tools

        -
        +

        Geometry Compiler (geometryc)

        Converts Wavefront .obj, or glTF 2.0 mesh file to format optimal for using with bgfx.

        Usage:

        @@ -260,12 +252,12 @@ More steps slower calculation.

        -
        -
        +
        +

        Geometry Viewer (geometryv)

        Geometry viewer.

        -
        -
        +
        +

        Shader Compiler (shaderc)

        bgfx cross-platform shader language is based on GLSL syntax. It’s uses ANSI C preprocessor to transform GLSL like language syntax into HLSL. @@ -327,7 +319,7 @@ macros.

        Do not process shader. No preprocessor, and no glsl-optimizer (GLSL only).

        --type <type>
        -

        Shader type (vertex, fragment)

        +

        Shader type (vertex, fragment, compute)

        --varyingdef <file path>

        Path to varying.def.sc file.

        @@ -355,13 +347,13 @@ macros.

        -
        +

        Building shaders

        Shaders must be compiled for all renderers by using shaderc tool. Makefile to simplify building shaders is provided in examples. D3D shaders can be only compiled on Windows.

        -
        - -
        +
        +
      +

      Texture Compiler (texturec)

      Convert PNG, TGA, DDS, KTX, PVR texture into bgfx supported texture formats.

      Usage:

      @@ -498,33 +490,41 @@ shaders is provided in examples. D3D shaders can be only compiled on Windows.

      - -
      + +

      Texture Viewer (texturev)

      Texture viewer.

      -
      - + +
      + +

      - © Copyright 2010-2020, Branimir Karadžić. + + © Copyright 2010-2020, Branimir Karadžić

      +