Files
how-to-vulkan/ktx/build/docs/html/libktx/group__reader.html
T
2026-06-14 19:09:18 +01:00

1914 lines
150 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.16.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libktx Reference: Reader</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="ktx_logo_200.png"/></td>
<td id="projectalign">
<div id="projectname">libktx Reference<span id="projectnumber">&#160;0.0.0</span>
</div>
<div id="projectbrief">Libraries and tools to create and read KTX image texture files.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.16.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('group__reader.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Reader </div></div>
</div><!--header-->
<div class="contents">
<p>Read KTX-formatted data.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaea0edab86daca9c288d4cd6b47b34e28" id="r_gaea0edab86daca9c288d4cd6b47b34e28"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gaea0edab86daca9c288d4cd6b47b34e28">ktxTexture2_DecodeAstc</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gaea0edab86daca9c288d4cd6b47b34e28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes a ktx2 texture object, if it is ASTC encoded. <br /></td></tr>
<tr class="memitem:ga90cc33928a2dae962fb94b3fa2f6575d" id="r_ga90cc33928a2dae962fb94b3fa2f6575d"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga90cc33928a2dae962fb94b3fa2f6575d">ktxTexture2_TranscodeBasis</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, <a class="el" href="ktx_8h.html#a30cc58c576392303d9a5a54b57ef29b5">ktx_transcode_fmt_e</a> outputFormat, ktx_transcode_flags transcodeFlags)</td></tr>
<tr class="memdesc:ga90cc33928a2dae962fb94b3fa2f6575d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transcode a KTX2 texture with BasisLZ/ETC1S or UASTC images. <br /></td></tr>
<tr class="memitem:gaa8dfc7a981b69d26eab73c5405d7182b" id="r_gaa8dfc7a981b69d26eab73c5405d7182b"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gaa8dfc7a981b69d26eab73c5405d7182b">ktxTexture_CreateFromStream</a> (<a class="el" href="structktxStream.html">ktxStream</a> *pStream, <a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a> createFlags, <a class="el" href="structktxTexture.html">ktxTexture</a> **newTex)</td></tr>
<tr class="memdesc:gaa8dfc7a981b69d26eab73c5405d7182b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a ktx1 or ktx2 texture according to the stream data. <br /></td></tr>
<tr class="memitem:ga180d93562cc6af30c61adf8f6a8fd827" id="r_ga180d93562cc6af30c61adf8f6a8fd827"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga180d93562cc6af30c61adf8f6a8fd827">ktxTexture_CreateFromStdioStream</a> (FILE *stdioStream, <a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a> createFlags, <a class="el" href="structktxTexture.html">ktxTexture</a> **newTex)</td></tr>
<tr class="memdesc:ga180d93562cc6af30c61adf8f6a8fd827"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a stdio stream according to the stream data. <br /></td></tr>
<tr class="memitem:ga57a1ce0d3f2d66439463160d6ce9d2d0" id="r_ga57a1ce0d3f2d66439463160d6ce9d2d0"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga57a1ce0d3f2d66439463160d6ce9d2d0">ktxTexture_CreateFromNamedFile</a> (const char *const filename, <a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a> createFlags, <a class="el" href="structktxTexture.html">ktxTexture</a> **newTex)</td></tr>
<tr class="memdesc:ga57a1ce0d3f2d66439463160d6ce9d2d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a named KTX file according to the file contents. <br /></td></tr>
<tr class="memitem:gaf1e401967a687b40cdf7bba11e72c2b4" id="r_gaf1e401967a687b40cdf7bba11e72c2b4"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gaf1e401967a687b40cdf7bba11e72c2b4">ktxTexture_CreateFromMemory</a> (const ktx_uint8_t *bytes, ktx_size_t size, <a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a> createFlags, <a class="el" href="structktxTexture.html">ktxTexture</a> **newTex)</td></tr>
<tr class="memdesc:gaf1e401967a687b40cdf7bba11e72c2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data in memory according to the data contents. <br /></td></tr>
<tr class="memitem:gace44d98fa78b94c282016e7cf8a88b7e" id="r_gace44d98fa78b94c282016e7cf8a88b7e"><td class="memItemLeft">ktx_uint8_t *&#160;</td><td class="memItemRight"><a class="el" href="#gace44d98fa78b94c282016e7cf8a88b7e">ktxTexture_GetData</a> (<a class="el" href="structktxTexture.html">ktxTexture</a> *This)</td></tr>
<tr class="memdesc:gace44d98fa78b94c282016e7cf8a88b7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the texture image data. <br /></td></tr>
<tr class="memitem:ga553c3438e75628c6d7e2280989e539c4" id="r_ga553c3438e75628c6d7e2280989e539c4"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#ga553c3438e75628c6d7e2280989e539c4">ktxTexture_GetDataSize</a> (<a class="el" href="structktxTexture.html">ktxTexture</a> *This)</td></tr>
<tr class="memdesc:ga553c3438e75628c6d7e2280989e539c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total size of the texture image data in bytes. <br /></td></tr>
<tr class="memitem:ga19d8786eea0e62ab55d945bff838d32c" id="r_ga19d8786eea0e62ab55d945bff838d32c"><td class="memItemLeft">ktx_uint32_t&#160;</td><td class="memItemRight"><a class="el" href="#ga19d8786eea0e62ab55d945bff838d32c">ktxTexture_GetElementSize</a> (<a class="el" href="structktxTexture.html">ktxTexture</a> *This)</td></tr>
<tr class="memdesc:ga19d8786eea0e62ab55d945bff838d32c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size in bytes of an elements of a texture's images. <br /></td></tr>
<tr class="memitem:gae7c4b8bbe26379f2076f93050c0673c1" id="r_gae7c4b8bbe26379f2076f93050c0673c1"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gae7c4b8bbe26379f2076f93050c0673c1">ktxTexture_IterateLevelFaces</a> (<a class="el" href="structktxTexture.html">ktxTexture</a> *This, <a class="el" href="structktxTexture.html#aca6d87118e724ac77f17e0576e191513">PFNKTXITERCB</a> iterCb, void *userdata)</td></tr>
<tr class="memdesc:gae7c4b8bbe26379f2076f93050c0673c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterate over the levels or faces in a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object. <br /></td></tr>
<tr class="memitem:gacf9e393ff766982ccb79ad915975971f" id="r_gacf9e393ff766982ccb79ad915975971f"><td class="memItemLeft">ktx_uint32_t&#160;</td><td class="memItemRight"><a class="el" href="#gacf9e393ff766982ccb79ad915975971f">ktxTexture_GetRowPitch</a> (<a class="el" href="structktxTexture.html">ktxTexture</a> *This, ktx_uint32_t level)</td></tr>
<tr class="memdesc:gacf9e393ff766982ccb79ad915975971f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return pitch between rows of a texture image level in bytes. <br /></td></tr>
<tr class="memitem:ga4557b9714b41e7c575d295b65e19ed12" id="r_ga4557b9714b41e7c575d295b65e19ed12"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga4557b9714b41e7c575d295b65e19ed12">ktxTexture1_CreateFromStdioStream</a> (FILE *stdioStream, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture1.html">ktxTexture1</a> **newTex)</td></tr>
<tr class="memdesc:ga4557b9714b41e7c575d295b65e19ed12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from a stdio stream reading from a KTX source. <br /></td></tr>
<tr class="memitem:ga0319d9a33d3ea78da2ef786205f2a956" id="r_ga0319d9a33d3ea78da2ef786205f2a956"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga0319d9a33d3ea78da2ef786205f2a956">ktxTexture1_CreateFromNamedFile</a> (const char *const filename, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture1.html">ktxTexture1</a> **newTex)</td></tr>
<tr class="memdesc:ga0319d9a33d3ea78da2ef786205f2a956"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from a named KTX file. <br /></td></tr>
<tr class="memitem:ga1f289eb80601208b79561804d2ec0121" id="r_ga1f289eb80601208b79561804d2ec0121"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga1f289eb80601208b79561804d2ec0121">ktxTexture1_CreateFromMemory</a> (const ktx_uint8_t *bytes, ktx_size_t size, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture1.html">ktxTexture1</a> **newTex)</td></tr>
<tr class="memdesc:ga1f289eb80601208b79561804d2ec0121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from KTX-formatted data in memory. <br /></td></tr>
<tr class="memitem:ga2e9c9d8a1c02732c87db733d3449b337" id="r_ga2e9c9d8a1c02732c87db733d3449b337"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga2e9c9d8a1c02732c87db733d3449b337">ktxTexture1_CreateFromStream</a> (<a class="el" href="structktxStream.html">ktxStream</a> *pStream, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture1.html">ktxTexture1</a> **newTex)</td></tr>
<tr class="memdesc:ga2e9c9d8a1c02732c87db733d3449b337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from KTX-formatted data from a <span class="tt"><a class="el" href="structktxStream.html" title="Interface of ktxStream.">ktxStream</a></span>. <br /></td></tr>
<tr class="memitem:gaa616363178ec37996459219a6925f87d" id="r_gaa616363178ec37996459219a6925f87d"><td class="memItemLeft">void&#160;</td><td class="memItemRight"><a class="el" href="#gaa616363178ec37996459219a6925f87d">ktxTexture1_Destroy</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This)</td></tr>
<tr class="memdesc:gaa616363178ec37996459219a6925f87d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object. <br /></td></tr>
<tr class="memitem:ga2c471eb79f1ac62d63cae86ca6c519bf" id="r_ga2c471eb79f1ac62d63cae86ca6c519bf"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga2c471eb79f1ac62d63cae86ca6c519bf">ktxTexture1_GetImageOffset</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, ktx_uint32_t level, ktx_uint32_t layer, ktx_uint32_t faceSlice, ktx_size_t *pOffset)</td></tr>
<tr class="memdesc:ga2c471eb79f1ac62d63cae86ca6c519bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the offset of an image within a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>'s image data. <br /></td></tr>
<tr class="memitem:ga65cd751a3d1a6eed97cb19b7a88d736c" id="r_ga65cd751a3d1a6eed97cb19b7a88d736c"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#ga65cd751a3d1a6eed97cb19b7a88d736c">ktxTexture1_GetDataSizeUncompressed</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This)</td></tr>
<tr class="memdesc:ga65cd751a3d1a6eed97cb19b7a88d736c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total size in bytes of the uncompressed data of a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>. <br /></td></tr>
<tr class="memitem:gac1dc0703bc613180a92a8e1c5901dd50" id="r_gac1dc0703bc613180a92a8e1c5901dd50"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#gac1dc0703bc613180a92a8e1c5901dd50">ktxTexture1_GetImageSize</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, ktx_uint32_t level)</td></tr>
<tr class="memdesc:gac1dc0703bc613180a92a8e1c5901dd50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate &amp; return the size in bytes of an image at the specified mip level. <br /></td></tr>
<tr class="memitem:ga8a1bf5e13f88af082585a875e85dfdeb" id="r_ga8a1bf5e13f88af082585a875e85dfdeb"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#ga8a1bf5e13f88af082585a875e85dfdeb">ktxTexture1_GetLevelSize</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, ktx_uint32_t level)</td></tr>
<tr class="memdesc:ga8a1bf5e13f88af082585a875e85dfdeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate &amp; return the size in bytes of all the images in the specified mip level. <br /></td></tr>
<tr class="memitem:ga400a2581bf935beb6c0192a6e9844914" id="r_ga400a2581bf935beb6c0192a6e9844914"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga400a2581bf935beb6c0192a6e9844914">ktxTexture1_IterateLevels</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, PFNKTXITERCB iterCb, void *userdata)</td></tr>
<tr class="memdesc:ga400a2581bf935beb6c0192a6e9844914"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterate over the mip levels in a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object. <br /></td></tr>
<tr class="memitem:gab56e28f79781acf2933e36c21823c0df" id="r_gab56e28f79781acf2933e36c21823c0df"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gab56e28f79781acf2933e36c21823c0df">ktxTexture1_IterateLoadLevelFaces</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, PFNKTXITERCB iterCb, void *userdata)</td></tr>
<tr class="memdesc:gab56e28f79781acf2933e36c21823c0df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterate over the images in a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object while loading the image data. <br /></td></tr>
<tr class="memitem:ga7334feb062f32b62159cebd6e4b28d16" id="r_ga7334feb062f32b62159cebd6e4b28d16"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga7334feb062f32b62159cebd6e4b28d16">ktxTexture1_LoadImageData</a> (<a class="el" href="structktxTexture1.html">ktxTexture1</a> *This, ktx_uint8_t *pBuffer, ktx_size_t bufSize)</td></tr>
<tr class="memdesc:ga7334feb062f32b62159cebd6e4b28d16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load all the image data from the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>'s source. <br /></td></tr>
<tr class="memitem:gae9de7e23ffe3ae3aeed4cc95c61699e4" id="r_gae9de7e23ffe3ae3aeed4cc95c61699e4"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gae9de7e23ffe3ae3aeed4cc95c61699e4">ktxTexture2_CreateFromStdioStream</a> (FILE *stdioStream, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture2.html">ktxTexture2</a> **newTex)</td></tr>
<tr class="memdesc:gae9de7e23ffe3ae3aeed4cc95c61699e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a stdio stream reading from a KTX source. <br /></td></tr>
<tr class="memitem:ga8680560274b31da6f3f07ee911055431" id="r_ga8680560274b31da6f3f07ee911055431"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga8680560274b31da6f3f07ee911055431">ktxTexture2_CreateFromNamedFile</a> (const char *const filename, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture2.html">ktxTexture2</a> **newTex)</td></tr>
<tr class="memdesc:ga8680560274b31da6f3f07ee911055431"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a named KTX file. <br /></td></tr>
<tr class="memitem:ga6805a144f0bfd17b51d46fb28b0786a5" id="r_ga6805a144f0bfd17b51d46fb28b0786a5"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga6805a144f0bfd17b51d46fb28b0786a5">ktxTexture2_CreateFromMemory</a> (const ktx_uint8_t *bytes, ktx_size_t size, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture2.html">ktxTexture2</a> **newTex)</td></tr>
<tr class="memdesc:ga6805a144f0bfd17b51d46fb28b0786a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data in memory. <br /></td></tr>
<tr class="memitem:ga1e865473d23f82fc22a16bb3eadf60ed" id="r_ga1e865473d23f82fc22a16bb3eadf60ed"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga1e865473d23f82fc22a16bb3eadf60ed">ktxTexture2_CreateFromStream</a> (<a class="el" href="structktxStream.html">ktxStream</a> *stream, ktxTextureCreateFlags createFlags, <a class="el" href="structktxTexture2.html">ktxTexture2</a> **newTex)</td></tr>
<tr class="memdesc:ga1e865473d23f82fc22a16bb3eadf60ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data from a stream. <br /></td></tr>
<tr class="memitem:ga01ec49abe73b77f2f8db99b5d9cf46d9" id="r_ga01ec49abe73b77f2f8db99b5d9cf46d9"><td class="memItemLeft">void&#160;</td><td class="memItemRight"><a class="el" href="#ga01ec49abe73b77f2f8db99b5d9cf46d9">ktxTexture2_Destroy</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:ga01ec49abe73b77f2f8db99b5d9cf46d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object. <br /></td></tr>
<tr class="memitem:gad3aab08fa013c602fc055964e78c7566" id="r_gad3aab08fa013c602fc055964e78c7566"><td class="memItemLeft">void&#160;</td><td class="memItemRight"><a class="el" href="#gad3aab08fa013c602fc055964e78c7566">ktxTexture2_GetComponentInfo</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, uint32_t *pNumComponents, uint32_t *pComponentByteLength)</td></tr>
<tr class="memdesc:gad3aab08fa013c602fc055964e78c7566"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return information about the components of an image in a texture. <br /></td></tr>
<tr class="memitem:gacc7762adb6ff311ca65cfe5ed89db21e" id="r_gacc7762adb6ff311ca65cfe5ed89db21e"><td class="memItemLeft">ktx_uint32_t&#160;</td><td class="memItemRight"><a class="el" href="#gacc7762adb6ff311ca65cfe5ed89db21e">ktxTexture2_GetNumComponents</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gacc7762adb6ff311ca65cfe5ed89db21e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of components in an image of the texture. <br /></td></tr>
<tr class="memitem:gab29978f318436c009ae45b7d3c515f8e" id="r_gab29978f318436c009ae45b7d3c515f8e"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gab29978f318436c009ae45b7d3c515f8e">ktxTexture2_GetImageOffset</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, ktx_uint32_t level, ktx_uint32_t layer, ktx_uint32_t faceSlice, ktx_size_t *pOffset)</td></tr>
<tr class="memdesc:gab29978f318436c009ae45b7d3c515f8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the offset of an image within a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>'s image data. <br /></td></tr>
<tr class="memitem:ga37cd5b4ae9ee373d825197dc8998d0bb" id="r_ga37cd5b4ae9ee373d825197dc8998d0bb"><td class="memItemLeft">khr_df_transfer_e&#160;</td><td class="memItemRight"><a class="el" href="#ga37cd5b4ae9ee373d825197dc8998d0bb">ktxTexture2_GetTransferFunction_e</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:ga37cd5b4ae9ee373d825197dc8998d0bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the transfer function of the images. <br /></td></tr>
<tr class="memitem:gaddf6746c18d970a238e89bb9b8e13e77" id="r_gaddf6746c18d970a238e89bb9b8e13e77"><td class="memItemLeft">khr_df_transfer_e&#160;</td><td class="memItemRight"><a class="el" href="#gaddf6746c18d970a238e89bb9b8e13e77">ktxTexture2_GetOETF_e</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gaddf6746c18d970a238e89bb9b8e13e77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the transfer function of the images. <br /></td></tr>
<tr class="memitem:gac1b0eccd69f541450ed88da2ad260dcc" id="r_gac1b0eccd69f541450ed88da2ad260dcc"><td class="memItemLeft">ktx_uint32_t&#160;</td><td class="memItemRight"><a class="el" href="#gac1b0eccd69f541450ed88da2ad260dcc">ktxTexture2_GetOETF</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gac1b0eccd69f541450ed88da2ad260dcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the transfer function of the images. <br /></td></tr>
<tr class="memitem:ga7200d548b480a3abb69c206f530c0669" id="r_ga7200d548b480a3abb69c206f530c0669"><td class="memItemLeft">khr_df_model_e&#160;</td><td class="memItemRight"><a class="el" href="#ga7200d548b480a3abb69c206f530c0669">ktxTexture2_GetColorModel_e</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:ga7200d548b480a3abb69c206f530c0669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the DFD color model of the images. <br /></td></tr>
<tr class="memitem:gab773b3ad45bacb6f487b62c4b0a07fcf" id="r_gab773b3ad45bacb6f487b62c4b0a07fcf"><td class="memItemLeft">ktx_bool_t&#160;</td><td class="memItemRight"><a class="el" href="#gab773b3ad45bacb6f487b62c4b0a07fcf">ktxTexture2_GetPremultipliedAlpha</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gab773b3ad45bacb6f487b62c4b0a07fcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve whether the RGB components have been premultiplied by the alpha component. <br /></td></tr>
<tr class="memitem:gac7323c6f9fe75f442484392506b2024b" id="r_gac7323c6f9fe75f442484392506b2024b"><td class="memItemLeft">khr_df_primaries_e&#160;</td><td class="memItemRight"><a class="el" href="#gac7323c6f9fe75f442484392506b2024b">ktxTexture2_GetPrimaries_e</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gac7323c6f9fe75f442484392506b2024b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the color primaries of the images. <br /></td></tr>
<tr class="memitem:gade1ffc5d31c2f9b5f1e861b59e7619ce" id="r_gade1ffc5d31c2f9b5f1e861b59e7619ce"><td class="memItemLeft">ktx_bool_t&#160;</td><td class="memItemRight"><a class="el" href="#gade1ffc5d31c2f9b5f1e861b59e7619ce">ktxTexture2_NeedsTranscoding</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gade1ffc5d31c2f9b5f1e861b59e7619ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query if the images are in a transcodable format. <br /></td></tr>
<tr class="memitem:gaefcaf84425830ba095eb670a275dad34" id="r_gaefcaf84425830ba095eb670a275dad34"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#gaefcaf84425830ba095eb670a275dad34">ktxTexture2_GetDataSizeUncompressed</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This)</td></tr>
<tr class="memdesc:gaefcaf84425830ba095eb670a275dad34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total size in bytes of the uncompressed data of a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>. <br /></td></tr>
<tr class="memitem:gaa4b800f418f57b10737ac6533f1769d2" id="r_gaa4b800f418f57b10737ac6533f1769d2"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#gaa4b800f418f57b10737ac6533f1769d2">ktxTexture2_GetImageSize</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, ktx_uint32_t level)</td></tr>
<tr class="memdesc:gaa4b800f418f57b10737ac6533f1769d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate &amp; return the size in bytes of an image at the specified mip level. <br /></td></tr>
<tr class="memitem:gac344745350aff9cf5bcc2969729b7f0e" id="r_gac344745350aff9cf5bcc2969729b7f0e"><td class="memItemLeft">ktx_size_t&#160;</td><td class="memItemRight"><a class="el" href="#gac344745350aff9cf5bcc2969729b7f0e">ktxTexture2_GetLevelSize</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, ktx_uint32_t level)</td></tr>
<tr class="memdesc:gac344745350aff9cf5bcc2969729b7f0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate &amp; return the size in bytes of all the images in the specified mip level. <br /></td></tr>
<tr class="memitem:ga1b47270a151b67615aed9eeca5f25bf7" id="r_ga1b47270a151b67615aed9eeca5f25bf7"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga1b47270a151b67615aed9eeca5f25bf7">ktxTexture2_IterateLevels</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, PFNKTXITERCB iterCb, void *userdata)</td></tr>
<tr class="memdesc:ga1b47270a151b67615aed9eeca5f25bf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterate over the mip levels in a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object. <br /></td></tr>
<tr class="memitem:gaf57628ec7f9a554b46ba84ab9c214bab" id="r_gaf57628ec7f9a554b46ba84ab9c214bab"><td class="memItemLeft"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a>&#160;</td><td class="memItemRight"><a class="el" href="#gaf57628ec7f9a554b46ba84ab9c214bab">ktxTexture2_IterateLoadLevelFaces</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, PFNKTXITERCB iterCb, void *userdata)</td></tr>
<tr class="memdesc:gaf57628ec7f9a554b46ba84ab9c214bab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterate over the images in a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object while loading the image data. <br /></td></tr>
<tr class="memitem:ga032b7f1926861c8b40655527b84f5533" id="r_ga032b7f1926861c8b40655527b84f5533"><td class="memItemLeft"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116c">ktx_error_code_e</a>&#160;</td><td class="memItemRight"><a class="el" href="#ga032b7f1926861c8b40655527b84f5533">ktxTexture2_LoadImageData</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, ktx_uint8_t *pBuffer, ktx_size_t bufSize)</td></tr>
<tr class="memdesc:ga032b7f1926861c8b40655527b84f5533"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load all the image data from the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s source. <br /></td></tr>
<tr class="memitem:gaa1f681c144baa70ef9af6db4c7333b3c" id="r_gaa1f681c144baa70ef9af6db4c7333b3c"><td class="memItemLeft"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116c">ktx_error_code_e</a>&#160;</td><td class="memItemRight"><a class="el" href="#gaa1f681c144baa70ef9af6db4c7333b3c">ktxTexture2_LoadDeflatedImageData</a> (<a class="el" href="structktxTexture2.html">ktxTexture2</a> *This, ktx_uint8_t *pBuffer, ktx_size_t bufSize)</td></tr>
<tr class="memdesc:gaa1f681c144baa70ef9af6db4c7333b3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load all the image data from the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s source without inflatiion.. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Read KTX-formatted data. </p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="ga1f289eb80601208b79561804d2ec0121" name="ga1f289eb80601208b79561804d2ec0121"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1f289eb80601208b79561804d2ec0121">&#9670;&#160;</a></span>ktxTexture1_CreateFromMemory()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_CreateFromMemory </td>
<td>(</td>
<td class="paramtype">const ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>bytes</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from KTX-formatted data in memory. </p>
<p>The address of a newly created texture reflecting the contents of the serialized KTX data is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">bytes</td><td>pointer to the memory containing the serialized KTX data. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>length of the KTX data in bytes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td>Either <code class="param">bytes</code> is NULL or <code class="param">size</code> is 0.</td></tr>
</table>
</dd>
</dl>
<p>For other exceptions, see <a class="el" href="#ga4557b9714b41e7c575d295b65e19ed12" title="Create a ktxTexture1 from a stdio stream reading from a KTX source.">ktxTexture1_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="ga0319d9a33d3ea78da2ef786205f2a956" name="ga0319d9a33d3ea78da2ef786205f2a956"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0319d9a33d3ea78da2ef786205f2a956">&#9670;&#160;</a></span>ktxTexture1_CreateFromNamedFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_CreateFromNamedFile </td>
<td>(</td>
<td class="paramtype">const char *const</td> <td class="paramname"><span class="paramname"><em>filename</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from a named KTX file. </p>
<p>The address of a newly created texture reflecting the contents of the file is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The file name must be encoded in utf-8. On Windows convert unicode names to utf-8 with <code>WideCharToMultiByte(CP_UTF8, ...)</code> before calling.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>pointer to a char array containing the file name. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cac8f2bb08408001aad4941fc7b3f45558">KTX_FILE_OPEN_FAILED</a></td><td>The file could not be opened. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">filename</code> is <code>NULL</code>.</td></tr>
</table>
</dd>
</dl>
<p>For other exceptions, see <a class="el" href="#ga4557b9714b41e7c575d295b65e19ed12" title="Create a ktxTexture1 from a stdio stream reading from a KTX source.">ktxTexture1_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="ga4557b9714b41e7c575d295b65e19ed12" name="ga4557b9714b41e7c575d295b65e19ed12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4557b9714b41e7c575d295b65e19ed12">&#9670;&#160;</a></span>ktxTexture1_CreateFromStdioStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_CreateFromStdioStream </td>
<td>(</td>
<td class="paramtype">FILE *</td> <td class="paramname"><span class="paramname"><em>stdioStream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from a stdio stream reading from a KTX source. </p>
<p>The address of a newly created texture reflecting the contents of the stdio stream is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">stdioStream</td><td>stdio FILE pointer created from the desired file. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">newTex</code> is <code>NULL</code>. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Source data is inconsistent with the KTX specification. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca1559258b3bd0f47eef28fd4839074452">KTX_FILE_READ_ERROR</a></td><td>An error occurred while reading the source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cab6d2090e851d9757ce32c05ec807ba4d">KTX_FILE_UNEXPECTED_EOF</a></td><td>Not enough data in the source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Not enough memory to create the texture object, load the images or load the key-value data. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cadbeb98d59020ac018a4f697d068fff21">KTX_UNKNOWN_FILE_FORMAT</a></td><td>The source is not in KTX format. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cad3d82ba3467063bec92486a94a38d21d">KTX_UNSUPPORTED_TEXTURE_TYPE</a></td><td>The source describes a texture type not supported by OpenGL or Vulkan, e.g, a 3D array. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga2e9c9d8a1c02732c87db733d3449b337" name="ga2e9c9d8a1c02732c87db733d3449b337"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2e9c9d8a1c02732c87db733d3449b337">&#9670;&#160;</a></span>ktxTexture1_CreateFromStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_CreateFromStream </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxStream.html">ktxStream</a> *</td> <td class="paramname"><span class="paramname"><em>pStream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> from KTX-formatted data from a <span class="tt"><a class="el" href="structktxStream.html" title="Interface of ktxStream.">ktxStream</a></span>. </p>
<p>The address of a newly created texture reflecting the contents of the serialized KTX data is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pStream</td><td>pointer to the stream to read KTX data from. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<p>For exceptions, see <a class="el" href="#ga4557b9714b41e7c575d295b65e19ed12" title="Create a ktxTexture1 from a stdio stream reading from a KTX source.">ktxTexture1_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="gaa616363178ec37996459219a6925f87d" name="gaa616363178ec37996459219a6925f87d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa616363178ec37996459219a6925f87d">&#9670;&#160;</a></span>ktxTexture1_Destroy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ktxTexture1_Destroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object. </p>
<p>This frees the memory associated with the texture contents and the memory of the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object. This does <em>not</em> delete any OpenGL or Vulkan texture objects created by ktxTexture1_GLUpload or ktxTexture1_VkUpload.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object to destroy </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga65cd751a3d1a6eed97cb19b7a88d736c" name="ga65cd751a3d1a6eed97cb19b7a88d736c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga65cd751a3d1a6eed97cb19b7a88d736c">&#9670;&#160;</a></span>ktxTexture1_GetDataSizeUncompressed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture1_GetDataSizeUncompressed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the total size in bytes of the uncompressed data of a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>. </p>
<p>This always returns the value of <code>This-&gt;dataSize</code>. The function is provided for symmetry with <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object of interest. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size of the data in the texture. </dd></dl>
</div>
</div>
<a id="ga2c471eb79f1ac62d63cae86ca6c519bf" name="ga2c471eb79f1ac62d63cae86ca6c519bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2c471eb79f1ac62d63cae86ca6c519bf">&#9670;&#160;</a></span>ktxTexture1_GetImageOffset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_GetImageOffset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>layer</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>faceSlice</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t *</td> <td class="paramname"><span class="paramname"><em>pOffset</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the offset of an image within a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>'s image data. </p>
<p>As there is no such thing as a 3D cubemap we make the 3rd location parameter do double duty.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>mip level of the image. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">layer</td><td>array layer of the image. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">faceSlice</td><td>cube map face or depth slice of the image. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">pOffset</td><td>pointer to location to store the offset.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td><code class="param">level</code>, <code class="param">layer</code> or <code class="param">faceSlice</code> exceed the dimensions of the texture. </td></tr>
<tr><td class="paramname">KTX_INVALID_VALID</td><td><code class="param">This</code> is NULL. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac1dc0703bc613180a92a8e1c5901dd50" name="gac1dc0703bc613180a92a8e1c5901dd50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac1dc0703bc613180a92a8e1c5901dd50">&#9670;&#160;</a></span>ktxTexture1_GetImageSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture1_GetImageSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate &amp; return the size in bytes of an image at the specified mip level. </p>
<p>For arrays, this is the size of a layer, for cubemaps, the size of a face and for 3D textures, the size of a depth slice.</p>
<p>The size reflects the padding of each row to KTX_GL_UNPACK_ALIGNMENT.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>level of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8a1bf5e13f88af082585a875e85dfdeb" name="ga8a1bf5e13f88af082585a875e85dfdeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8a1bf5e13f88af082585a875e85dfdeb">&#9670;&#160;</a></span>ktxTexture1_GetLevelSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture1_GetLevelSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate &amp; return the size in bytes of all the images in the specified mip level. </p>
<p>For arrays, this is the size of all layers in the level, for cubemaps, the size of all faces in the level and for 3D textures, the size of all depth slices in the level.</p>
<p>The size reflects the padding of each row to KTX_GL_UNPACK_ALIGNMENT.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>level of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga400a2581bf935beb6c0192a6e9844914" name="ga400a2581bf935beb6c0192a6e9844914"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga400a2581bf935beb6c0192a6e9844914">&#9670;&#160;</a></span>ktxTexture1_IterateLevels()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_IterateLevels </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PFNKTXITERCB</td> <td class="paramname"><span class="paramname"><em>iterCb</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>userdata</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the mip levels in a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object. </p>
<p>This is almost identical to <a class="el" href="#gae7c4b8bbe26379f2076f93050c0673c1" title="ktxTexture_IterateLevelFaces">ktxTexture_IterateLevelFaces</a>. The difference is that the blocks of image data for non-array cube maps include all faces of a mip level.</p>
<p>This function works even if <code class="param">This-&gt;pData</code> == 0 so it can be used to obtain offsets and sizes for each level by callers who have loaded the data externally.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>handle of the 1 opened on the data. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iterCb</td><td>the address of a callback function which is called with the data for each image block. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">userdata</td><td>the address of application-specific data which is passed to the callback along with the image data.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error. The following are returned directly by this function. <code class="param">iterCb</code> may return these for other causes or may return additional errors.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Mip level sizes are increasing not decreasing </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is <code>NULL</code> or <code class="param">iterCb</code> is <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab56e28f79781acf2933e36c21823c0df" name="gab56e28f79781acf2933e36c21823c0df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab56e28f79781acf2933e36c21823c0df">&#9670;&#160;</a></span>ktxTexture1_IterateLoadLevelFaces()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_IterateLoadLevelFaces </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PFNKTXITERCB</td> <td class="paramname"><span class="paramname"><em>iterCb</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>userdata</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the images in a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object while loading the image data. </p>
<p>This operates similarly to <a class="el" href="#gae7c4b8bbe26379f2076f93050c0673c1" title="ktxTexture_IterateLevelFaces">ktxTexture_IterateLevelFaces</a> except that it loads the images from the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>'s source to a temporary buffer while iterating. The callback function must copy the image data if it wishes to preserve it as the temporary buffer is reused for each level and is freed when this function exits.</p>
<p>This function is helpful for reducing memory usage when uploading the data to a graphics API.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object of interest. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iterCb</td><td>the address of a callback function which is called with the data for each image. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">userdata</td><td>the address of application-specific data which is passed to the callback along with the image data.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error. The following are returned directly by this function. <code class="param">iterCb</code> may return these for other causes or may return additional errors.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>mip level sizes are increasing not decreasing </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> was not created from a stream, i.e there is no data to load, or this <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>'s images have already been loaded. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is <code>NULL</code> or <code class="param">iterCb</code> is <code>NULL</code>. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>not enough memory to allocate a block to hold the base level image. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga7334feb062f32b62159cebd6e4b28d16" name="ga7334feb062f32b62159cebd6e4b28d16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7334feb062f32b62159cebd6e4b28d16">&#9670;&#160;</a></span>ktxTexture1_LoadImageData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture1_LoadImageData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture1.html">ktxTexture1</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>pBuffer</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>bufSize</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Load all the image data from the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a>'s source. </p>
<p>The data is loaded into the provided buffer or to an internally allocated buffer, if <code class="param">pBuffer</code> is <code>NULL</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pBuffer</td><td>pointer to the buffer in which to load the image data. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bufSize</td><td>size of the buffer pointed at by <code class="param">pBuffer</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is NULL. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">bufSize</code> is less than the the image data size. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The data has already been loaded or the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> was not created from a KTX source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Insufficient memory for the image data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga6805a144f0bfd17b51d46fb28b0786a5" name="ga6805a144f0bfd17b51d46fb28b0786a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6805a144f0bfd17b51d46fb28b0786a5">&#9670;&#160;</a></span>ktxTexture2_CreateFromMemory()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_CreateFromMemory </td>
<td>(</td>
<td class="paramtype">const ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>bytes</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data in memory. </p>
<p>The address of a newly created <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> reflecting the contents of the serialized KTX data is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">bytes</td><td>pointer to the memory containing the serialized KTX data. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>length of the KTX data in bytes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td>Either <code class="param">bytes</code> is NULL or <code class="param">size</code> is 0.</td></tr>
</table>
</dd>
</dl>
<p>For other exceptions, see <a class="el" href="#gae9de7e23ffe3ae3aeed4cc95c61699e4" title="Create a ktxTexture2 from a stdio stream reading from a KTX source.">ktxTexture2_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="ga8680560274b31da6f3f07ee911055431" name="ga8680560274b31da6f3f07ee911055431"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8680560274b31da6f3f07ee911055431">&#9670;&#160;</a></span>ktxTexture2_CreateFromNamedFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_CreateFromNamedFile </td>
<td>(</td>
<td class="paramtype">const char *const</td> <td class="paramname"><span class="paramname"><em>filename</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a named KTX file. </p>
<p>The address of a newly created <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> reflecting the contents of the file is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The file name must be encoded in utf-8. On Windows convert unicode names to utf-8 with <code>WideCharToMultiByte(CP_UTF8, ...)</code> before calling.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>pointer to a char array containing the file name. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cac8f2bb08408001aad4941fc7b3f45558">KTX_FILE_OPEN_FAILED</a></td><td>The file could not be opened. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">filename</code> is <code>NULL</code>.</td></tr>
</table>
</dd>
</dl>
<p>For other exceptions, see <a class="el" href="#gae9de7e23ffe3ae3aeed4cc95c61699e4" title="Create a ktxTexture2 from a stdio stream reading from a KTX source.">ktxTexture2_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="gae9de7e23ffe3ae3aeed4cc95c61699e4" name="gae9de7e23ffe3ae3aeed4cc95c61699e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae9de7e23ffe3ae3aeed4cc95c61699e4">&#9670;&#160;</a></span>ktxTexture2_CreateFromStdioStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_CreateFromStdioStream </td>
<td>(</td>
<td class="paramtype">FILE *</td> <td class="paramname"><span class="paramname"><em>stdioStream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a stdio stream reading from a KTX source. </p>
<p>The address of a newly created <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> reflecting the contents of the stdio stream is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">stdioStream</td><td>stdio FILE pointer created from the desired file. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">newTex</code> is <code>NULL</code>. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Source data is inconsistent with the KTX specification. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca1559258b3bd0f47eef28fd4839074452">KTX_FILE_READ_ERROR</a></td><td>An error occurred while reading the source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cab6d2090e851d9757ce32c05ec807ba4d">KTX_FILE_UNEXPECTED_EOF</a></td><td>Not enough data in the source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Not enough memory to create the texture object, load the images or load the key-value data. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cadbeb98d59020ac018a4f697d068fff21">KTX_UNKNOWN_FILE_FORMAT</a></td><td>The source is not in KTX format. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cad3d82ba3467063bec92486a94a38d21d">KTX_UNSUPPORTED_TEXTURE_TYPE</a></td><td>The source describes a texture type not supported by OpenGL or Vulkan, e.g, a 3D array. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga1e865473d23f82fc22a16bb3eadf60ed" name="ga1e865473d23f82fc22a16bb3eadf60ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1e865473d23f82fc22a16bb3eadf60ed">&#9670;&#160;</a></span>ktxTexture2_CreateFromStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_CreateFromStream </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxStream.html">ktxStream</a> *</td> <td class="paramname"><span class="paramname"><em>stream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktxTextureCreateFlags</td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data from a stream. </p>
<p>The address of a newly created <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> reflecting the contents of the serialized KTX data is written to the location pointed at by <code class="param">newTex</code>.</p>
<p>The create flag KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT should not be set, if the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> is ultimately to be uploaded to OpenGL or Vulkan. This will minimize memory usage by allowing, for example, loading the images directly from the source into a Vulkan staging buffer.</p>
<p>The create flag KTX_TEXTURE_CREATE_RAW_KVDATA_BIT should not be used. It is provided solely to enable implementation of the <em>libktx</em> v1 API on top of <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">stream</td><td>pointer to the stream to read KTX data from. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">createFlags</td><td>bitmask requesting specific actions during creation. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">newTex</td><td>pointer to a location in which store the address of the newly created texture.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td>Either <code class="param">bytes</code> is NULL or <code class="param">size</code> is 0.</td></tr>
</table>
</dd>
</dl>
<p>For other exceptions, see <a class="el" href="#gae9de7e23ffe3ae3aeed4cc95c61699e4" title="Create a ktxTexture2 from a stdio stream reading from a KTX source.">ktxTexture2_CreateFromStdioStream()</a>. </p>
</div>
</div>
<a id="gaea0edab86daca9c288d4cd6b47b34e28" name="gaea0edab86daca9c288d4cd6b47b34e28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaea0edab86daca9c288d4cd6b47b34e28">&#9670;&#160;</a></span>ktxTexture2_DecodeAstc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_DecodeAstc </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes a ktx2 texture object, if it is ASTC encoded. </p>
<p>The decompressed format is calculated from corresponding ASTC format. There are only 3 possible options currently supported. RGBA8, SRGBA8 and RGBA32. </p><dl class="section note"><dt>Note</dt><dd>3d textures are decoded to a multi-slice 3d texture.</dd></dl>
<p>Updates <code class="param">This</code> with the decoded image.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">This</td><td>The texture to decode</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>DFD is incorrect: supercompression scheme or sample's channelId do not match ASTC colorModel. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The texture's images are not in ASTC format. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The texture object does not contain any data. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>ASTC decoder failed to decompress image. Possibly due to incorrect floating point compilation settings. Should not happen in release package. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Not enough memory to carry out decoding. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca04808a4c3abddb237d2a8cf903205496">KTX_UNSUPPORTED_FEATURE</a></td><td>The texture's images are supercompressed with an unsupported scheme. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca04808a4c3abddb237d2a8cf903205496">KTX_UNSUPPORTED_FEATURE</a></td><td>ASTC encoder not compiled with enough capacity for requested block size. Should not happen in release package. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga01ec49abe73b77f2f8db99b5d9cf46d9" name="ga01ec49abe73b77f2f8db99b5d9cf46d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga01ec49abe73b77f2f8db99b5d9cf46d9">&#9670;&#160;</a></span>ktxTexture2_Destroy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ktxTexture2_Destroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object. </p>
<p>This frees the memory associated with the texture contents and the memory of the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object. This does <em>not</em> delete any OpenGL or Vulkan texture objects created by ktxTexture2_GLUpload or ktxTexture2_VkUpload.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object to destroy </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga7200d548b480a3abb69c206f530c0669" name="ga7200d548b480a3abb69c206f530c0669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7200d548b480a3abb69c206f530c0669">&#9670;&#160;</a></span>ktxTexture2_GetColorModel_e()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">khr_df_model_e ktxTexture2_GetColorModel_e </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the DFD color model of the images. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>khr_df_transfer</code> enum value specifying the color model. </dd></dl>
</div>
</div>
<a id="gad3aab08fa013c602fc055964e78c7566" name="gad3aab08fa013c602fc055964e78c7566"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad3aab08fa013c602fc055964e78c7566">&#9670;&#160;</a></span>ktxTexture2_GetComponentInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ktxTexture2_GetComponentInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *</td> <td class="paramname"><span class="paramname"><em>pNumComponents</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *</td> <td class="paramname"><span class="paramname"><em>pComponentByteLength</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return information about the components of an image in a texture. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">pNumComponents</td><td>pointer to location in which to write the number of components in the textures images. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">pComponentByteLength</td><td>pointer to the location in which to write byte length of a component. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaefcaf84425830ba095eb670a275dad34" name="gaefcaf84425830ba095eb670a275dad34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaefcaf84425830ba095eb670a275dad34">&#9670;&#160;</a></span>ktxTexture2_GetDataSizeUncompressed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture2_GetDataSizeUncompressed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the total size in bytes of the uncompressed data of a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>. </p>
<p>If supercompressionScheme == <code>KTX_SS_NONE</code> or <code>KTX_SS_BASIS_LZ</code>, returns the value of <code>This-&gt;dataSize</code> else if supercompressionScheme == <code>KTX_SS_ZSTD</code> or <code>KTX_SS_ZLIB</code>, it returns the sum of the uncompressed sizes of each mip level plus space for the level padding. With no supercompression the data size and uncompressed data size are the same. For Basis supercompression the uncompressed size cannot be known until the data is transcoded so the compressed size is returned.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> object of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab29978f318436c009ae45b7d3c515f8e" name="gab29978f318436c009ae45b7d3c515f8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab29978f318436c009ae45b7d3c515f8e">&#9670;&#160;</a></span>ktxTexture2_GetImageOffset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_GetImageOffset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>layer</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>faceSlice</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t *</td> <td class="paramname"><span class="paramname"><em>pOffset</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the offset of an image within a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>'s image data. </p>
<p>As there is no such thing as a 3D cubemap we make the 3rd location parameter do double duty. Only works for non-supercompressed textures as there is no way to tell where an image is for a supercompressed one.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>mip level of the image. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">layer</td><td>array layer of the image. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">faceSlice</td><td>cube map face or depth slice of the image. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">pOffset</td><td>pointer to location to store the offset.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td><code class="param">level</code>, <code class="param">layer</code> or <code class="param">faceSlice</code> exceed the dimensions of the texture. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>Texture is supercompressed. </td></tr>
<tr><td class="paramname">KTX_INVALID_VALID</td><td><code class="param">This</code> is NULL. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa4b800f418f57b10737ac6533f1769d2" name="gaa4b800f418f57b10737ac6533f1769d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa4b800f418f57b10737ac6533f1769d2">&#9670;&#160;</a></span>ktxTexture2_GetImageSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture2_GetImageSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate &amp; return the size in bytes of an image at the specified mip level. </p>
<p>For arrays, this is the size of a layer, for cubemaps, the size of a face and for 3D textures, the size of a depth slice.</p>
<p>The size reflects the padding of each row to KTX_GL_UNPACK_ALIGNMENT.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>level of interest. * </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac344745350aff9cf5bcc2969729b7f0e" name="gac344745350aff9cf5bcc2969729b7f0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac344745350aff9cf5bcc2969729b7f0e">&#9670;&#160;</a></span>ktxTexture2_GetLevelSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture2_GetLevelSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate &amp; return the size in bytes of all the images in the specified mip level. </p>
<p>For arrays, this is the size of all layers in the level, for cubemaps, the size of all faces in the level and for 3D textures, the size of all depth slices in the level.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>level of interest. * </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gacc7762adb6ff311ca65cfe5ed89db21e" name="gacc7762adb6ff311ca65cfe5ed89db21e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacc7762adb6ff311ca65cfe5ed89db21e">&#9670;&#160;</a></span>ktxTexture2_GetNumComponents()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_uint32_t ktxTexture2_GetNumComponents </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the number of components in an image of the texture. </p>
<p>Returns the number of components indicated by the DFD's sample information in accordance with the color model. For uncompressed formats it will be the actual number of components in the image. For block-compressed formats, it will be 1 or 2 according to the format's DFD color model. For Basis compressed textures, the function examines the ids of the channels indicated by the DFD and uses that information to determine and return the number of components in the image <em>before</em> encoding and deflation so it can be used to help choose a suitable transcode target format.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of components. </dd></dl>
</div>
</div>
<a id="gac1b0eccd69f541450ed88da2ad260dcc" name="gac1b0eccd69f541450ed88da2ad260dcc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac1b0eccd69f541450ed88da2ad260dcc">&#9670;&#160;</a></span>ktxTexture2_GetOETF()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_uint32_t ktxTexture2_GetOETF </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the transfer function of the images. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000014">Deprecated</a></b></dt><dd>Use ktxTexture2_GetTransferFunction_e.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>khr_df_transfer</code> enum value specifying the transfer function, returned as <code>ktx_uint32_t</code>. </dd></dl>
</div>
</div>
<a id="gaddf6746c18d970a238e89bb9b8e13e77" name="gaddf6746c18d970a238e89bb9b8e13e77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaddf6746c18d970a238e89bb9b8e13e77">&#9670;&#160;</a></span>ktxTexture2_GetOETF_e()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">khr_df_transfer_e ktxTexture2_GetOETF_e </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the transfer function of the images. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000013">Deprecated</a></b></dt><dd>Use ktxTexture2_GetTransferFunction_e. Now that the KTX specification allows setting of non-linear transfer functions other than sRGB, it is possible for the transfer function to be an EOTF so this name is no longer appropriate.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>khr_df_transfer</code> enum value specifying the transfer function. </dd></dl>
</div>
</div>
<a id="gab773b3ad45bacb6f487b62c4b0a07fcf" name="gab773b3ad45bacb6f487b62c4b0a07fcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab773b3ad45bacb6f487b62c4b0a07fcf">&#9670;&#160;</a></span>ktxTexture2_GetPremultipliedAlpha()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_bool_t ktxTexture2_GetPremultipliedAlpha </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve whether the RGB components have been premultiplied by the alpha component. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_TRUE if the components are premultiplied, KTX_FALSE otherwise. </dd></dl>
</div>
</div>
<a id="gac7323c6f9fe75f442484392506b2024b" name="gac7323c6f9fe75f442484392506b2024b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac7323c6f9fe75f442484392506b2024b">&#9670;&#160;</a></span>ktxTexture2_GetPrimaries_e()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">khr_df_primaries_e ktxTexture2_GetPrimaries_e </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the color primaries of the images. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>khr_df_primaries</code> enum value specifying the primaries. </dd></dl>
</div>
</div>
<a id="ga37cd5b4ae9ee373d825197dc8998d0bb" name="ga37cd5b4ae9ee373d825197dc8998d0bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga37cd5b4ae9ee373d825197dc8998d0bb">&#9670;&#160;</a></span>ktxTexture2_GetTransferFunction_e()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">khr_df_transfer_e ktxTexture2_GetTransferFunction_e </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the transfer function of the images. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>khr_df_transfer</code> enum value specifying the transfer function. </dd></dl>
</div>
</div>
<a id="ga1b47270a151b67615aed9eeca5f25bf7" name="ga1b47270a151b67615aed9eeca5f25bf7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1b47270a151b67615aed9eeca5f25bf7">&#9670;&#160;</a></span>ktxTexture2_IterateLevels()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_IterateLevels </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PFNKTXITERCB</td> <td class="paramname"><span class="paramname"><em>iterCb</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>userdata</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the mip levels in a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object. </p>
<p>This is almost identical to ktxTexture_IterateLevelFaces(). The difference is that the blocks of image data for non-array cube maps include all faces of a mip level.</p>
<p>This function works even if <code class="param">This-&gt;pData</code> == 0 so it can be used to obtain offsets and sizes for each level by callers who have loaded the data externally.</p>
<p>Intended for use only when supercompressionScheme == SUPERCOMPRESSION_NONE.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>handle of the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> opened on the data. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iterCb</td><td>the address of a callback function which is called with the data for each image block. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">userdata</td><td>the address of application-specific data which is passed to the callback along with the image data.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error. The following are returned directly by this function. <code class="param">iterCb</code> may return these for other causes or may return additional errors.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Mip level sizes are increasing not decreasing </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>supercompressionScheme != SUPERCOMPRESSION_NONE. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is <code>NULL</code> or <code class="param">iterCb</code> is <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf57628ec7f9a554b46ba84ab9c214bab" name="gaf57628ec7f9a554b46ba84ab9c214bab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf57628ec7f9a554b46ba84ab9c214bab">&#9670;&#160;</a></span>ktxTexture2_IterateLoadLevelFaces()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_IterateLoadLevelFaces </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PFNKTXITERCB</td> <td class="paramname"><span class="paramname"><em>iterCb</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>userdata</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the images in a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object while loading the image data. </p>
<p>This operates similarly to ktxTexture_IterateLevelFaces() except that it loads the images from the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s source to a temporary buffer while iterating. If supercompressionScheme == KTX_SS_ZSTD or KTX_SS_ZLIB, it will inflate the data before passing it to the callback. The callback function must copy the image data if it wishes to preserve it as the temporary buffer is reused for each level and is freed when this function exits.</p>
<p>This function is helpful for reducing memory usage when uploading the data to a graphics API.</p>
<p>Intended for use only when supercompressionScheme == KTX_SS_NONE, KTX_SS_ZSTD or KTX_SS_ZLIB. As there is no access to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a>'s data on conclusion of this function, destroying the texture on completion is recommended.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iterCb</td><td>the address of a callback function which is called with the data for each image. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">userdata</td><td>the address of application-specific data which is passed to the callback along with the image data.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error. The following are returned directly by this function. <code class="param">iterCb</code> may return these for other causes or may return additional errors.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>mip level sizes are increasing not decreasing </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> was not created from a stream, i.e there is no data to load, or this <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s images have already been loaded. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>supercompressionScheme != KTX_SS_NONE, supercompressionScheme != KTX_SS_ZSTD, and supercompressionScheme != KTX_SS_ZLIB. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is <code>NULL</code> or <code class="param">iterCb</code> is <code>NULL</code>. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>not enough memory to allocate a block to hold the base level image. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa1f681c144baa70ef9af6db4c7333b3c" name="gaa1f681c144baa70ef9af6db4c7333b3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa1f681c144baa70ef9af6db4c7333b3c">&#9670;&#160;</a></span>ktxTexture2_LoadDeflatedImageData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116c">ktx_error_code_e</a> ktxTexture2_LoadDeflatedImageData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>pBuffer</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>bufSize</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Load all the image data from the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s source without inflatiion.. </p>
<p>The data will be not be inflated if supercompressionScheme == <code>KTX_SS_ZSTD</code> or <code>KTX_SS_ZLIB</code>. This function is provided to support some rare testing scenarios. Generally use of ktxTexture2_LoadImageData is highly recommended. For supercompressionScheme values other than those mentioned, the result of this function is the same as ktxTexture2_LoadImageData.</p>
<p>The data is loaded into the provided buffer or to an internally allocated buffer, if <code class="param">pBuffer</code> is <code>NULL</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pBuffer</td><td>pointer to the buffer in which to load the image data. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bufSize</td><td>size of the buffer pointed at by <code class="param">pBuffer</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is NULL. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">bufSize</code> is less than the the image data size. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The data has already been loaded or the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> was not created from a KTX source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Insufficient memory for the image data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga032b7f1926861c8b40655527b84f5533" name="ga032b7f1926861c8b40655527b84f5533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga032b7f1926861c8b40655527b84f5533">&#9670;&#160;</a></span>ktxTexture2_LoadImageData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116c">ktx_error_code_e</a> ktxTexture2_LoadImageData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>pBuffer</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>bufSize</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Load all the image data from the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a>'s source. </p>
<p>The data will be inflated if supercompressionScheme == <code>KTX_SS_ZSTD</code> or <code>KTX_SS_ZLIB</code>. The data is loaded into the provided buffer or to an internally allocated buffer, if <code class="param">pBuffer</code> is <code>NULL</code>. Callers providing their own buffer must ensure the buffer large enough to hold the inflated data for files deflated with Zstd or ZLIB. See <a class="el" href="#gaefcaf84425830ba095eb670a275dad34" title="Return the total size in bytes of the uncompressed data of a ktxTexture2.">ktxTexture2_GetDataSizeUncompressed()</a>.</p>
<p>The texture's levelIndex, dataSize, DFD and supercompressionScheme will all be updated after successful inflation to reflect the inflated data.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pBuffer</td><td>pointer to the buffer in which to load the image data. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bufSize</td><td>size of the buffer pointed at by <code class="param">pBuffer</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is NULL. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">bufSize</code> is less than the the image data size. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The data has already been loaded or the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> was not created from a KTX source. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Insufficient memory for the image data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gade1ffc5d31c2f9b5f1e861b59e7619ce" name="gade1ffc5d31c2f9b5f1e861b59e7619ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gade1ffc5d31c2f9b5f1e861b59e7619ce">&#9670;&#160;</a></span>ktxTexture2_NeedsTranscoding()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_bool_t ktxTexture2_NeedsTranscoding </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query if the images are in a transcodable format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga90cc33928a2dae962fb94b3fa2f6575d" name="ga90cc33928a2dae962fb94b3fa2f6575d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga90cc33928a2dae962fb94b3fa2f6575d">&#9670;&#160;</a></span>ktxTexture2_TranscodeBasis()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture2_TranscodeBasis </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture2.html">ktxTexture2</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="ktx_8h.html#a30cc58c576392303d9a5a54b57ef29b5">ktx_transcode_fmt_e</a></td> <td class="paramname"><span class="paramname"><em>outputFormat</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_transcode_flags</td> <td class="paramname"><span class="paramname"><em>transcodeFlags</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Transcode a KTX2 texture with BasisLZ/ETC1S or UASTC images. </p>
<p>If the texture contains BasisLZ supercompressed images, Inflates them from back to ETC1S then transcodes them to the specified block-compressed format. If the texture contains UASTC images, inflates them, if they have been supercompressed with zstd, then transcodes then to the specified format, The transcoded images replace the original images and the texture's fields including the DFD are modified to reflect the new format.</p>
<p>These types of textures must be transcoded to a desired target block-compressed format before they can be uploaded to a GPU via a graphics API.</p>
<p>The following block compressed transcode targets are available: <code>KTX_TTF_ETC1_RGB</code>, <code>KTX_TTF_ETC2_RGBA</code>, <code>KTX_TTF_BC1_RGB</code>, <code>KTX_TTF_BC3_RGBA</code>, <code>KTX_TTF_BC4_R</code>, <code>KTX_TTF_BC5_RG</code>, <code>KTX_TTF_BC7_RGBA</code>, <code><code>KTX_TTF_PVRTC1_4_RGB</code>,</code> <code>KTX_TTF_PVRTC1_4_RGBA</code>, <code>KTX_TTF_PVRTC2_4_RGB</code>, <code>KTX_TTF_PVRTC2_4_RGBA</code>, <code>KTX_TTF_ASTC_4x4_RGBA</code>, <code>KTX_TTF_ETC2_EAC_R11</code>, <code>KTX_TTF_ETC2_EAC_RG11</code>, <code>KTX_TTF_ETC</code> and <code>KTX_TTF_BC1_OR_3</code>.</p>
<p><code>KTX_TTF_ETC</code> automatically selects between <code>KTX_TTF_ETC1_RGB</code> and <code>KTX_TTF_ETC2_RGBA</code> according to whether an alpha channel is available. <code>KTX_TTF_BC1_OR_3</code> does likewise between <code>KTX_TTF_BC1_RGB</code> and <code>KTX_TTF_BC3_RGBA</code>. Note that if <code>KTX_TTF_PVRTC1_4_RGBA</code> or <code>KTX_TTF_PVRTC2_4_RGBA</code> is specified and there is no alpha channel <code>KTX_TTF_PVRTC1_4_RGB</code> or <code>KTX_TTF_PVRTC2_4_RGB</code> respectively will be selected.</p>
<p>Transcoding to ATC &amp; FXT1 formats is not supported by libktx as there are no equivalent Vulkan formats.</p>
<p>The following uncompressed transcode targets are also available: <code>KTX_TTF_RGBA32</code>, <code>KTX_TTF_RGB565</code>, KTX_TTF_BGR565 and KTX_TTF_RGBA4444.</p>
<p>The following <code class="param">transcodeFlags</code> are available.</p>
<dl class="section see"><dt>See also</dt><dd>ktxtexture2_CompressBasis().</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">outputFormat</td><td>a value from the ktx_texture_transcode_fmt_e enum specifying the target format. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">transcodeFlags</td><td>bitfield of flags modifying the transcode operation. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>ktx_texture_decode_flags_e.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Supercompression global data is corrupted. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>The texture's format is not transcodable (not ETC1S/BasisLZ or UASTC). </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>Supercompression global data is missing, i.e., the texture object is invalid. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td>Image data is missing, i.e., the texture object is invalid. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116caf20c350e21ca603f3ffb2bc46235369a">KTX_INVALID_OPERATION</a></td><td><code class="param">outputFormat</code> is PVRTC1 but the texture does does not have power-of-two dimensions. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">outputFormat</code> is invalid. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116cad9ba6e380b7a1d44a10b6626357ee3a1">KTX_TRANSCODE_FAILED</a></td><td>Something went wrong during transcoding. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca04808a4c3abddb237d2a8cf903205496">KTX_UNSUPPORTED_FEATURE</a></td><td>KTX_TF_PVRTC_DECODE_TO_NEXT_POW2 was requested or the specified transcode target has not been included in the library being used. </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca87728a1745ea6333b6fbe041c03036f2">KTX_OUT_OF_MEMORY</a></td><td>Not enough memory to carry out transcoding. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf1e401967a687b40cdf7bba11e72c2b4" name="gaf1e401967a687b40cdf7bba11e72c2b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf1e401967a687b40cdf7bba11e72c2b4">&#9670;&#160;</a></span>ktxTexture_CreateFromMemory()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture_CreateFromMemory </td>
<td>(</td>
<td class="paramtype">const ktx_uint8_t *</td> <td class="paramname"><span class="paramname"><em>bytes</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a></td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from KTX-formatted data in memory according to the data contents. </p>
<p>See <a class="el" href="#ga1f289eb80601208b79561804d2ec0121" title="ktxTexture1_CreateFromMemory">ktxTexture1_CreateFromMemory</a> or <a class="el" href="#ga6805a144f0bfd17b51d46fb28b0786a5" title="ktxTexture2_CreateFromMemory">ktxTexture2_CreateFromMemory</a> for details. </p>
</div>
</div>
<a id="ga57a1ce0d3f2d66439463160d6ce9d2d0" name="ga57a1ce0d3f2d66439463160d6ce9d2d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga57a1ce0d3f2d66439463160d6ce9d2d0">&#9670;&#160;</a></span>ktxTexture_CreateFromNamedFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture_CreateFromNamedFile </td>
<td>(</td>
<td class="paramtype">const char *const</td> <td class="paramname"><span class="paramname"><em>filename</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a></td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a named KTX file according to the file contents. </p>
<p>See <a class="el" href="#ga0319d9a33d3ea78da2ef786205f2a956" title="ktxTexture1_CreateFromNamedFile">ktxTexture1_CreateFromNamedFile</a> or <a class="el" href="#ga8680560274b31da6f3f07ee911055431" title="ktxTexture2_CreateFromNamedFile">ktxTexture2_CreateFromNamedFile</a> for details. </p>
</div>
</div>
<a id="ga180d93562cc6af30c61adf8f6a8fd827" name="ga180d93562cc6af30c61adf8f6a8fd827"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga180d93562cc6af30c61adf8f6a8fd827">&#9670;&#160;</a></span>ktxTexture_CreateFromStdioStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture_CreateFromStdioStream </td>
<td>(</td>
<td class="paramtype">FILE *</td> <td class="paramname"><span class="paramname"><em>stdioStream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a></td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="structktxTexture1.html" title="Class representing a KTX version 1 format texture.">ktxTexture1</a> or <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> from a stdio stream according to the stream data. </p>
<p>See <a class="el" href="#ga4557b9714b41e7c575d295b65e19ed12" title="ktxTexture1_CreateFromStdioStream">ktxTexture1_CreateFromStdioStream</a> or <a class="el" href="#gae9de7e23ffe3ae3aeed4cc95c61699e4" title="ktxTexture2_CreateFromStdioStream">ktxTexture2_CreateFromStdioStream</a> for details. </p>
</div>
</div>
<a id="gaa8dfc7a981b69d26eab73c5405d7182b" name="gaa8dfc7a981b69d26eab73c5405d7182b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa8dfc7a981b69d26eab73c5405d7182b">&#9670;&#160;</a></span>ktxTexture_CreateFromStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture_CreateFromStream </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxStream.html">ktxStream</a> *</td> <td class="paramname"><span class="paramname"><em>pStream</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html#a1cce9de12eb3974a236becfd098bd057">ktxTextureCreateFlags</a></td> <td class="paramname"><span class="paramname"><em>createFlags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> **</td> <td class="paramname"><span class="paramname"><em>newTex</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a ktx1 or ktx2 texture according to the stream data. </p>
<p>See <a class="el" href="#ga2e9c9d8a1c02732c87db733d3449b337" title="ktxTexture1_CreateFromStream">ktxTexture1_CreateFromStream</a> or <a class="el" href="#ga1e865473d23f82fc22a16bb3eadf60ed" title="ktxTexture2_CreateFromStream">ktxTexture2_CreateFromStream</a> for details. </p>
</div>
</div>
<a id="gace44d98fa78b94c282016e7cf8a88b7e" name="gace44d98fa78b94c282016e7cf8a88b7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace44d98fa78b94c282016e7cf8a88b7e">&#9670;&#160;</a></span>ktxTexture_GetData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_uint8_t * ktxTexture_GetData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a pointer to the texture image data. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga553c3438e75628c6d7e2280989e539c4" name="ga553c3438e75628c6d7e2280989e539c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga553c3438e75628c6d7e2280989e539c4">&#9670;&#160;</a></span>ktxTexture_GetDataSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_size_t ktxTexture_GetDataSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the total size of the texture image data in bytes. </p>
<p>For a <a class="el" href="structktxTexture2.html" title="Class representing a KTX version 2 format texture.">ktxTexture2</a> with supercompressionScheme != KTX_SS_NONE this will return the deflated size of the data.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga19d8786eea0e62ab55d945bff838d32c" name="ga19d8786eea0e62ab55d945bff838d32c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga19d8786eea0e62ab55d945bff838d32c">&#9670;&#160;</a></span>ktxTexture_GetElementSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_uint32_t ktxTexture_GetElementSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the size in bytes of an elements of a texture's images. </p>
<p>For uncompressed textures an element is one texel. For compressed textures it is one block.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gacf9e393ff766982ccb79ad915975971f" name="gacf9e393ff766982ccb79ad915975971f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacf9e393ff766982ccb79ad915975971f">&#9670;&#160;</a></span>ktxTexture_GetRowPitch()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ktx_uint32_t ktxTexture_GetRowPitch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ktx_uint32_t</td> <td class="paramname"><span class="paramname"><em>level</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return pitch between rows of a texture image level in bytes. </p>
<p>For uncompressed textures the pitch is the number of bytes between rows of texels. For compressed textures it is the number of bytes between rows of blocks. The value is padded to GL_UNPACK_ALIGNMENT, if necessary. For all currently known compressed formats padding will not be necessary.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">level</td><td>level of interest.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the row pitch in bytes. </dd></dl>
</div>
</div>
<a id="gae7c4b8bbe26379f2076f93050c0673c1" name="gae7c4b8bbe26379f2076f93050c0673c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae7c4b8bbe26379f2076f93050c0673c1">&#9670;&#160;</a></span>ktxTexture_IterateLevelFaces()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="ktx_8h.html#ad2efa40e38ebae48371375db92d34eaa">KTX_error_code</a> ktxTexture_IterateLevelFaces </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structktxTexture.html">ktxTexture</a> *</td> <td class="paramname"><span class="paramname"><em>This</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structktxTexture.html#aca6d87118e724ac77f17e0576e191513">PFNKTXITERCB</a></td> <td class="paramname"><span class="paramname"><em>iterCb</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>userdata</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the levels or faces in a <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object. </p>
<p>Blocks of image data are passed to an application-supplied callback function. This is not a strict per-image iteration. Rather it reflects how OpenGL needs the images. For most textures the block of data includes all images of a mip level which implies all layers of an array. However, for non-array cube map textures the block is a single face of the mip level, i.e the callback is called once for each face.</p>
<p>This function works even if <code class="param">This-&gt;pData</code> == 0 so it can be used to obtain offsets and sizes for each level by callers who have loaded the data externally.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">This</td><td>pointer to the <a class="el" href="structktxTexture.html" title="Base class representing a texture.">ktxTexture</a> object of interest. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iterCb</td><td>the address of a callback function which is called with the data for each image block. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">userdata</td><td>the address of application-specific data which is passed to the callback along with the image data.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>KTX_SUCCESS on success, other KTX_* enum values on error. The following are returned directly by this function. <code class="param">iterCb</code> may return these for other causes or may return additional errors.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca0a3b899c794df326ebcea8dd3a679c14">KTX_FILE_DATA_ERROR</a></td><td>Mip level sizes are increasing not decreasing </td></tr>
<tr><td class="paramname"><a class="el" href="ktx_8h.html#a7780d97ec4de6aa30c4726fb71e3116ca7da41bb3195d6cc93a513ac18bc91e4f">KTX_INVALID_VALUE</a></td><td><code class="param">This</code> is <code>NULL</code> or <code class="param">iterCb</code> is <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on <span class="timestamp"></span> for libktx Reference by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.16.1 </li>
</ul>
</div>
</body>
</html>