Table of Contents
Table of Contents
May 2019 - October 2019
Breaking Changes
- The
Font
constructor has now inverted parameters: fntFilename
as first and texFilename
as second
- The reason for that is the new single parameter constructor
SceneNode::parentNode()
getter has been renamed to just parent()
, to be consistent with the new setParent()
setter
- The
xResolution
and yResolution
fields of the AppConfiguration
class have been replaced by a single 2D resolution vector
- The
setResolution()
helper method has been removed as it is now possible to call resolution.set()
- In Lua
x_res
and y_res
have been replaced by the resolution
2D vector
- The old non ImGui debug overlay has been deleted. If you need the debug overlay you also need to enable the ImGui integration
- As part of this change the
fontTexFilename
and fontFntFilename
strings in the AppConfiguration
class have been deleted
- The
withProfilerGraphs
and withInfoText
flags in the AppConfiguration
class has been unified into a single withDebugOverlay
flag
- You have to explicitely set the new flag to
true
to enable the debug overlay even when your application is compiled in debug mode
- Many
nctl::String::copy()
methods have been turned into assign()
methods in order to be more consistent with STL
- The
Timer::now()
method has been removed, refer to the new TimeStamp
class
New Features
- Emscripten is now supported as a target platform, meaning you can now use the nCine for web games! 🕸️
- The user can now query the available fullscreen video modes on PC and choose one
- The
IGfxDevice
interface has been enriched with methods to query the current video mode, the list of available ones and to set a new mode
- A new
deferShaderQueries
flag has been added to the AppConfiguration
classes
- When it is set to
true
all the shader error checks and introspection queries are deferred upon the first use of the shader, if it is ever used.
- The option allows for decreased starting time at the expense of possible stutters when the shader is first used in a frame
- New methods have been added to the audio classes to query their state
- They were used in the new Audio Players section of the ImGui debug overlay interface
- If you use the nCine compiled as a static library you have now access to more functionalities in the OpenGL classes
- You can now create PBOs and TBOs.
- You can now use
GL_SAMPLER_1D
and GL_SAMPLER_3D
types in shaders
- A new
GLCullFace
class has been added to track OpenGL face culling state
- The
Font
class now relies on FntParser
class to extract all the data from a FNT file
- More checks are now performed to ensure the text can be properly rendered
- More glyph channel configurations are now supported and rendered correctly
- The
Font
class can be constructed with a single parameter: the FNT file. The texture will be loaded according to the file specified in the first page
tag.
- When you compile the engine you can now choose to disable the support for various dependency libraries and features
- You can disable threads support, Lua bindings, Png or WebP image loading, Ogg Vorbis sound loading or audio altogether
Improvements
- The version of the integrated Tracy has gone from v0.4.1 to v0.5
- It is now easier to use Tracy in custom nCine projects, including on Android
- Threads can be named so that they can be tracked in the Tracy profiler
- You can now also retrieve current thread priority or set a new one
- All log entries are written out as coloured Tracy messages
- Threads id are invalidated on join and cancel so that they can be reused
- The version of the integrated ImGui has gone from v1.70 to v1.73
- The GameController mapping database has been updated from the one included in SDL 2.0.9 to the one in SDL 2.0.10
- The
SceneNode
classes has seen the addition of long awaited helper methods in the shape of setParent()
, alpha()
and absAlpha()
- The first one makes it easy and intuitive to set a node parent without going the opposite way by calling
parent->addChildNode(this)
- The alpha related methods should make it easier to query for a node alpha value
- There are also new Lua methods for scene nodes:
set_parent()
, get_alpha()
and set_alpha()
- The new
TimeStamp
class can be used to collect timestamps at the full precision of the internal clock
- The
Time
class has been enhanced with stop()
and totalTime()
methods to aggregate multiple time spans
- Most methods of the
TimeStamp
class are also accessible through the Lua API
- It is now possible to
assign()
a certain numbers of characters from a C string to an nctl::String
object
- You can now enable the ImGui debug overlay even when the scenegraph is disabled
- In this case be sure to track OpenGL states using
GLBlending
, GLDepthTest
and the new GLCullFace
class
- The
Font
class has a new query method, numKernings()
, to retrieve the number of kerning pairs in a font (it is called num_kernings()
in Lua)
- You can access the array of animations in an
AnimatedSprite
and the array of rectangles in a RectAnimation
- On Windows the executables use the Windows subsystem instead of the console one
- They will also expose version properties thanks to the VERSIONINFO file
- The Android Gradle plugin version has been updated from 3.4.0 to 3.4.1 and Android build tools from 28.0.3 to 29.0.2
- The changes have been reflected in the template project as well
Fixes
- Compiler warnings related with
nctl::UniquePtr
wrapping forward declared classes have been fixed. They could have sometimes led to incorrect object deletions and possible leaks. 😨
- The OpenAL implementation has been rewritten and many bugs that were lurking in the code should have been squashed 🐛
- Some changes dictated by the layout of the new
ncTemplate
project
- The CMake scripts now expect a
nCine-data/icons/icon.ico
file instead of the old nCine.ico
- Installers are now built with the
CPACK_PACKAGE_VENDOR
and CPACK_PACKAGE_HOMEPAGE_URL
variables correctly set
- The returned value for
GL_MAX_UNIFORM_BLOCK_SIZE
is now clamped to 64kB because some OpenGL drivers might return very big numbers