# Candera V3.2.1

Release Date: June 2016  
  
To keep backwards compatibility for any interface change in the public API the old interface has been kept and marked as deprecated. The deprecated interfaces will be removed in future versions. Compiler warnings will be generated when using a deprecated interface through the usage of Candera Macro CANDERA\_DEPRECATED\_3\_2\_1.

# Candera/FeatStd CMake Build System Changes

<div class="contents" id="bkmrk-v3.2.0-v3.2.1-cander"><div class="contents"><div class="textblock"><table border="1" class="doxtable" style="border-collapse: collapse; width: 800px;"><tbody><tr><th>**V3.2.0**</th><th>**V3.2.1**</th></tr><tr><td>CANDERA\_MONITOR\_CUSTOM\_EXPERIMENTS</td><td>MONITOR\_CANDERA\_CUSTOM\_EXPERIMENTS</td></tr><tr><td>CANDERA\_PERFORMANCE\_RECORDER\_DISABLED   
<dl class="note"><dd>  
</dd></dl><p class="callout info">logic has been inverted.</p>

</td><td>MONITOR\_CANDERA\_PERFORMANCE\_RECORDER\_ENABLED</td></tr><tr><td>MONITOR\_OMIT\_OPENGL\_RECORDING   
<dl class="note"><dd>   
</dd></dl><dl class="note"><dd><p class="callout info">logic has been inverted.  
Flag were not part of CMake in previous versions.</p>

</dd></dl></td><td>MONITOR\_RECORDING\_OPENGL\_ENABLED</td></tr><tr><td>MONITOR\_OMIT\_2D\_CALLS\_RECORDING   
<dl class="note"><dd>   
</dd></dl><dl class="note"><dd><p class="callout info">logic has been inverted.  
Flag were not part of CMake in previous versions.</p>

</dd></dl></td><td>MONITOR\_RECORDING\_2D\_CALLS\_ENABLED</td></tr><tr><td>CANDERA\_PERFMON\_BUFFERSIZE   
<dl class="note"><dd>  
</dd></dl><p class="callout info">logic has been inverted.  
Flag were not part of CMake in previous versions.</p>

**See also:**

<dl class="see"><dd><span style="color: rgb(230, 126, 35);">[FeatStd CMake Switches](https://doc316en.candera.eu/link/885#bkmrk-page-title)</span></dd></dl></td><td>MONITOR\_CANDERA\_PERF\_RECORD\_BUFFER\_SIZE</td></tr></tbody></table>

</div></div></div>Existing monitor settings have been moved from code to CMake settings:

<div class="contents" id="bkmrk-name-description-pos"><div class="contents"><div class="textblock"><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse; width: 800px; border-width: 1px; border-spacing: 0px; height: 83.1393px;" width="1150"><tbody><tr bgcolor="#d4d4d4" style="height: 27.7131px;"><th style="width: 302.641px; border-width: 1px; padding: 5px; height: 27.7131px;">**Name**</th><th style="width: 358.641px; border-width: 1px; padding: 5px; height: 27.7131px;">**Description**</th><th style="width: 147.719px; border-width: 1px; padding: 5px; height: 27.7131px;">**Possible values**</th></tr><tr style="height: 27.7131px;"><td style="width: 302.641px; border-width: 1px; padding: 5px; height: 27.7131px;">MONITOR\_RECORDING\_OPENGL\_ENABLED</td><td style="width: 358.641px; border-width: 1px; padding: 5px; height: 27.7131px;">Enables or disables OpenGL monitor recordings.</td><td style="width: 147.719px; border-width: 1px; padding: 5px; height: 27.7131px;">ON/OFF</td></tr><tr style="height: 27.7131px;"><td style="width: 302.641px; border-width: 1px; padding: 5px; height: 27.7131px;">MONITOR\_RECORDING\_2D\_CALLS\_ENABLED</td><td style="width: 358.641px; border-width: 1px; padding: 5px; height: 27.7131px;">Enables or disables monitoring of 2D driver calls.</td><td style="width: 147.719px; border-width: 1px; padding: 5px; height: 27.7131px;">ON/OFF</td></tr></tbody></table>

</div></div></div>New CMake variable was added for Candera2D layout clipping:

<div class="contents" id="bkmrk-name-description-pos-0"><div class="contents"><div class="textblock"><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse; width: 800px; height: 76.3907px; border-width: 1px; border-spacing: 0px;" width="1150"><tbody><tr bgcolor="#d4d4d4" style="height: 29.7969px;"><th style="width: 269.656px; height: 29.7969px; border-width: 1px; padding: 5px;">**Name**</th><th style="width: 397.656px; height: 29.7969px; border-width: 1px; padding: 5px;">**Description**</th><th style="width: 141.688px; height: 29.7969px; border-width: 1px; padding: 5px;">**Possible values**</th></tr><tr style="height: 46.5938px;"><td style="width: 269.656px; height: 46.5938px; border-width: 1px; padding: 5px;">CANDERA\_LAYOUT\_CLIPPING\_ENABLED</td><td style="width: 397.656px; height: 46.5938px; border-width: 1px; padding: 5px;">Defines whether Candera2D layout clipping (setting a clipping rectangle for every render node) is enabled or not.</td><td style="border-width: 1px; padding: 5px;">ON/OFF</td></tr></tbody></table>

---

</div></div></div>

# Candera Engine 3D

#### New Functions in Renderer

[Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.") has new functions to activate and deactivate a camera ([Renderer::ActivateCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html#a877ebbcf0c736d86fd13cb24a0eac593), [Renderer::DeactivateCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html#aaf7f7ac9ec4402c24c70bcd04fd0bfa1)), to activate a clear mode (Renderer::ActivateClearMode), and scissor (Renderer::ActivateScissor).

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### Dirty Area Management

[Renderer::RenderCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html#a10dbe66b15c60f44cce3aaccd38d2ee5) now accepts a rectangle as the parameter that defines a dirty area. A dirty area denotes an area on the screen or render target in which the content has changed, thus only this area requires updating by the [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface."). The dirty area rectangle parameter defaults to the full size of the screen or render target. If the user provides his own dirty area rectangle, only this area will be cleared and drawn to. Objects whose bounding rectangle is outside the dirty area will be skipped. Generally speaking, the smaller the dirty area, the smaller the bandwidth required for clearing and drawing, and the more objects can be skipped.

This feature also adds the properties [Renderer::Statistics::CulledNodesUsingDirtyAreaScissor](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer_1_1_statistics.html#a15baae47c2e48398d527823f402b0e93 "Number of nodes culled due to their bounding box being outside the dirty area.") and [Renderer::Statistics::AverageDirtyAreaFactor](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer_1_1_statistics.html#a2ef679fb55bffe7c2a42e36924779ee0 "Average dirty area factor (dirty area / renderTarget area) in the range of (0..1]."). CulledNodesUsingDirtyAreaScissor denotes the number of objects that could be skipped by the [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.") due to their bounding rectangle being outside the dirty area. AverageDirtyAreaFactor denotes the average dirty area divided by the size of the screen or render target. E.g. a factor of 0.8 means that the average dirty area accumulated since the last [Renderer::Statistics::Reset](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer_1_1_statistics.html#abb63e5922adbe34593df495ed2694294) is 80% of the size of the screen or render target. The bigger the factor, the less performance improvement can be expected. Under some circumstances, which depends on the actual content being used, performance can even decrease. Therefore always profile this feature to see if your content benefits from it or not.

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">---

</div></div></div>#### New Renderer::Statistics properties

[Renderer::Statistics](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer_1_1_statistics.html) now also exposes the number of color buffer, depth buffer, and stencil buffer clears, as well as the number of nodes that were culled due to using a dirty area, and the ratio of the average dirty area to its screen/render target area.

<div class="contents" id="bkmrk--1"><div class="contents"><div class="textblock">---

</div></div></div>#### CanvasGroup::TranslatePivot renamed

[CanvasGroup::TranslatePivot](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_group.html#a593b45667010200bd4e35f75dbaf182d) has been renamed to [CanvasGroup::TranslatePivot2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_group.html#a029decdb2d21ed93464b08e81547922e).

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">---

</div></div></div>#### PlanarShadow::GetId and SetId renamed

[PlanarShadow::GetId](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_candera_object.html#a8f0f015836c983726e590472024816aa) has been renamed to [PlanarShadow::GetStencilBufferId](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_planar_shadow.html#abdfe7d5274e03d6b40c42e483c5a8c97). In the same manner also [PlanarShadow::SetStencilBufferId](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_planar_shadow.html#a4c748372ea9c301632bd0a2af9a20a34).

<div class="contents" id="bkmrk--3"><div class="contents"><div class="textblock">---

</div></div></div>#### Camera Look-At Node

A new feature allows to set a look-at node for a camera. If such a node is set the camera will always look at that node.

<div class="contents" id="bkmrk-see-also%3A-camera%3A%3Ase"><div class="contents"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>[Camera::SetLookAtNode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera.html#a53b1e4854b4c8b15369b82facb560c07).</dd></dl>---

</div></div></div>#### Normalize Rectangle from Render Target Space

A new function to normalize a given rectangle from the render target space has been added.

<div class="contents" id="bkmrk-see-also%3A-math3d%3A%3Ano"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>[Math3D::NormalizeRectangle()](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_math3_d.html#a5acae572700c94a5e8e898d71addb30f).</dd></dl></div></div>---

# Candera Engine 2D

#### Dirty Area Management

[Renderer2D::RenderCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html#a44c76b6ec44f705ed78d71ca4f05b66b) now accepts a rectangle as the parameter that defines a dirty area. A dirty area denotes an area on the screen or render target in which the content has changed, thus only this area requires updating by the [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface."). The dirty area rectangle parameter defaults to the full size of the screen or render target. If the user provides his own dirty area rectangle, only this area will be cleared and drawn to. Objects whose bounding rectangle is outside the dirty area will be skipped. Generally speaking, the smaller the dirty area, the smaller the bandwidth required for clearing and drawing, and the more objects can be skipped.

This feature also adds the properties [Renderer2D::Statistics::BlitsCulled](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer2_d_1_1_statistics.html#a9c5d631131c9cf9f5b46c9fbd116a9a2 "Number of Blits that were culled, thus not submitted to the RenderDevice2D.") and [Renderer2D::Statistics::AverageDirtyAreaFactor](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer2_d_1_1_statistics.html#a1c7caace88e576ed72ff8d3aa9d9086f "Average dirty area factor (dirty area / renderTarget area) in the range of (0..1]."). BlitsCulled denotes the number of objects that could be skipped by the [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.") due to their bounding rectangle being outside the dirty area. AverageDirtyAreaFactor denotes the average dirty area divided by the size of the screen or render target. E.g. a factor of 0.8 means that the average dirty area accumulated since the last [Renderer2D::Statistics::Reset](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer2_d_1_1_statistics.html#ac6f3f3b0a5ea14d2de26f4bd348c2c0c) is 80% of the size of the screen or render target. The bigger the factor, the less performance improvement can be expected. Under some circumstances, which depends on the actual content being used, performance can even decrease. Therefore always profile this feature to see if your content benefits from it or not.

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### Renderer2D::Statistics

[Renderer2D::Statistics](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_renderer2_d_1_1_statistics.html) provides information on how many blits and clears were submitted to the RenderDevice2D in the process of executing [Renderer2D::RenderCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html#a44c76b6ec44f705ed78d71ca4f05b66b) or [Renderer2D::RenderAllCameras](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html#aebe992159ee6bc5406b5c0feba870bb4). Furthermore the statistics keep track of how many blits could be culled by the [Renderer2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html "The class Renderer2D represents the unique Candera 2D render interface to the application. Each render call shall be triggered via the Renderer2D interface."), as well as the ratio of the average dirty area to its screen/render target area.

<div class="contents" id="bkmrk--0"><div class="textblock">---

</div></div>

# Candera Scripting

#### New Lua Functions

Two new Lua functions have been added in this version:

<div class="contents" id="bkmrk-candera.setenabled-c"><div class="contents"><div class="textblock">- [Candera.SetEnabled](http://dev.doc.cgistudio.at/APILINK/group___lua_binding_general_functions.html#CanderaLuaSetEnabled)
- [Candera.IsEnabled](http://dev.doc.cgistudio.at/APILINK/group___lua_binding_general_functions.html#CanderaLuaIsEnabled)

---

</div></div></div>#### New Script Callbacks.

This version adds 5 new Callbacks:

<div class="contents" id="bkmrk-awake-ondestroy-onen"><div class="textblock">- [Awake](http://dev.doc.cgistudio.at/APILINK/group___lua_tutorial.html#LuaTutorialFunctionsCalledByCandera)
- [OnDestroy](http://dev.doc.cgistudio.at/APILINK/group___lua_tutorial.html#LuaTutorialFunctionsCalledByCandera)
- [OnEnable](http://dev.doc.cgistudio.at/APILINK/group___lua_tutorial.html#LuaTutorialFunctionsCalledByCandera)
- [OnDisable](http://dev.doc.cgistudio.at/APILINK/group___lua_tutorial.html#LuaTutorialFunctionsCalledByCandera)
- [LateUpdate](http://dev.doc.cgistudio.at/APILINK/group___lua_tutorial.html#LuaTutorialFunctionsCalledByCandera)

</div></div>---

# Candera System

#### New EntityComponentSystem Function

Components from the EntityComponentSystem now have a function to see if the component is attached to an entity (Component::IsAttached). [Rectangle](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_rectangle.html "Represents a rectangle.") now has a set function (Rectangle::Set).

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### New MetaInfo Macro

A new CdaDeprecated macro has been added to make a MetaInfoBase object deprecated. This was further used to deprecate all [TextBrush](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_text_brush.html "Output alpha only glyph data. A color may be specified, which is applied to the color channels...") effects.

---

# Candera Device

#### Performance Recorder for WaitSync added

Monitor instrumentation has been added for WaitSync methods of Render Targets. Timings of WaitSync will be measured for Analyzer usage.

<div class="contents" id="bkmrk-see-also%3A-candera%3A%3As"><div class="contents"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>Candera::Synchronizable::WaitSync</dd></dl>---

</div></div></div>#### Extended PlatformDescrition structure

A new field of PlatformDescription defines whether the platform uses a Window Manager.

---

# Candera Globalization

#### Threadsafe Globalization

The CanderaGlobalization classes have been enhanced for thread-safety. Especially [Candera::Globalization::CultureChangeListener](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_globalization_1_1_culture_change_listener.html) now handles [Candera::Globalization::CultureChangeListener::OnCultureChanged](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_globalization_1_1_culture_change_listener.html#ad34d13c0afad927f5448437087da15f5) notification in a thread safe way.

<div class="contents" id="bkmrk-see-also%3A-candera%3A%3Ag"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>[Candera::Globalization::CultureChangeListener::Obtain](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_globalization_1_1_culture_change_listener.html#a3ba3d6ef80d584acede70b5759613020) and [Candera::Globalization::CultureChangeListener::Release](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_globalization_1_1_culture_change_listener.html#a9dcdde7c3e6c98fb572efebbdf7f5218).</dd></dl></div></div>---

# TextEngine

#### Extended GlyphCacheAccess

[TextRendering::GlyphCacheAccess](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_text_rendering_1_1_glyph_cache_access.html "GlyphCacheAccess is responsible with providing an interface to the caching system, by which to store cached bitmaps. The caching system works by creating a new instance of each bitmap for each GlyphCacheAccess object, so each class extending this interface should behave like a singleton.") interface was extended with a function that should check if a glyph is valid in current context, even if cached. If the GlyphCacheAccess implementation returns false on this method, the glyph caching system will recall TextRendering::GlyphCacheAccess::Create and will replace the cached item with the one provided by the new call. Create function is extended with a parameter representing the old cached item for reference.

---

# Migration Guide

Following an overview about interface changes between [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") V3.2.0 and [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") V3.2.1.

<div class="contents" id="bkmrk-description-candera-"><div class="textblock"><table class="doxtable"><tbody><tr><th>**Description**</th><th>**[Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") V3.2.0**</th><th>**[Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") V3.2.1**

</th></tr><tr><td>Activating [ClearMode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_clear_mode.html "Describes how a viewport is cleared. The color buffer may be cleared using a given color...") moved to [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.")</td><td>[ClearMode::Activate()](http://dev.doc.cgistudio.at/APILINK/group___c_o_u_r_i_e_r___t_r_a_n_s_i_t_i_o_n_s.html#gga5d0c24bca24009c53c455ef2e77ff2caa2ef10430976350af6e16142bd380932c)</td><td>Renderer::ActivateClearMode(const ClearMode\*)

</td></tr><tr><td>Activating [ClearMode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_clear_mode.html "Describes how a viewport is cleared. The color buffer may be cleared using a given color...") via [Camera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera.html "A Camera provides Modelview and Projection matrices. Camera is a Transformable.* The eye point is set...") moved to [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.")</td><td>ClearMode::Activate(const Camera&amp;)</td><td>Renderer::ActivateClearMode(const Camera&amp;)

</td></tr><tr><td>Setting a shader uniform moved to [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.")</td><td>RenderDevice::SetUniform(Handle, const Char\*, const void\*, Shader::UniformType, UInt)</td><td>Renderer::SetUniform(Handle, const Char\*, const void\*, Shader::UniformType, UInt)

</td></tr><tr><td>Submitting a drawcall moved to [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.")</td><td>RenderDevice::DrawVertexBufffer(const VertexBuffer&amp;)</td><td>Renderer::Draw(const VertexBuffer&amp;)

</td></tr><tr><td>Submitting an instanced drawcall moved to [Renderer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html "The class Renderer represents the unique Candera render interface to the application. Each render call an base of Candera shall be triggered via the Renderer interface.")</td><td>RenderDevice::DrawInstancedVertexBuffer(const VertexBuffer&amp;, UInt32)</td><td>[Renderer::Draw(const VertexBuffer&amp;, UInt)](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer.html#aee4c9a181d71f8358cc9984d487ab275)

</td></tr><tr><td>Setting the transformation matrix moved to [Renderer2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html "The class Renderer2D represents the unique Candera 2D render interface to the application. Each render call shall be triggered via the Renderer2D interface.")</td><td>RenderDevice2D::SetTransformationMatrix(ContextHandle2D, SurfaceType, const Matrix3x2&amp;)</td><td>Renderer2D::SetTransformationMatrix(ContextHandle2D, SurfaceType, const Matrix3x2&amp;)

</td></tr><tr><td>Blit moved to [Renderer2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html "The class Renderer2D represents the unique Candera 2D render interface to the application. Each render call shall be triggered via the Renderer2D interface.")</td><td>RenderDevice2D::Blit(ContextHandle2D)</td><td>Renderer2D::Blit(ContextHandle2D)

</td></tr><tr><td>Clear moved to [Renderer2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html "The class Renderer2D represents the unique Candera 2D render interface to the application. Each render call shall be triggered via the Renderer2D interface.")</td><td>RenderDevice2D::Clear(ContextHandle2D, Float, Float, Float, Float)</td><td>[Renderer2D::Clear(ContextHandle2D, Float, Float, Float, Float)](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_renderer2_d.html#aad0af8d8d6fb588579acfd1724481e5f)

</td></tr><tr><td>Implementation of GlyphCacheAccess::Create</td><td>UInt8\* CustomGlyphCache::Create(const GlyphBitmap &amp;bitmap) { Create and return new item based on bitmap }</td><td>UInt8\* CustomGlyphCache::Create(const GlyphBitmap &amp;bitmap, UInt8\* cacheItem) { Create or update the cacheItem and return it. }

</td></tr></tbody></table>

</div></div>---

# 64 Bit Support

Support for building with **64 bit** has been **added**. Please note that **32 bit** builds are **no longer supported**. In order to obtain a 64 bit build, one has to configure the build to use a 64 bit compiler. This can be done during CMake configuration. This configuration step can be performed during CMake setup. For users with Visual Studio versions earlier than Visual Studio 2019 (version 16), make sure to select 'x64' as the optional platform for the generator during CMake configuration.  
  
Doing this will automatically enable the CMake variable FEATSTD\_64BIT\_PLATFORM which is further used in [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]").

Two new types have been introduced for unsigned and signed integers which extend to the correct size when used in a 64 bit system. These are **FeatStd::SizeType** and **FeatStd::OffsetType** (equivalent to std::size\_t type and std::ptrdiff\_t types).

<p class="callout info">The API has been adapted at various locations to use FeatStd::SizeType and FeatStd::OffsetType instead of integer types. Application code using a previous version will be compatible due to implicit integer conversion. Please take care on compiler warnings related to type conversions, alignment casts and signed/unsigned comparisons.</p>

---