APEX 1.3 to 1.4 Migration Guide

This guide highlights the significant API changes that have occured between APEX 1.3 and APEX 1.4. This guide is aimed at a developer already using APEX 1.3.x who wants to know the minimum amount of work to upgrade to APEX 1.4. Note that the PhysX API has also changed from PhysX 3.3.x to 3.4. Refer to the PhysX documentation for a description of PhysX API changes.

General

Supported PhysX versions

PhysX 2.* versions not supported in APEX 1.4. Apex supports 2 builds: with PhysX 3.4 for all modules and and without for Clothing module. Due to build APEXSDK and Clothing module without PhysX PxFoundation and some other PhysX modules were moved to PxShared library. APEX 1.4 uses this library.

General public interface changes

APEX 1.4 parental namespace changed from physx::apex to nvidia::apex.

All public interface files were moved to APEXSDK/inlclude library (the same as PhysX file structure) according to rules:
framework/public/* => include/* module/<moduleName>/public/* => include/<moduleName>/* NxParameterized/public/* => include/nvparameterized/*

Nx and NxApex prefixes for public files were removed. For example, NxApexActor.h in APEX 1.4 has name Actor.h. But note that in some cases Apex prefix weren’t removed, for example, NxApexDefs.h in APEX 1.4 has name ApexDefs.h

NxParameterized was refactored and renamed to NvParameterized.

NxMat33Legacy, NxMat34Legacy support were removed and this types were replaced with physx::PxMat33/physx::PxMat44/physx::PxTransform in all public files.

Global LOD feature was removed from APEXSDK. Corresponding methods were removed:
Scene.h: setLODResourceBudget, getLODResourceConsumed Module.h: getLODUnitCost, setLODUnitCost, getLODBenefitValue, setLODBenefitValue, getLODEnabled, setLODEnabled
Physical LOD methods in Actor.h were renamed:
forcePhysicalLod => forceLod getActivePhysicalLod => getActiveLod forcePhysicalLod => forceLod
NxApexParameter support was removed from Module.h:
class NxApexParameter Module methods: getNbParameters, getParameters

Removed modules

DynamicSystem, Explosion, FieldBoundary and NxFluidIos modules were removed in APEX 1.4.

Legacy module

In general, assets created with previous versions of APEX should “just work” with APEX 1.4. The application must load the legacy module, which contains all the code that allows APEX to automatically upgrade assets to the latest version.

In APEX 1.4 there is a single legacy module (APEX_Legacy).

apexSDK->createModule(“Legacy”);

Likewise, there is a single legacy module header file ModuleLegacy.h. On platforms that use static linking (consoles for example), the application only needs to include ModuleLegacy.h and make single call:

nvidia::apex::instantiateModuleLegacy();

Rendering interface changes

Removed methods:
Scene.h: prepareRenderResourceContexts

Platforms support

Removed PS3 and xbox3 support. Added PS4 and XboxOne support.

Samples and snippets

Added new samples_v2 and snippets. They are significantly simplier than old samples. Old samples APEXSDK/samples now for internal use only and they removed from distribution.