RAMSES Documentation  27.0.130
Information for RAMSES users and developers
ramses-example-local-viewport-link/src/main.cpp

Example of linking viewport parameters to control scene position on screen

// -------------------------------------------------------------------------
// Copyright (C) 2014 BMW Car IT GmbH
// -------------------------------------------------------------------------
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
// -------------------------------------------------------------------------
#include "ramses-client.h"
#include <unordered_set>
#include <thread>
#include <unordered_map>
#include "ramses-utils.h"
{
public:
void windowClosed(ramses::displayId_t /*displayId*/) override
{
m_windowClosed = true;
}
bool isWindowClosed() const
{
return m_windowClosed;
}
private:
bool m_windowClosed = false;
};
uint64_t nowMs()
{
auto now = std::chrono::system_clock::now();
return std::chrono::time_point_cast<std::chrono::milliseconds>(now).time_since_epoch().count();
}
{
public:
: m_renderer(renderer)
{
}
virtual void sceneStateChanged(ramses::sceneId_t sceneId, ramses::RendererSceneState state) override
{
m_scenes[sceneId] = state;
}
void waitForSceneState(ramses::sceneId_t sceneId, ramses::RendererSceneState state)
{
while (m_scenes.count(sceneId) == 0 || m_scenes.find(sceneId)->second != state)
{
m_renderer.doOneLoop();
m_renderer.getSceneControlAPI()->dispatchEvents(*this);
}
}
private:
using SceneSet = std::unordered_map<ramses::sceneId_t, ramses::RendererSceneState>;
SceneSet m_scenes;
};
static constexpr unsigned VPWidth = 600;
static constexpr unsigned VPHeight = 400;
static constexpr unsigned DispWidth = 1280;
static constexpr unsigned DispHeight = 480;
// Master scene's data provider IDs
static constexpr ramses::dataProviderId_t VP1OffsetProviderId{ 333 };
static constexpr ramses::dataProviderId_t VP1SizeProviderId{ 334 };
static constexpr ramses::dataProviderId_t VP2OffsetProviderId{ 335 };
static constexpr ramses::dataProviderId_t VP2SizeProviderId{ 336 };
static constexpr ramses::dataProviderId_t Color1ProviderId{ 337 };
static constexpr ramses::dataProviderId_t Color2ProviderId{ 338 };
static constexpr ramses::dataProviderId_t Color3ProviderId{ 339 };
static constexpr ramses::dataProviderId_t Color4ProviderId{ 340 };
// Content scene's data consumer IDs
static constexpr ramses::dataConsumerId_t VPOffsetConsumerId{ 350 };
static constexpr ramses::dataConsumerId_t VPSizeConsumerId{ 351 };
static constexpr ramses::dataConsumerId_t Color1ConsumerId{ 352 };
static constexpr ramses::dataConsumerId_t Color2ConsumerId{ 353 };
{
ramses::Scene* clientScene = client.createScene(sceneId);
ramses::PerspectiveCamera* camera = clientScene->createPerspectiveCamera("camera");
camera->setFrustum(19.f, 1280.f / 480.f, 0.1f, 1500.f);
camera->setTranslation(0.0f, 0.0f, 5.0f);
// IMPORTANT NOTE: For simplicity and readability the example code does not check return values from API calls.
// This should not be the case for real applications.
// Bind data objects to scene's camera viewport offset/size and mark as data consumers
const auto vpOffsetData = clientScene->createDataVector2i("vpOffset");
const auto vpSizeData = clientScene->createDataVector2i("vpSize");
vpOffsetData->setValue(0, 0);
vpSizeData->setValue(VPWidth, VPHeight);
camera->bindViewportOffset(*vpOffsetData);
camera->bindViewportSize(*vpSizeData);
clientScene->createDataConsumer(*vpOffsetData, VPOffsetConsumerId);
clientScene->createDataConsumer(*vpSizeData, VPSizeConsumerId);
ramses::RenderPass* renderPass = clientScene->createRenderPass("my render pass");
renderPass->setCamera(*camera);
ramses::RenderGroup* renderGroup = clientScene->createRenderGroup();
renderPass->addRenderGroup(*renderGroup);
float vertexPositionsArray[] = { -1.f, 0.f, -6.f, 1.f, 0.f, -6.f, 0.f, 1.f, -6.f };
ramses::ArrayResource* vertexPositions = clientScene->createArrayResource(ramses::EDataType::Vector3F, 3, vertexPositionsArray);
uint16_t indicesArray[] = { 0, 1, 2 };
ramses::ArrayResource* indices = clientScene->createArrayResource(ramses::EDataType::UInt16, 3, indicesArray);
effectDesc.setVertexShaderFromFile("res/ramses-example-local-viewport-link.vert");
effectDesc.setFragmentShaderFromFile("res/ramses-example-local-viewport-link.frag");
ramses::Effect* effect = clientScene->createEffect(effectDesc, ramses::ResourceCacheFlag_DoNotCache, "glsl shader");
ramses::Appearance* appearance = clientScene->createAppearance(*effect, "triangle appearance");
ramses::GeometryBinding* geometry = clientScene->createGeometryBinding(*effect, "triangle geometry");
geometry->setIndices(*indices);
ramses::AttributeInput positionsInput;
effect->findAttributeInput("a_position", positionsInput);
geometry->setInputBuffer(positionsInput, *vertexPositions);
ramses::MeshNode* meshNode = clientScene->createMeshNode("triangle mesh node");
meshNode->setAppearance(*appearance);
meshNode->setGeometryBinding(*geometry);
renderGroup->addMeshNode(*meshNode);
ramses::MeshNode* meshNode2 = clientScene->createMeshNode("triangle mesh node");
ramses::Appearance* appearance2 = clientScene->createAppearance(*effect, "triangle appearance");
meshNode2->setAppearance(*appearance2);
meshNode2->setGeometryBinding(*geometry);
renderGroup->addMeshNode(*meshNode2);
meshNode2->setTranslation(0, -10, -5);
meshNode2->setScaling(100, 100, 1);
ramses::SplineLinearFloat* spline1 = animationSystem->createSplineLinearFloat("spline1");
spline1->setKey(0u, 0.f);
spline1->setKey(5000u, 500.f);
spline1->setKey(10000u, 1000.f);
ramses::Animation* animation1 = animationSystem->createAnimation(*animProperty1, *spline1, "animation1");
ramses::AnimationSequence* sequence = animationSystem->createAnimationSequence();
sequence->addAnimation(*animation1);
sequence->setAnimationLooping(*animation1);
sequence->setPlaybackSpeed(1.f);
animationSystem->updateLocalTime(nowMs());
sequence->start();
effect->findUniformInput("color", colorInput);
// Create data objects to hold color and bind them to appearance inputs
auto color1 = clientScene->createDataVector4f();
auto color2 = clientScene->createDataVector4f();
color1->setValue(1.f, 1.f, 1.f, 1.f);
color1->setValue(0.5f, 0.5f, 0.5f, 1.f);
appearance->bindInput(colorInput, *color1);
appearance2->bindInput(colorInput, *color2);
clientScene->createDataConsumer(*color1, Color1ConsumerId);
clientScene->createDataConsumer(*color2, Color2ConsumerId);
return clientScene;
}
{
ramses::Scene* clientScene = client.createScene(sceneId);
// In master scene create data objects and mark them as providers to control other scenes' viewports
const auto vp1offset = clientScene->createDataVector2i("vp1offset");
const auto vp1size = clientScene->createDataVector2i("vp1size");
const auto vp2offset = clientScene->createDataVector2i("vp2offset");
const auto vp2size = clientScene->createDataVector2i("vp2size");
vp1offset->setValue(0, 0);
vp1size->setValue(DispWidth, DispHeight);
vp2offset->setValue(0, 0);
vp2size->setValue(DispWidth, DispHeight);
clientScene->createDataProvider(*vp1offset, VP1OffsetProviderId);
clientScene->createDataProvider(*vp1size, VP1SizeProviderId);
clientScene->createDataProvider(*vp2offset, VP2OffsetProviderId);
clientScene->createDataProvider(*vp2size, VP2SizeProviderId);
// Create data objects and mark them as providers to control content scenes colors
const auto color1 = clientScene->createDataVector4f("color1");
const auto color2 = clientScene->createDataVector4f("color2");
const auto color3 = clientScene->createDataVector4f("color3");
const auto color4 = clientScene->createDataVector4f("color4");
color1->setValue(1.f, 1.f, 0.3f, 1.f);
color2->setValue(0.f, 0.3f, 0.5f, 1.f);
color3->setValue(1.f, 0.f, 0.5f, 1.f);
color4->setValue(0.5f, 0.3f, 0.f, 1.f);
clientScene->createDataProvider(*color1, Color1ProviderId);
clientScene->createDataProvider(*color2, Color2ProviderId);
clientScene->createDataProvider(*color3, Color3ProviderId);
clientScene->createDataProvider(*color4, Color4ProviderId);
return clientScene;
}
int main(int argc, char* argv[])
{
// Ramses client
ramses::RamsesFrameworkConfig config(argc, argv);
config.setRequestedRamsesShellType(ramses::ERamsesShellType_Console); //needed for automated test of examples
ramses::RamsesFramework framework(config);
ramses::RamsesClient& client(*framework.createClient("ramses-local-client-test"));
// Ramses renderer
ramses::RendererConfig rendererConfig(argc, argv);
ramses::RamsesRenderer& renderer(*framework.createRenderer(rendererConfig));
auto& sceneControlAPI = *renderer.getSceneControlAPI();
framework.connect();
const ramses::sceneId_t sceneId1(1u);
const ramses::sceneId_t sceneId2(2u);
const ramses::sceneId_t sceneIdMaster(3u);
ramses::Scene* scene1 = createContentProviderScene(client, sceneId1);
ramses::Scene* scene2 = createContentProviderScene(client, sceneId2);
ramses::Scene* sceneMaster = createSceneMaster(client, sceneIdMaster);
scene1->flush();
scene2->flush();
sceneMaster->flush();
scene1->publish();
scene2->publish();
sceneMaster->publish();
SceneStateEventHandler eventHandler(renderer);
ramses::DisplayConfig displayConfig(argc, argv);
displayConfig.setWindowRectangle(50, 50, DispWidth, DispHeight);
const ramses::displayId_t display = renderer.createDisplay(displayConfig);
renderer.flush();
sceneControlAPI.setSceneMapping(sceneId1, display);
sceneControlAPI.setSceneMapping(sceneId2, display);
sceneControlAPI.setSceneState(sceneId1, ramses::RendererSceneState::Rendered);
sceneControlAPI.setSceneState(sceneId2, ramses::RendererSceneState::Rendered);
// Master scene does not need to be rendered, it only provides data to the other 2 scenes,
// it must be at least in Available state meaning its data is on renderer
sceneControlAPI.setSceneState(sceneIdMaster, ramses::RendererSceneState::Available);
sceneControlAPI.flush();
eventHandler.waitForSceneState(sceneId1, ramses::RendererSceneState::Rendered);
eventHandler.waitForSceneState(sceneId2, ramses::RendererSceneState::Rendered);
eventHandler.waitForSceneState(sceneIdMaster, ramses::RendererSceneState::Available);
#if 1
// Link master scene's data objects to other scenes cameras' viewports
sceneControlAPI.linkData(sceneIdMaster, VP1OffsetProviderId, sceneId1, VPOffsetConsumerId);
sceneControlAPI.linkData(sceneIdMaster, VP1SizeProviderId, sceneId1, VPSizeConsumerId);
sceneControlAPI.linkData(sceneIdMaster, VP2OffsetProviderId, sceneId2, VPOffsetConsumerId);
sceneControlAPI.linkData(sceneIdMaster, VP2SizeProviderId, sceneId2, VPSizeConsumerId);
sceneControlAPI.flush();
// Link master scene's data objects to scene1 and scene2 colors
sceneControlAPI.linkData(sceneIdMaster, Color1ProviderId, sceneId1, Color1ConsumerId);
sceneControlAPI.linkData(sceneIdMaster, Color2ProviderId, sceneId1, Color2ConsumerId);
sceneControlAPI.linkData(sceneIdMaster, Color3ProviderId, sceneId2, Color1ConsumerId);
sceneControlAPI.linkData(sceneIdMaster, Color4ProviderId, sceneId2, Color2ConsumerId);
sceneControlAPI.flush();
#endif
// These are master scene's data objects linked to scene1 and scene2 cameras' viewports
auto scene1vpOffset = ramses::RamsesUtils::TryConvert<ramses::DataVector2i>(*sceneMaster->findObjectByName("vp1offset"));
auto scene1vpSize = ramses::RamsesUtils::TryConvert<ramses::DataVector2i>(*sceneMaster->findObjectByName("vp1size"));
auto scene2vpOffset = ramses::RamsesUtils::TryConvert<ramses::DataVector2i>(*sceneMaster->findObjectByName("vp2offset"));
auto scene2vpSize = ramses::RamsesUtils::TryConvert<ramses::DataVector2i>(*sceneMaster->findObjectByName("vp2size"));
int animParam = 0;
bool animInc = true;
RendererEventHandler rendererEventHandler;
while (!rendererEventHandler.isWindowClosed())
{
renderer.dispatchEvents(rendererEventHandler);
scene1vpOffset->setValue(VPWidth/8 + VPWidth/2 * animParam/100, VPHeight/8 + VPHeight/4 * animParam/100);
scene1vpSize->setValue(VPWidth/4 + VPWidth/2 * animParam/100, VPHeight/4 + VPHeight/4 * animParam/100);
const auto invAnimParam = 100 - animParam;
scene2vpOffset->setValue(DispWidth/2 - VPWidth/2 * invAnimParam/100, DispHeight - DispHeight/4 - VPHeight/4 * invAnimParam/100);
scene2vpSize->setValue(VPWidth/2 + VPWidth/2 * invAnimParam/100, VPHeight/4 + VPHeight/4 * invAnimParam/100);
sceneMaster->flush();
renderer.doOneLoop();
std::this_thread::sleep_for(std::chrono::milliseconds(10));
animParam = (animInc ? animParam + 1 : animParam - 1);
if (animParam == 0 || animParam == 100)
animInc = !animInc;
}
}
Definition: main.cpp:24
void windowClosed(ramses::displayId_t) override
This method will be called when a display's window has been closed.
Definition: main.cpp:26
bool isWindowClosed() const
Definition: main.cpp:31
Definition: main.cpp:48
SceneStateEventHandler(ramses::RendererSceneControl &sceneControlApi, ramses::RamsesRenderer &renderer)
Definition: main.cpp:50
The AnimatedProperty holds a reference to data that can be animated.
Definition: AnimatedProperty.h:20
The AnimationSequence is a container for multiple animations. AnimationSequence has its own virtual t...
Definition: AnimationSequence.h:26
status_t start(timeMilliseconds_t offset=0)
Starts the sequence of animations. Offset can be used to postpone start if positive or start sequence...
status_t addAnimation(const Animation &animation, sequenceTimeStamp_t startTimeInSequence=0u, sequenceTimeStamp_t stopTimeInSequence=0u)
Add animation to the sequence. Animation will be placed on to sequence time line at given time stamp ...
status_t setPlaybackSpeed(float playbackSpeed)
Sets sequence playback speed affecting all animations within the sequence. Default sequence playback ...
status_t setAnimationLooping(const Animation &animation, timeMilliseconds_t loopDuration=0)
Enables animation looping. When animation reaches last spline key (or loopDuration passes) it begins ...
The AnimationSystemRealTime is a special version of AnimationSystem that is designed to use system ti...
Definition: AnimationSystemRealTime.h:33
status_t updateLocalTime(globalTimeStamp_t systemTime=0u)
Sets the local animation system to a given time. The time used should always be system time,...
AnimationSequence * createAnimationSequence(const char *name=nullptr)
Creates AnimationSequence that can hold references to multiple animations and control them together.
SplineLinearFloat * createSplineLinearFloat(const char *name=nullptr)
Creates a spline in this animation system using float data type and linear interpolation.
AnimatedProperty * createAnimatedProperty(const Node &propertyOwner, EAnimatedProperty property, EAnimatedPropertyComponent propertyComponent=EAnimatedPropertyComponent_All, const char *name=nullptr)
Create a new animated property for Node.
Animation * createAnimation(const AnimatedProperty &animatedProperty, const Spline &spline, const char *name=nullptr)
Creates Animation that can animate given property using given spline.
The Animation combines spline with one or more AnimatedProperty instances and allows control of the a...
Definition: Animation.h:22
The Appearance describes how an object should look like. This includes GLSL uniform values,...
Definition: Appearance.h:34
status_t bindInput(const UniformInput &input, const DataObject &dataObject)
Bind a DataObject to the Appearance's uniform input. The value from the DataObject will be used and a...
The ArrayResource stores a data array of a given type. The data is immutable. The resource can be use...
Definition: ArrayResource.h:26
The AttributeInput is a description of an attribute effect input.
Definition: AttributeInput.h:22
status_t bindViewportOffset(const DataVector2i &offsetData)
Binds a ramses::DataObject to be used as source for viewport offset values.
status_t bindViewportSize(const DataVector2i &sizeData)
Binds a ramses::DataObject to be used as source for viewport size values.
status_t setValue(int32_t x, int32_t y)
Sets/updates the stored values of the vector.
status_t setValue(float x, float y, float z, float w)
Sets/updates the stored values of the vector.
The DisplayConfig holds a set of parameters to be used to initialize a display.
Definition: DisplayConfig.h:22
An effect description holds all necessary information for an effect to be created.
Definition: EffectDescription.h:21
status_t setVertexShaderFromFile(const char *shaderSourceFileName)
Reads and sets vertex shader source from file.
status_t setUniformSemantic(const char *inputName, EEffectUniformSemantic semanticType)
Sets an uniform semantic. Used for uniforms which are not locally available on the client,...
status_t setFragmentShaderFromFile(const char *shaderSourceFileName)
Reads and sets fragment shader source from file.
An effect describes how an object will be rendered to the screen.
Definition: Effect.h:26
status_t findUniformInput(const char *inputName, UniformInput &uniformInput) const
Finds uniform input by input name.
status_t findAttributeInput(const char *inputName, AttributeInput &attributeInput) const
Finds attribute input by input name.
A geometry binding together with an appearance describe how an object will be rendered to the screen.
Definition: GeometryBinding.h:25
status_t setIndices(const ArrayResource &indicesResource)
Assign a data array with data type UInt16 or UInt32 to be used when accessing vertex data.
status_t setInputBuffer(const AttributeInput &attributeInput, const ArrayResource &arrayResource, uint32_t instancingDivisor=0)
Assign a data array resource to a given effect attribute input.
The MeshNode holds all information which is needed to render an object to the screen.
Definition: MeshNode.h:25
status_t setAppearance(Appearance &appearance)
Sets the Appearance of the MeshNode.
status_t setGeometryBinding(GeometryBinding &geometry)
Sets the GeometryBinding of the MeshNode.
status_t setScaling(float x, float y, float z)
Sets the absolute scale in all three dimensions.
status_t setTranslation(float x, float y, float z)
Sets the absolute translation the absolute values.
The PerspectiveCamera is a local camera which defines a perspective view into the scene.
Definition: PerspectiveCamera.h:23
status_t setFrustum(float fov, float aspectRatio, float nearPlane, float farPlane)
An alternative method (see ramses::Camera::setFrustum) to set the perspective view frustum of the cam...
Entry point of RAMSES client API.
Definition: RamsesClient.h:34
Scene * createScene(sceneId_t sceneId, const SceneConfig &sceneConfig=SceneConfig(), const char *name=nullptr)
Create a new empty Scene.
The RamsesFrameworkConfig holds a set of parameters to be used to initialize ramses.
Definition: RamsesFrameworkConfig.h:23
Class representing ramses framework components that are needed to initialize an instance of ramses cl...
Definition: RamsesFramework.h:35
RamsesRenderer is the main renderer component which provides API to configure and control the way con...
Definition: RamsesRenderer.h:37
status_t doOneLoop()
Prepare content to be rendered in next frame and render next frame.
RendererSceneControl * getSceneControlAPI()
Get scene control API.
The RenderGroup is a container used to collect renderables which are supposed to be rendered together...
Definition: RenderGroup.h:31
status_t addMeshNode(const MeshNode &mesh, int32_t orderWithinGroup=0)
Add a mesh to this RenderGroup. If a mesh is already contained in this RenderGroup only its render or...
The RenderPass is a container used to collect meshes which are supposed to be rendered together.
Definition: RenderPass.h:31
status_t setCamera(const Camera &camera)
Set the camera to use for rendering the objects of this renderpass.
status_t setClearFlags(uint32_t clearFlags)
Set the clear flags which enable/disable the clearing of the render target assigned to this RenderPas...
status_t addRenderGroup(const RenderGroup &renderGroup, int32_t orderWithinPass=0)
Add a RenderGroup to this RenderPass for rendering.
The RendererConfig holds a set of parameters to be used to initialize a renderer.
Definition: RendererConfig.h:26
Convenience empty implementation of IRendererEventHandler that can be used to derive from when only s...
Definition: IRendererEventHandler.h:194
Convenience empty implementation of IRendererSceneControlEventHandler that can be used to derive from...
Definition: IRendererSceneControlEventHandler.h:214
virtual void sceneStateChanged(sceneId_t sceneId, RendererSceneState state) override
This method will be called when state of a scene changes.
Definition: IRendererSceneControlEventHandler.h:219
status_t dispatchEvents(IRendererSceneControlEventHandler &eventHandler)
RendererSceneControl methods push commands to an internal queue which is submitted when calling flush...
The Scene holds a scene graph. It is the essential class for distributing content to the ramses syste...
Definition: Scene.h:83
MeshNode * createMeshNode(const char *name=nullptr)
Creates a scene graph MeshNode. MeshNode is a Node with additional properties and bindings that repre...
Effect * createEffect(const EffectDescription &effectDesc, resourceCacheFlag_t cacheFlag=ResourceCacheFlag_DoNotCache, const char *name=nullptr)
Create a new Effect by parsing a GLSL shader described by an EffectDescription instance....
DataVector4f * createDataVector4f(const char *name=nullptr)
Creates a data object within the scene, which holds a data value of type Vector4f.
GeometryBinding * createGeometryBinding(const Effect &effect, const char *name=nullptr)
Creates a new GeometryBinding.
ArrayResource * createArrayResource(EDataType type, uint32_t numElements, const void *arrayData, resourceCacheFlag_t cacheFlag=ResourceCacheFlag_DoNotCache, const char *name=nullptr)
Create a new ArrayResource. It makes a copy of the given data of a certain type as a resource,...
status_t publish(EScenePublicationMode publicationMode=EScenePublicationMode_LocalAndRemote)
Publishes the scene to the ramses system.
RenderPass * createRenderPass(const char *name=nullptr)
Create a render pass in the scene.
Appearance * createAppearance(const Effect &effect, const char *name=nullptr)
Creates a new Appearance.
DataVector2i * createDataVector2i(const char *name=nullptr)
Creates a data object within the scene, which holds a data value of type Vector2i.
RenderGroup * createRenderGroup(const char *name=nullptr)
Create a RenderGroup instance in the scene.
PerspectiveCamera * createPerspectiveCamera(const char *name=nullptr)
Creates a Perspective Camera in this Scene.
status_t createDataConsumer(const DataObject &dataObject, dataConsumerId_t dataId)
Annotates a DataObject as a data consumer. Data provider and data consumer can be linked on Ramses Re...
AnimationSystemRealTime * createRealTimeAnimationSystem(uint32_t flags=EAnimationSystemFlags_Default, const char *name=nullptr)
Create a new animation system that is designed to work with system time. The animation system will be...
status_t createDataProvider(const DataObject &dataObject, dataProviderId_t dataId)
Annotates a DataObject as a data provider. Data provider and data consumer can be linked on Ramses Re...
const RamsesObject * findObjectByName(const char *name) const
Get an object from the scene by name.
status_t flush(sceneVersionTag_t sceneVersionTag=InvalidSceneVersionTag)
Commits all changes done to the scene since the last flush or since scene creation....
The SplineLinearFloat stores spline keys of type float that can be used for animation with linear int...
Definition: SplineLinearFloat.h:21
status_t setKey(splineTimeStamp_t timeStamp, float value)
Sets a spline key at given time with given value.
The UniformInput is a description of an uniform effect input.
Definition: UniformInput.h:22
@ EAnimatedPropertyComponent_Z
Definition: AnimatedProperty.h:68
@ EAnimatedProperty_Rotation
Definition: AnimatedProperty.h:77
@ EClearFlags_None
Definition: RamsesFrameworkTypes.h:257
@ EAnimationSystemFlags_Default
Definition: AnimationSystemEnums.h:19
@ ModelViewProjectionMatrix
Model-view-projection matrix 4x4.
@ UInt16
one component of type uint16_t per data element
@ Vector3F
three components of type float per data element
@ ERamsesShellType_Console
Definition: RamsesFrameworkTypes.h:169
RendererSceneState
Definition: RendererSceneState.h:19
@ Available
Scene is available, but not prepared for rendering. Can be requested to be ready or rendered.
@ Rendered
Scene is being rendered.
constexpr const resourceCacheFlag_t ResourceCacheFlag_DoNotCache
Requests the render to not cache a resource. This is the default value.
Definition: RamsesFrameworkTypes.h:212
int main(int argc, char *argv[])
Definition: main.cpp:21
uint64_t nowMs()
Definition: main.cpp:40
void createContentProviderScene(ramses::RamsesClient &client, ramses::sceneId_t sceneId)
Definition: main.cpp:96
ramses::Scene * createSceneMaster(ramses::RamsesClient &client, ramses::sceneId_t sceneId)
Definition: main.cpp:178