Files
recastnavigation/md_Docs_2__3__FAQ.html

149 lines
7.6 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.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Recast Navigation: FAQ</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>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome-sidebar-only.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="logo.png"/></td>
<td id="projectalign">
<div id="projectname">Recast Navigation
</div>
<div id="projectbrief">Navigation-mesh Toolset for Games</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</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">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('md_Docs_2__3__FAQ.html',''); initResizable(); });
/* @license-end */
</script>
<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><div class="header">
<div class="headertitle"><div class="title">FAQ</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="faq"></a> </p>
<h1><a class="anchor" id="which-c-version-and-features-do-recast-use"></a>
Which C++ version and features do Recast use?</h1>
<p>All code in Recast and Detour strictly adheres to the following:</p>
<ul>
<li>C++98</li>
<li>no STL</li>
<li>no exceptions</li>
<li>no RTTI</li>
<li>minimal inheritance</li>
<li>minimal templates</li>
</ul>
<p>RecastDemo is a bit looser with these requirements, as it's only meant to showcase Recast usage and functionality, not be part of a shipped product.</p>
<h1><a class="anchor" id="what-coordinate-system-and-triangle-winding-order-does-recast-use"></a>
What coordinate system and triangle winding order does Recast use?</h1>
<p>Recast expects clockwise-winding triangles and uses a right-handed, Y-up coordinate system.</p>
<h1><a class="anchor" id="why-doesnt-recast-use-stlexceptionsrttic11my-favorite-c-feature"></a>
Why doesn't Recast use STL/Exceptions/RTTI/C++11/my favorite C++ feature?</h1>
<p>Recast has always strived to maximize its ease of integration into an existing codebase, its portability to unique platforms, and its runtime performance. Recast was forged in the fires of game development, and as such follows the cultural norms of the games industry.</p>
<p>For example, some platforms have limited C++ compilers and STL implementations, so avoiding newer C++ features and the STL entirely helps tremendously when working in those environments. Additionally, exceptions and RTTI require a non-trivial runtime overhead to support. This is in conflict with Recast's goal of maximum performance.</p>
<h1><a class="anchor" id="how-do-i-use-recast-to-build-a-navmesh"></a>
How do I use Recast to build a navmesh?</h1>
<p>The process is thoroughly outlined and documented in the RecastDemo project. <code><a class="el" href="Sample__SoloMesh_8cpp.html">Sample_SoloMesh.cpp</a></code> is a good introduction to the general process of building a navmesh. It builds a single, unified navmesh and is the simpler and more limited of the two examples. <code><a class="el" href="Sample__TileMesh_8cpp.html">Sample_TileMesh.cpp</a></code> builds a tiled navmesh that supports all of Recast and Detour's features around dynamic obstacles and runtime re-meshing.</p>
<h1><a class="anchor" id="how-do-recast-and-detour-handle-memory-allocations"></a>
How do Recast and Detour handle memory allocations?</h1>
<p>Recast and Detour strive to avoid heap allocations whenver possible. When heap allocations are necessary, they are routed through centralized allocation and de-allocation functions. These centralized functions allow you to optionally override them with custom allocator implementations, but just use <code>malloc</code> and <code>free</code> by default. Check out <code><a class="el" href="RecastAlloc_8h.html">RecastAlloc.h</a></code> and <code><a class="el" href="DetourAlloc_8h.html">DetourAlloc.h</a></code> for more.</p>
<h1><a class="anchor" id="does-recast-do-any-logging"></a>
Does Recast do any logging?</h1>
<p>Yes and no: recast provides a <code>log(...)</code> function through <code><a class="el" href="classrcContext.html" title="Provides an interface for optional logging and performance tracking of the Recast build process.">rcContext</a></code>. There are currently 3 levels: progress, warning, and error. If logging is enabled, the context calls the doLog() virtual function which is empty by default.</p>
<h1><a class="anchor" id="what-are-the-dependencies-for-recastdemo"></a>
What are the dependencies for RecastDemo?</h1>
<ul>
<li>SDL 2</li>
<li>OpenGL</li>
<li>GLU </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
&nbsp;&nbsp;<a href="https://github.com/recastnavigation/recastnavigation">Project Home</a>
| <a href="./License.txt">Licence (ZLib)</a>
| Copyright 2009 Mikko Mononen
</ul>
</div>
</body>
</html>