diff --git a/apps/app_demo/source/scenes/AppDemoScene2Dand3DText.h b/apps/app_demo/source/scenes/AppDemoScene2Dand3DText.h index 54ef29aa..7e64fb1d 100644 --- a/apps/app_demo/source/scenes/AppDemoScene2Dand3DText.h +++ b/apps/app_demo/source/scenes/AppDemoScene2Dand3DText.h @@ -21,7 +21,24 @@ class AppDemoScene2Dand3DText : public SLScene { public: AppDemoScene2Dand3DText(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_demo/source/scenes/AppDemoSceneAnimNode.h b/apps/app_demo/source/scenes/AppDemoSceneAnimNode.h index 81ba1850..806ee395 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneAnimNode.h +++ b/apps/app_demo/source/scenes/AppDemoSceneAnimNode.h @@ -21,7 +21,24 @@ class AppDemoSceneAnimNode : public SLScene { public: AppDemoSceneAnimNode(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneAnimNodeMass.h b/apps/app_demo/source/scenes/AppDemoSceneAnimNodeMass.h index abef0da2..9b5376a7 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneAnimNodeMass.h +++ b/apps/app_demo/source/scenes/AppDemoSceneAnimNodeMass.h @@ -21,7 +21,24 @@ class AppDemoSceneAnimNodeMass : public SLScene { public: AppDemoSceneAnimNodeMass(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinned.h b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinned.h index 535e81c5..3261517d 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinned.h +++ b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinned.h @@ -21,7 +21,24 @@ class AppDemoSceneAnimSkinned : public SLScene { public: AppDemoSceneAnimSkinned(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass.h b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass.h index 192beee8..7603a9ff 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass.h +++ b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass.h @@ -21,7 +21,24 @@ class AppDemoSceneAnimSkinnedMass : public SLScene { public: AppDemoSceneAnimSkinnedMass(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass2.h b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass2.h index 5271e39b..96728086 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass2.h +++ b/apps/app_demo/source/scenes/AppDemoSceneAnimSkinnedMass2.h @@ -21,7 +21,24 @@ class AppDemoSceneAnimSkinnedMass2 : public SLScene { public: AppDemoSceneAnimSkinnedMass2(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneEmpty.h b/apps/app_demo/source/scenes/AppDemoSceneEmpty.h index 0f9f7769..91526910 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneEmpty.h +++ b/apps/app_demo/source/scenes/AppDemoSceneEmpty.h @@ -20,7 +20,24 @@ class AppDemoSceneEmpty : public SLScene { public: AppDemoSceneEmpty(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARAugustaTmpTht.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARAugustaTmpTht.h index e752532b..3d3c3fe2 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARAugustaTmpTht.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARAugustaTmpTht.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARAugustaTmpTht : public SLScene { public: AppDemoSceneErlebARAugustaTmpTht(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumAmphitheater.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumAmphitheater.h index f2609730..7d2adbe5 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumAmphitheater.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumAmphitheater.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARAventicumAmphitheater : public SLScene { public: AppDemoSceneErlebARAventicumAmphitheater(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumCigognier.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumCigognier.h index f10fb1c9..d5cc15bf 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumCigognier.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumCigognier.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARAventicumCigognier : public SLScene { public: AppDemoSceneErlebARAventicumCigognier(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumTheater.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumTheater.h index c676b6f3..44408e82 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumTheater.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARAventicumTheater.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARAventicumTheater : public SLScene { public: AppDemoSceneErlebARAventicumTheater(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARBielBFH.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARBielBFH.h index d18efb34..0cd58591 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARBielBFH.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARBielBFH.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARBielBFH : public SLScene { public: AppDemoSceneErlebARBielBFH(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARChristoffel.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARChristoffel.h index 483983d6..0e031e8b 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARChristoffel.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARChristoffel.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARChristoffel : public SLScene { public: AppDemoSceneErlebARChristoffel(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneErlebARSutz.h b/apps/app_demo/source/scenes/AppDemoSceneErlebARSutz.h index c201a826..ecdcc9e8 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneErlebARSutz.h +++ b/apps/app_demo/source/scenes/AppDemoSceneErlebARSutz.h @@ -21,7 +21,24 @@ class AppDemoSceneErlebARSutz : public SLScene { public: AppDemoSceneErlebARSutz(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneFrustum.h b/apps/app_demo/source/scenes/AppDemoSceneFrustum.h index 9024d5d8..eab3a64b 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneFrustum.h +++ b/apps/app_demo/source/scenes/AppDemoSceneFrustum.h @@ -21,7 +21,24 @@ class AppDemoSceneFrustum : public SLScene { public: AppDemoSceneFrustum(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneGLTF.h b/apps/app_demo/source/scenes/AppDemoSceneGLTF.h index 3f601c92..91e43b6b 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneGLTF.h +++ b/apps/app_demo/source/scenes/AppDemoSceneGLTF.h @@ -22,7 +22,24 @@ class AppDemoSceneGLTF : public SLScene public: AppDemoSceneGLTF(SLSceneID sceneID); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneJansUniverse.h b/apps/app_demo/source/scenes/AppDemoSceneJansUniverse.h index 42b18fe4..3a6895db 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneJansUniverse.h +++ b/apps/app_demo/source/scenes/AppDemoSceneJansUniverse.h @@ -22,7 +22,24 @@ class AppDemoSceneJansUniverse : public SLScene { public: AppDemoSceneJansUniverse(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; void addUniverseLevel(SLAssetManager* am, SLScene* s, diff --git a/apps/app_demo/source/scenes/AppDemoSceneLargeModel.h b/apps/app_demo/source/scenes/AppDemoSceneLargeModel.h index 029e312a..257c0bb6 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneLargeModel.h +++ b/apps/app_demo/source/scenes/AppDemoSceneLargeModel.h @@ -21,7 +21,24 @@ class AppDemoSceneLargeModel : public SLScene { public: AppDemoSceneLargeModel(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneLevelOfDetail.h b/apps/app_demo/source/scenes/AppDemoSceneLevelOfDetail.h index 07f9f59b..97594e74 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneLevelOfDetail.h +++ b/apps/app_demo/source/scenes/AppDemoSceneLevelOfDetail.h @@ -21,7 +21,24 @@ class AppDemoSceneLevelOfDetail : public SLScene { public: AppDemoSceneLevelOfDetail(SLSceneID sceneID); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneLotsOfNodes.h b/apps/app_demo/source/scenes/AppDemoSceneLotsOfNodes.h index fc4a171a..d60eda9f 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneLotsOfNodes.h +++ b/apps/app_demo/source/scenes/AppDemoSceneLotsOfNodes.h @@ -22,7 +22,24 @@ class AppDemoSceneLotsOfNodes : public SLScene { public: AppDemoSceneLotsOfNodes(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneMeshLoad.h b/apps/app_demo/source/scenes/AppDemoSceneMeshLoad.h index d7ed81df..b31409fe 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneMeshLoad.h +++ b/apps/app_demo/source/scenes/AppDemoSceneMeshLoad.h @@ -21,7 +21,24 @@ class AppDemoSceneMeshLoad : public SLScene { public: AppDemoSceneMeshLoad(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneMinimal.h b/apps/app_demo/source/scenes/AppDemoSceneMinimal.h index 3f2df703..3338d529 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneMinimal.h +++ b/apps/app_demo/source/scenes/AppDemoSceneMinimal.h @@ -21,7 +21,24 @@ class AppDemoSceneMinimal : public SLScene { public: AppDemoSceneMinimal(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleComplexFire.h b/apps/app_demo/source/scenes/AppDemoSceneParticleComplexFire.h index fc987301..babf61ae 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleComplexFire.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleComplexFire.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleComplexFire : public SLScene { public: AppDemoSceneParticleComplexFire(SLSceneID sceneID); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; SLNode* createComplexFire(SLAssetManager* am, diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleDustStorm.h b/apps/app_demo/source/scenes/AppDemoSceneParticleDustStorm.h index 459b9e9d..c09e974b 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleDustStorm.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleDustStorm.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleDustStorm : public SLScene { public: AppDemoSceneParticleDustStorm(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleFountain.h b/apps/app_demo/source/scenes/AppDemoSceneParticleFountain.h index ac5bb2bb..380c0b46 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleFountain.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleFountain.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleFountain : public SLScene { public: AppDemoSceneParticleFountain(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleMany.h b/apps/app_demo/source/scenes/AppDemoSceneParticleMany.h index 5cbe9145..a1b5890d 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleMany.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleMany.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleMany : public SLScene { public: AppDemoSceneParticleMany(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleRingOfFire.h b/apps/app_demo/source/scenes/AppDemoSceneParticleRingOfFire.h index af717bc4..0fcf91ef 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleRingOfFire.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleRingOfFire.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleRingOfFire : public SLScene { public: AppDemoSceneParticleRingOfFire(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleSimple.h b/apps/app_demo/source/scenes/AppDemoSceneParticleSimple.h index d0445375..219b8f17 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleSimple.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleSimple.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleSimple : public SLScene { public: AppDemoSceneParticleSimple(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneParticleSun.h b/apps/app_demo/source/scenes/AppDemoSceneParticleSun.h index c5359a72..003d3ffb 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneParticleSun.h +++ b/apps/app_demo/source/scenes/AppDemoSceneParticleSun.h @@ -21,7 +21,24 @@ class AppDemoSceneParticleSun : public SLScene { public: AppDemoSceneParticleSun(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoScenePointClouds.h b/apps/app_demo/source/scenes/AppDemoScenePointClouds.h index eb4a1bad..34a43221 100644 --- a/apps/app_demo/source/scenes/AppDemoScenePointClouds.h +++ b/apps/app_demo/source/scenes/AppDemoScenePointClouds.h @@ -21,7 +21,24 @@ class AppDemoScenePointClouds : public SLScene { public: AppDemoScenePointClouds(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneRTDoF.h b/apps/app_demo/source/scenes/AppDemoSceneRTDoF.h index 81ebafcd..b5f2f2f3 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneRTDoF.h +++ b/apps/app_demo/source/scenes/AppDemoSceneRTDoF.h @@ -21,7 +21,24 @@ class AppDemoSceneRTDoF : public SLScene { public: AppDemoSceneRTDoF(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneRTLens.h b/apps/app_demo/source/scenes/AppDemoSceneRTLens.h index 313f59e0..20ea7475 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneRTLens.h +++ b/apps/app_demo/source/scenes/AppDemoSceneRTLens.h @@ -21,7 +21,24 @@ class AppDemoSceneRTLens : public SLScene { public: AppDemoSceneRTLens(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneRTMuttenzerBox.h b/apps/app_demo/source/scenes/AppDemoSceneRTMuttenzerBox.h index fa767580..ece92d3a 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneRTMuttenzerBox.h +++ b/apps/app_demo/source/scenes/AppDemoSceneRTMuttenzerBox.h @@ -21,7 +21,24 @@ class AppDemoSceneRTMuttenzerBox : public SLScene { public: AppDemoSceneRTMuttenzerBox(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneRevolver.h b/apps/app_demo/source/scenes/AppDemoSceneRevolver.h index 790bf26c..375bde32 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneRevolver.h +++ b/apps/app_demo/source/scenes/AppDemoSceneRevolver.h @@ -21,7 +21,24 @@ class AppDemoSceneRevolver : public SLScene { public: AppDemoSceneRevolver(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneRobot.h b/apps/app_demo/source/scenes/AppDemoSceneRobot.h index 4ae0a919..bfcd7c83 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneRobot.h +++ b/apps/app_demo/source/scenes/AppDemoSceneRobot.h @@ -22,7 +22,24 @@ class AppDemoSceneRobot : public SLScene public: AppDemoSceneRobot(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderBlinn.h b/apps/app_demo/source/scenes/AppDemoSceneShaderBlinn.h index d4982115..47940fd4 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderBlinn.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderBlinn.h @@ -23,7 +23,24 @@ class AppDemoSceneShaderBlinn : public SLScene AppDemoSceneShaderBlinn(SLstring name, bool perVertex); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderBump.h b/apps/app_demo/source/scenes/AppDemoSceneShaderBump.h index b103f490..733134f9 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderBump.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderBump.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderBump : public SLScene public: AppDemoSceneShaderBump(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderCook.h b/apps/app_demo/source/scenes/AppDemoSceneShaderCook.h index c3e7b539..98927199 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderCook.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderCook.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderCook : public SLScene public: AppDemoSceneShaderCook(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderEarth.h b/apps/app_demo/source/scenes/AppDemoSceneShaderEarth.h index c67129cd..34239b9c 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderEarth.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderEarth.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderEarth : public SLScene public: AppDemoSceneShaderEarth(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderIBL.h b/apps/app_demo/source/scenes/AppDemoSceneShaderIBL.h index 12aabac4..fce51ff3 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderIBL.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderIBL.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderIBL : public SLScene public: AppDemoSceneShaderIBL(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderParallax.h b/apps/app_demo/source/scenes/AppDemoSceneShaderParallax.h index 1e5abadc..5fe67606 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderParallax.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderParallax.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderParallax : public SLScene public: AppDemoSceneShaderParallax(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderSkybox.h b/apps/app_demo/source/scenes/AppDemoSceneShaderSkybox.h index c96c31a4..9f2ffdb1 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderSkybox.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderSkybox.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderSkybox : public SLScene public: AppDemoSceneShaderSkybox(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShaderWave.h b/apps/app_demo/source/scenes/AppDemoSceneShaderWave.h index 15bf2941..2a3c358d 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShaderWave.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShaderWave.h @@ -22,7 +22,24 @@ class AppDemoSceneShaderWave : public SLScene public: AppDemoSceneShaderWave(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShadowBasic.h b/apps/app_demo/source/scenes/AppDemoSceneShadowBasic.h index 39285916..105bed06 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShadowBasic.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShadowBasic.h @@ -21,7 +21,24 @@ class AppDemoSceneShadowBasic : public SLScene { public: AppDemoSceneShadowBasic(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_demo/source/scenes/AppDemoSceneShadowCascaded.h b/apps/app_demo/source/scenes/AppDemoSceneShadowCascaded.h index dfab062c..57930042 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShadowCascaded.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShadowCascaded.h @@ -21,7 +21,24 @@ class AppDemoSceneShadowCascaded : public SLScene { public: AppDemoSceneShadowCascaded(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneShadowLightPoint.h b/apps/app_demo/source/scenes/AppDemoSceneShadowLightPoint.h index 6f27bbd0..cd0c4704 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShadowLightPoint.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShadowLightPoint.h @@ -21,7 +21,24 @@ class AppDemoSceneShadowLightPoint : public SLScene { public: AppDemoSceneShadowLightPoint(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_demo/source/scenes/AppDemoSceneShadowLightSpot.h b/apps/app_demo/source/scenes/AppDemoSceneShadowLightSpot.h index f811bad8..253226d9 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShadowLightSpot.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShadowLightSpot.h @@ -21,7 +21,24 @@ class AppDemoSceneShadowLightSpot : public SLScene { public: AppDemoSceneShadowLightSpot(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_demo/source/scenes/AppDemoSceneShadowLightTypes.h b/apps/app_demo/source/scenes/AppDemoSceneShadowLightTypes.h index 2fb1dcb2..c249b28b 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneShadowLightTypes.h +++ b/apps/app_demo/source/scenes/AppDemoSceneShadowLightTypes.h @@ -21,7 +21,24 @@ class AppDemoSceneShadowLightTypes : public SLScene { public: AppDemoSceneShadowLightTypes(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneSuzanne.h b/apps/app_demo/source/scenes/AppDemoSceneSuzanne.h index ae59f878..363121f2 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneSuzanne.h +++ b/apps/app_demo/source/scenes/AppDemoSceneSuzanne.h @@ -27,7 +27,24 @@ class AppDemoSceneSuzanne : public SLScene bool shadowMapping, bool environmentMapping); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneTextureBlend.h b/apps/app_demo/source/scenes/AppDemoSceneTextureBlend.h index 5a296b38..32a309a2 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneTextureBlend.h +++ b/apps/app_demo/source/scenes/AppDemoSceneTextureBlend.h @@ -21,7 +21,24 @@ class AppDemoSceneTextureBlend : public SLScene { public: AppDemoSceneTextureBlend(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneTextureCompression.h b/apps/app_demo/source/scenes/AppDemoSceneTextureCompression.h index f58b980e..ac7a87f6 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneTextureCompression.h +++ b/apps/app_demo/source/scenes/AppDemoSceneTextureCompression.h @@ -21,7 +21,24 @@ class AppDemoSceneTextureCompression : public SLScene { public: AppDemoSceneTextureCompression(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneTextureFilter.h b/apps/app_demo/source/scenes/AppDemoSceneTextureFilter.h index 1462d7d7..cbd02ee6 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneTextureFilter.h +++ b/apps/app_demo/source/scenes/AppDemoSceneTextureFilter.h @@ -21,7 +21,24 @@ class AppDemoSceneTextureFilter : public SLScene { public: AppDemoSceneTextureFilter(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoSensorAR.h b/apps/app_demo/source/scenes/AppDemoSceneVideoSensorAR.h index 5f61df3e..7b5731c3 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoSensorAR.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoSensorAR.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoSensorAR : public SLScene { public: AppDemoSceneVideoSensorAR(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTexture.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTexture.h index 41b6bb77..48861440 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTexture.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTexture.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTexture : public SLScene { public: AppDemoSceneVideoTexture(SLSceneID sid); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackAruco.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackAruco.h index 08b0cbfc..78d2708f 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackAruco.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackAruco.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackAruco : public SLScene { public: AppDemoSceneVideoTrackAruco(SLSceneID sid); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackChessboard.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackChessboard.h index 6849d579..a8056d9d 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackChessboard.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackChessboard.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackChessboard : public SLScene { public: AppDemoSceneVideoTrackChessboard(SLSceneID sid); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFace.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFace.h index 4debd827..3495b720 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFace.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFace.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackFace : public SLScene { public: AppDemoSceneVideoTrackFace(SLSceneID sid); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFeatures.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFeatures.h index 6a0e545c..c5ec566e 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFeatures.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackFeatures.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackFeatures : public SLScene { public: AppDemoSceneVideoTrackFeatures(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackMediapipe.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackMediapipe.h index f5d323a9..a84b86ec 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackMediapipe.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackMediapipe.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackMediapipe : public SLScene { public: AppDemoSceneVideoTrackMediapipe(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackWAI.h b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackWAI.h index 4ec28933..c9aadd42 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVideoTrackWAI.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVideoTrackWAI.h @@ -21,7 +21,24 @@ class AppDemoSceneVideoTrackWAI : public SLScene { public: AppDemoSceneVideoTrackWAI(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCast.h b/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCast.h index 08b008c1..27779e68 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCast.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCast.h @@ -21,7 +21,24 @@ class AppDemoSceneVolumeRayCast : public SLScene { public: AppDemoSceneVolumeRayCast(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCastLighted.h b/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCastLighted.h index 685a7540..0e897687 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCastLighted.h +++ b/apps/app_demo/source/scenes/AppDemoSceneVolumeRayCastLighted.h @@ -21,7 +21,24 @@ class AppDemoSceneVolumeRayCastLighted : public SLScene { public: AppDemoSceneVolumeRayCastLighted(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_demo/source/scenes/AppDemoSceneZFighting.h b/apps/app_demo/source/scenes/AppDemoSceneZFighting.h index d444b532..6aa974fe 100644 --- a/apps/app_demo/source/scenes/AppDemoSceneZFighting.h +++ b/apps/app_demo/source/scenes/AppDemoSceneZFighting.h @@ -21,7 +21,24 @@ class AppDemoSceneZFighting : public SLScene { public: AppDemoSceneZFighting(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; }; //----------------------------------------------------------------------------- diff --git a/apps/app_minimal/AppMinimalMain.cpp b/apps/app_minimal/AppMinimalMain.cpp index 4d14a268..9021acd0 100644 --- a/apps/app_minimal/AppMinimalMain.cpp +++ b/apps/app_minimal/AppMinimalMain.cpp @@ -28,7 +28,24 @@ class AppMinimalScene : public SLScene { public: AppMinimalScene(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/app_node/AppNodeScene.h b/apps/app_node/AppNodeScene.h index 87436a03..267515a8 100644 --- a/apps/app_node/AppNodeScene.h +++ b/apps/app_node/AppNodeScene.h @@ -18,7 +18,24 @@ class AppNodeScene : public SLScene { public: AppNodeScene(); + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ void registerAssetsToLoad(SLAssetLoader& al) override; + + //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ void assemble(SLAssetManager* am, SLSceneView* sv) override; private: diff --git a/apps/source/AppCommon.cpp b/apps/source/AppCommon.cpp index b63d932f..46465231 100644 --- a/apps/source/AppCommon.cpp +++ b/apps/source/AppCommon.cpp @@ -1,6 +1,6 @@ /** * \file AppCommon.cpp - * \brief The AppCommon class holds the top-level instances of the app-demo + * \brief The AppCommon class holds the top-level instances for SLProject apps * \details For more info on how to create a new app with SLProject see: * https://github.com/cpvrlab/SLProject4/wiki/Creating-a-New-App * For more info about App framework see: @@ -93,18 +93,19 @@ const string AppCommon::CALIB_FTP_DIR = "calibrations"; const string AppCommon::PROFILE_FTP_DIR = "profiles"; //----------------------------------------------------------------------------- -//! Application and Scene creation function +//! Application creation function /*! Writes and inits the static application information and create the single -instance of the scene. Gets called by the C-interface function slCreateApp. +instances of SLGLState, SLAssetManager and SLAssetLoader. Gets called by the +C-interface function slCreateApp.

See examples usages in: - - app_demo_slproject/glfw: AppDemoMainGLFW.cpp in function main() - - app_demo_slproject/android: AppDemoAndroidJNI.cpp in Java_ch_fhnw_comgr_GLES3Lib_onInit() - - app_demo_slproject/ios: ViewController.m in viewDidLoad() + - platforms/android/AppAndroid.cpp in the App::run function + - platforms/emscripten/AppEmscripten.cpp in the App::run function + - platforms/glfw/AppGLFW.cpp in the App::run function + - platforms/ios/ViewController.mm in the viewDidLoad function
/param applicationName The apps name -/param onSceneLoadCallback C Callback function as void* pointer for the scene creation. */ void AppCommon::createApp(SLstring appName) { @@ -132,6 +133,12 @@ void AppCommon::createApp(SLstring appName) #endif } //----------------------------------------------------------------------------- +/*! Registers core assets to load async by all apps. Scene specific assets have +to be loaded async by overriding SLScene::registerAssetsToLoad and +SLScene::assemble. Async loading and assembling means that it happens in a +parallel thread and that inthere are no OpenGL calls allowed. OpenGL calls are +only allowed in the main thread. +*/ void AppCommon::registerCoreAssetsLoad() { SLAssetLoader& al = *AppCommon::assetLoader; diff --git a/modules/sl/source/SLMaterial.h b/modules/sl/source/SLMaterial.h index 581e0391..50326b22 100644 --- a/modules/sl/source/SLMaterial.h +++ b/modules/sl/source/SLMaterial.h @@ -23,9 +23,8 @@ class SLAssetManager; //----------------------------------------------------------------------------- //! Defines a standard CG material with textures and a shader program -/*! - The SLMaterial class defines a material with either the Blinn-Phong (default) - or the Cook-Torrance reflection) model.
+/** @details The SLMaterial class defines a material with either the + Blinn-Phong (default) or the Cook-Torrance reflection) model.

In the Blinn-Phong reflection model the following parameters get used:
The ambient, diffuse, specular and emissive color as well as the shininess @@ -44,6 +43,14 @@ class SLAssetManager; shaders (a vertex and fragment shader) gets automatically generated according to the reflection model and the material parameters. See SLGLProgramGenerated for more details. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this material it means, that OpenGL shader programs in _programs + * and the textures in _textures do not get built until the first frame is + * rendered. */ class SLMaterial : public SLObject { diff --git a/modules/sl/source/SLScene.h b/modules/sl/source/SLScene.h index 7cad43ce..9bcafddb 100644 --- a/modules/sl/source/SLScene.h +++ b/modules/sl/source/SLScene.h @@ -54,9 +54,24 @@ class SLScene : public SLObject void initOculus(SLstring shaderDir); //! All assets the should be loaded in parallel must be registered in here. + + //! All scene specific assets have to be registered for async loading in here. + /*! @remark All scene sspecific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there are + no OpenGL calls allowed. OpenGL calls are only allowed in the main thread.*/ virtual void registerAssetsToLoad(SLAssetLoader& al) {} //! After parallel loading of the assets the scene gets assembled in here. + /*! @remark All scene-specific assets have to be loaded async by overriding + SLScene::registerAssetsToLoad and SLScene::assemble. Async loading and + assembling means that it happens in a parallel thread and that in there + are no OpenGL calls allowed. OpenGL calls are only allowed in the main + thread. It is important that all object instantiations within + SLScene::assemble do NOT call any OpenGL functions (gl*) because they happen + in a parallel thread. All objects that get rendered have to do their + initialization when they are used the first time during rendering in the + main thread.*/ virtual void assemble(SLAssetManager* am, SLSceneView* sv) {} // Setters diff --git a/modules/sl/source/mesh/SLArrow.h b/modules/sl/source/mesh/SLArrow.h index 0fc6627a..eba35e98 100644 --- a/modules/sl/source/mesh/SLArrow.h +++ b/modules/sl/source/mesh/SLArrow.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! SLArrow is creates an arrow mesh based on its SLRevolver methods +/** + * @brief SLArrow is creates an arrow mesh based on its SLRevolver methods + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this SLMesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLArrow : public SLRevolver { public: diff --git a/modules/sl/source/mesh/SLBox.h b/modules/sl/source/mesh/SLBox.h index f4c86874..530ddc29 100644 --- a/modules/sl/source/mesh/SLBox.h +++ b/modules/sl/source/mesh/SLBox.h @@ -14,12 +14,19 @@ #include //----------------------------------------------------------------------------- -//! Axis aligned box mesh -/*! -The SLBox node draws an axis aligned box from a minimal corner to a maximal -corner. If the minimal and maximal corner are swapped the normals will point -inside. -*/ +/** + * @brief Axis aligned box mesh + * @details The SLBox node draws an axis aligned box from a minimal corner to + * a maximal corner. If the minimal and maximal corner are swapped the normals + * will point inside. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this SLMesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLBox : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLCircle.h b/modules/sl/source/mesh/SLCircle.h index 55d4fc81..69310cc0 100644 --- a/modules/sl/source/mesh/SLCircle.h +++ b/modules/sl/source/mesh/SLCircle.h @@ -13,6 +13,16 @@ #include //----------------------------------------------------------------------------- +/** + * @brief Circle line mesh derived from SLPolyline + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLCircle : public SLPolyline { public: diff --git a/modules/sl/source/mesh/SLCone.h b/modules/sl/source/mesh/SLCone.h index b920a1b8..10d0c869 100644 --- a/modules/sl/source/mesh/SLCone.h +++ b/modules/sl/source/mesh/SLCone.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! SLCone creates a cone mesh based on SLRevolver +/** + * @brief SLCone creates a cone mesh based on SLRevolver + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLCone : public SLRevolver { public: diff --git a/modules/sl/source/mesh/SLCoordAxis.h b/modules/sl/source/mesh/SLCoordAxis.h index b66390a6..0de22dc1 100644 --- a/modules/sl/source/mesh/SLCoordAxis.h +++ b/modules/sl/source/mesh/SLCoordAxis.h @@ -14,12 +14,19 @@ #include //----------------------------------------------------------------------------- -//! Axis aligned coordinate axis mesh -/*! -The SLAxis mesh draws axis aligned arrows to indicate the coordinate system. -All arrows have unit lenght. The arrow along x,y & z axis have the colors -red, green & blue. -*/ +/** + * @brief Axis aligned coordinate axis mesh + * @details The SLAxis mesh draws axis aligned arrows to indicate the + * coordinate system. All arrows have unit lenght. The arrow along x,y & z + * axis have the colors red, green & blue. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLCoordAxis : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLCoordAxisArrow.h b/modules/sl/source/mesh/SLCoordAxisArrow.h index 61aaed4c..78188b50 100644 --- a/modules/sl/source/mesh/SLCoordAxisArrow.h +++ b/modules/sl/source/mesh/SLCoordAxisArrow.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! Single arrow for coordinate axis +/** + * @brief Single arrow for coordinate axis + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLCoordAxisArrow : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLCylinder.h b/modules/sl/source/mesh/SLCylinder.h index 02c1a28d..a953ca6e 100644 --- a/modules/sl/source/mesh/SLCylinder.h +++ b/modules/sl/source/mesh/SLCylinder.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! SLCylinder is creates sphere mesh based on its SLRevolver methods +/** + * @brief SLCylinder is creates sphere mesh based on its SLRevolver methods + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLCylinder : public SLRevolver { public: diff --git a/modules/sl/source/mesh/SLDisk.h b/modules/sl/source/mesh/SLDisk.h index 55949a40..f5f18316 100644 --- a/modules/sl/source/mesh/SLDisk.h +++ b/modules/sl/source/mesh/SLDisk.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! SLDisk creates a disk mesh based on SLRevolver +/** + * @brief SLDisk creates a disk mesh based on SLRevolver + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLDisk : public SLRevolver { public: diff --git a/modules/sl/source/mesh/SLGrid.h b/modules/sl/source/mesh/SLGrid.h index 9298c0fa..fd6cbc1f 100644 --- a/modules/sl/source/mesh/SLGrid.h +++ b/modules/sl/source/mesh/SLGrid.h @@ -13,10 +13,18 @@ #include //----------------------------------------------------------------------------- -//! SLGrid creates a rectangular grid with lines with a certain resolution -/*! The SLGrid mesh draws a grid between a minimal and a maximal corner in the -XZ-plane. -*/ +/** + * @brief SLGrid creates a rectangular grid with lines with a certain resolution + * @details The SLGrid mesh draws a grid between a minimal and a maximal corner + * in the XZ-plane. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLGrid : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLMesh.cpp b/modules/sl/source/mesh/SLMesh.cpp index 1541dad7..9897b4cd 100644 --- a/modules/sl/source/mesh/SLMesh.cpp +++ b/modules/sl/source/mesh/SLMesh.cpp @@ -33,15 +33,20 @@ using std::set; #endif //----------------------------------------------------------------------------- -/*! - * Constructor for mesh objects. - * Meshes can be used in multiple nodes (SLNode). Meshes can belong +/** + * @brief Construct a new SLMesh::SLMesh object + * @details Meshes can be used in multiple nodes (SLNode). Meshes can belong * therefore to the global assets such as meshes (SLMesh), materials - * (SLMaterial), textures (SLGLTexture) and shader programs (SLGLProgram). - * \param assetMgr Pointer to a global asset manager. If passed the asset + * (SLMaterial), textures (SLGLTexture) and shader programs (SLGLProgram).\n + * It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param assetMgr Pointer to a global asset manager. If passed the asset * manager is the owner of the instance and will do the deallocation. If a * nullptr is passed the creator is responsible for the deallocation. - * \param name Name of the mesh + * @param name Name of the mesh */ SLMesh::SLMesh(SLAssetManager* assetMgr, const SLstring& name) : SLObject(name) { diff --git a/modules/sl/source/mesh/SLMesh.h b/modules/sl/source/mesh/SLMesh.h index 1a48a4aa..f86b8932 100644 --- a/modules/sl/source/mesh/SLMesh.h +++ b/modules/sl/source/mesh/SLMesh.h @@ -29,95 +29,103 @@ class SLGLProgram; class SLAssetManager; //----------------------------------------------------------------------------- -//! An SLMesh object is a triangulated mesh that is drawn with one draw call. -/*! -The SLMesh class represents a single mesh object. The mesh object is drawn -with one draw call using the vertex indices in I16 or I32. A mesh can be drawn -with triangles, lines or points. -The vertex attributes are stored in vectors with equal number of elements: -\n P (vertex position, mandatory) -\n N (vertex normals) -\n C (vertex color) -\n UV[0] (1st. vertex texture coordinates) optional -\n UV[1] (2nd. vertex texture coordinates) optional -\n T (vertex tangents) optional -\n Ji (vertex joint index) optional 2D vector -\n Jw (vertex joint weights) optional 2D vector -\n I16 holds the unsigned short vertex indices. -\n I32 holds the unsigned int vertex indices. -\n -The normals of a vertex are automatically calculated in the method calcNormals() -by averaging the face normals of the adjacent triangles. A vertex has always -only one normal and is used for the lighting calculation in the shader -programs. With such averaged normals you can created a interpolated shading on -smooth surfaces such as a sphere. -\n -For objects with sharp edges such as a box you need 4 vertices per box face. -All normals of a face point to the same direction. This means, that you have -three times the same vertex position but with different normals for one corner -of the box. -\n -The following image shows a box with sharp edges and a sphere with mostly -smooth but also 4 sharp edges. The smooth red normal as the top vertex got -averaged because its position is only once in the vector P. On the other hand -are the vertices of the hard edges in the front of the sphere doubled. -\n -@image html images/sharpAndSmoothEdges.png -\n -\n The following the example creates the box with 24 vertices: -\n The vertex positions and normals in P and N: -\n P.size = 24 -\n P[0] = [1,1,1] N[0] = [1,0,0] -\n P[1] = [1,0,1] N[1] = [1,0,0] -\n P[2] = [1,0,0] N[2] = [1,0,0] -\n P[3] = [1,1,0] N[3] = [1,0,0] -\n -\n P[4] = [1,1,0] N[4] = [0,0,-1] -\n P[5] = [1,0,0] N[5] = [0,0,-1] -\n P[6] = [0,0,0] N[6] = [0,0,-1] -\n P[7] = [0,1,0] N[7] = [0,0,-1] -\n -\n P[8] = [0,0,1] N[8] = [-1,0,0] -\n P[9] = [0,1,1] N[9] = [-1,0,0] -\n P[10]= [0,1,0] N[10]= [-1,0,0] -\n P[11]= [0,0,0] N[11]= [-1,0,0] -\n -\n P[12]= [1,1,1] N[12]= [0,0,1] -\n P[13]= [0,1,1] N[13]= [0,0,1] -\n P[14]= [0,0,1] N[14]= [0,0,1] -\n P[15]= [1,0,1] N[15]= [0,0,1] -\n -\n P[16]= [1,1,1] N[16]= [0,1,0] -\n P[17]= [1,1,0] N[17]= [0,1,0] -\n P[18]= [0,1,0] N[18]= [0,1,0] -\n P[19]= [0,1,1] N[19]= [0,1,0] -\n -\n P[20]= [0,0,0] N[20]= [0,-1,0] -\n P[21]= [1,0,0] N[21]= [0,-1,0] -\n P[22]= [1,0,1] N[22]= [0,-1,0] -\n P[23]= [0,0,1] N[23]= [0,-1,0] -\n -\n The vertex indices in I16: -\n I16[] = {0,1,2, 0,2,3, -\n 4,5,6, 4,6,7, -\n 8,9,10, 8,10,11, -\n 12,13,14, 12,14,15, -\n 16,17,18, 16,18,19, -\n 20,21,22, 20,22,23} -\n -@image html images/boxVertices.png -\n -All vertex attributes are added to the vertex array object _vao (SLVertexArray).
-All arrays remain in the main memory for ray tracing. -A mesh uses only one material referenced by the SLMesh::mat pointer. -\n -If a mesh is associated with a skeleton all its vertices and normals are -transformed every frame by the joint weights. Every vertex of a mesh has -weights for 1-n joints by which it can be influenced. This transform is -called skinning and is done in CPU in the method transformSkin. The final -transformed vertices and normals are stored in _finalP and _finalN. -*/ - +/** + * @brief An SLMesh object is a triangulated mesh, drawn with one draw call. + * @details The SLMesh class represents a single mesh object. The mesh object + * is drawn with one draw call using the vertex indices in I16 or I32. A mesh + * can be drawn with triangles, lines or points. + * The vertex attributes are stored in vectors with equal number of elements: + * \n P (vertex position, mandatory) + * \n N (vertex normals) + * \n C (vertex color) + * \n UV[0] (1st. vertex texture coordinates) optional + * \n UV[1] (2nd. vertex texture coordinates) optional + * \n T (vertex tangents) optional + * \n Ji (vertex joint index) optional 2D vector + * \n Jw (vertex joint weights) optional 2D vector + * \n I16 holds the unsigned short vertex indices. + * \n I32 holds the unsigned int vertex indices. + * \n + * The normals of a vertex are automatically calculated in the method calcNormals() + * by averaging the face normals of the adjacent triangles. A vertex has always + * only one normal and is used for the lighting calculation in the shader + * programs. With such averaged normals you can created a interpolated shading on + * smooth surfaces such as a sphere. + * \n + * For objects with sharp edges such as a box you need 4 vertices per box face. + * All normals of a face point to the same direction. This means, that you have + * three times the same vertex position but with different normals for one corner + * of the box. + * \n + * The following image shows a box with sharp edges and a sphere with mostly + * smooth but also 4 sharp edges. The smooth red normal as the top vertex got + * averaged because its position is only once in the vector P. On the other hand + * are the vertices of the hard edges in the front of the sphere doubled. + * \n + * @image html images/sharpAndSmoothEdges.png + * \n + * \n The following the example creates the box with 24 vertices: + * \n The vertex positions and normals in P and N: + * \n P.size = 24 + * \n P[0] = [1,1,1] N[0] = [1,0,0] + * \n P[1] = [1,0,1] N[1] = [1,0,0] + * \n P[2] = [1,0,0] N[2] = [1,0,0] + * \n P[3] = [1,1,0] N[3] = [1,0,0] + * \n + * \n P[4] = [1,1,0] N[4] = [0,0,-1] + * \n P[5] = [1,0,0] N[5] = [0,0,-1] + * \n P[6] = [0,0,0] N[6] = [0,0,-1] + * \n P[7] = [0,1,0] N[7] = [0,0,-1] + * \n + * \n P[8] = [0,0,1] N[8] = [-1,0,0] + * \n P[9] = [0,1,1] N[9] = [-1,0,0] + * \n P[10]= [0,1,0] N[10]= [-1,0,0] + * \n P[11]= [0,0,0] N[11]= [-1,0,0] + * \n + * \n P[12]= [1,1,1] N[12]= [0,0,1] + * \n P[13]= [0,1,1] N[13]= [0,0,1] + * \n P[14]= [0,0,1] N[14]= [0,0,1] + * \n P[15]= [1,0,1] N[15]= [0,0,1] + * \n + * \n P[16]= [1,1,1] N[16]= [0,1,0] + * \n P[17]= [1,1,0] N[17]= [0,1,0] + * \n P[18]= [0,1,0] N[18]= [0,1,0] + * \n P[19]= [0,1,1] N[19]= [0,1,0] + * \n + * \n P[20]= [0,0,0] N[20]= [0,-1,0] + * \n P[21]= [1,0,0] N[21]= [0,-1,0] + * \n P[22]= [1,0,1] N[22]= [0,-1,0] + * \n P[23]= [0,0,1] N[23]= [0,-1,0] + * \n + * \n The vertex indices in I16: + * \n I16[] = {0,1,2, 0,2,3, + * \n 4,5,6, 4,6,7, + * \n 8,9,10, 8,10,11, + * \n 12,13,14, 12,14,15, + * \n 16,17,18, 16,18,19, + * \n 20,21,22, 20,22,23} + * \n + * @image html images/boxVertices.png + * \n + * All vertex attributes are added to the vertex array object _vao (SLVertexArray). + * \n + * All arrays remain in the main memory for ray tracing. + * A mesh uses only one material referenced by the SLMesh::mat pointer. + * \n\n + * If a mesh is associated with a skeleton all its vertices and normals are + * transformed every frame by the joint weights. Every vertex of a mesh has + * weights for 1-n joints by which it can be influenced. This transform is + * called skinning and is done in CPU in the method transformSkin. The final + * transformed vertices and normals are stored in _finalP and _finalN. + * \n + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLMesh : public SLObject #ifdef SL_HAS_OPTIX , public SLOptixAccelStruct diff --git a/modules/sl/source/mesh/SLParticleSystem.h b/modules/sl/source/mesh/SLParticleSystem.h index 55a4eeb3..96384cb9 100644 --- a/modules/sl/source/mesh/SLParticleSystem.h +++ b/modules/sl/source/mesh/SLParticleSystem.h @@ -17,8 +17,9 @@ #include //----------------------------------------------------------------------------- -//! SLParticleSystem creates a particle meshes from a point primitive buffer. -/*! The SLParticleSystem mesh object of which the vertices are drawn as points. +/** + * @brief SLParticleSystem creates a particle meshes from a point primitive buffer. + * @details The SLParticleSystem mesh object of which the vertices are drawn as points. * An OpenGL transform feedback buffer is used to update the particle positions * on the GPU and a geometry shader is used the create two triangles per * particle vertex and orient them as a billboard to the viewer. Geometry @@ -31,6 +32,13 @@ * do* methods. All options can also be modified in the UI when the mesh is * selected. See the different demo scenes in the app_demo_slproject under the * demo scene group Particle Systems. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. */ class SLParticleSystem : public SLMesh { diff --git a/modules/sl/source/mesh/SLPoints.h b/modules/sl/source/mesh/SLPoints.h index 97b258a8..b67c3224 100644 --- a/modules/sl/source/mesh/SLPoints.h +++ b/modules/sl/source/mesh/SLPoints.h @@ -14,8 +14,15 @@ #include //----------------------------------------------------------------------------- -//! SLPoints creates -/*! The SLPoints mesh object of witch the vertices are drawn as points. +/** + * @brief The SLPoints mesh object of witch the vertices are drawn as points. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. */ class SLPoints : public SLMesh { diff --git a/modules/sl/source/mesh/SLPolygon.h b/modules/sl/source/mesh/SLPolygon.h index 503ecdbf..efa4281a 100644 --- a/modules/sl/source/mesh/SLPolygon.h +++ b/modules/sl/source/mesh/SLPolygon.h @@ -13,11 +13,18 @@ #include //----------------------------------------------------------------------------- -//! SLPolygon creates a convex polyon mesh -/*! -The SLPolygon node draws a convex polygon with. The normale vector is -calculated from the first 3 vertices. -*/ +/** + * @brief SLPolygon creates a convex polyon mesh + * @details The SLPolygon node draws a convex polygon with. The normale vector + * is calculated from the first 3 vertices. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLPolygon : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLRectangle.h b/modules/sl/source/mesh/SLRectangle.h index ae28c5f0..d918b091 100644 --- a/modules/sl/source/mesh/SLRectangle.h +++ b/modules/sl/source/mesh/SLRectangle.h @@ -13,11 +13,18 @@ #include //----------------------------------------------------------------------------- -//! SLRectangle creates a rectangular mesh with a certain resolution -/*! -The SLRectangle node draws a rectangle with a minimal and a maximal corner in -the x-y-plane. The normal is [0,0,1]. -*/ +/** + * @brief SLRectangle creates a rectangular mesh with a certain resolution + * @details The SLRectangle node draws a rectangle with a minimal and a maximal + * corner in the x-y-plane. The normal is [0,0,1]. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLRectangle : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLRevolver.h b/modules/sl/source/mesh/SLRevolver.h index 7e1ac5c4..2d291b22 100644 --- a/modules/sl/source/mesh/SLRevolver.h +++ b/modules/sl/source/mesh/SLRevolver.h @@ -17,16 +17,23 @@ class SLAssetManager; //----------------------------------------------------------------------------- -//! SLRevolver is an SLMesh object built out of revolving points. -/*! - SLRevolver is an SLMesh object that is built out of points that are revolved - in slices around and axis. The surface will be outwards if the points in the - array _revPoints increase towards the axis direction. - If all points in the array _revPoints are different the normals will be - smoothed. If two consecutive points are identical the normals will define a - hard edge. Texture coords. are cylindrically mapped. - See the online example \subpage example-revolver with various revolver objects. -*/ +/** + * @brief SLRevolver is an SLMesh object built out of revolving points. + * @details SLRevolver is an SLMesh object that is built out of points that + * are revolved in slices around and axis. The surface will be outwards if the + * points in the array _revPoints increase towards the axis direction. If all + * points in the array _revPoints are different the normals will be smoothed. + * If two consecutive points are identical the normals will define a hard edge. + * Texture coords. are cylindrically mapped. See the online example + * \subpage example-revolver with various revolver objects. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLRevolver : public SLMesh { public: diff --git a/modules/sl/source/mesh/SLSphere.h b/modules/sl/source/mesh/SLSphere.h index 1122cffc..9140b825 100644 --- a/modules/sl/source/mesh/SLSphere.h +++ b/modules/sl/source/mesh/SLSphere.h @@ -19,7 +19,16 @@ class SLMaterial; class SLAssetManager; //----------------------------------------------------------------------------- -//! SLSphere creates a sphere mesh based on SLSpheric w. 180 deg polar angle. +/** + * @brief SLSphere creates a sphere mesh based on SLSpheric w. 180 deg polar angle. + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLSphere : public SLSpheric { public: diff --git a/modules/sl/source/mesh/SLSpheric.h b/modules/sl/source/mesh/SLSpheric.h index 0f6cf805..0f16aef0 100644 --- a/modules/sl/source/mesh/SLSpheric.h +++ b/modules/sl/source/mesh/SLSpheric.h @@ -38,4 +38,4 @@ class SLSpheric : public SLRevolver SLfloat _thetaEndDEG; //!< Polar end angle 1-180deg }; //----------------------------------------------------------------------------- -#endif // SLSPHERE_H +#endif // SLSPHERIC_H diff --git a/modules/sl/source/mesh/SLTriangle.h b/modules/sl/source/mesh/SLTriangle.h index ea3e142f..5b5a13ce 100644 --- a/modules/sl/source/mesh/SLTriangle.h +++ b/modules/sl/source/mesh/SLTriangle.h @@ -13,7 +13,16 @@ #include //----------------------------------------------------------------------------- -//! A triangle class as the most simplest mesh +/** + * @brief A triangle class as the most simplest mesh + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * For this mesh it means that the objects for OpenGL drawing (_vao, _vaoP, + * _vaoN, _vaoT and _vaoS) remain unused until the first frame is rendered. + */ class SLTriangle : public SLMesh { public: diff --git a/modules/sl/source/node/SLCamera.cpp b/modules/sl/source/node/SLCamera.cpp index 80c45db2..6ad4325b 100644 --- a/modules/sl/source/node/SLCamera.cpp +++ b/modules/sl/source/node/SLCamera.cpp @@ -21,6 +21,17 @@ SLProjType SLCamera::currentProjection = P_monoPerspective; SLfloat SLCamera::currentFOV = 45.0f; SLint SLCamera::currentDevRotation = 0; //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLCamera::SLCamera object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within a SLScene::assemble function. All objects that get rendered + * have to do their OpenGL initialization when they are used the first time + * during rendering in the main thread. + * @param name Name of the camera + * @param textureOnlyProgramId Shader program ID for the textureOnly shader used for background rendering + * @param colorAttributeProgramId Shader program ID for the color attribute shader used for background rendering + */ SLCamera::SLCamera(const SLstring& name, SLStdShaderProg textureOnlyProgramId, SLStdShaderProg colorAttributeProgramId) diff --git a/modules/sl/source/node/SLHorizonNode.cpp b/modules/sl/source/node/SLHorizonNode.cpp index 9385b4b2..9a1fc812 100644 --- a/modules/sl/source/node/SLHorizonNode.cpp +++ b/modules/sl/source/node/SLHorizonNode.cpp @@ -13,6 +13,20 @@ #include //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLHorizonNode::SLHorizonNode object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param name Name of the node + * @param devRot Device rotation object + * @param font Font for the text label + * @param shaderDir Path to the shader directory + * @param scrW Width of the screen in pixels + * @param scrH Height of the sceen in pixels + */ SLHorizonNode::SLHorizonNode(SLstring name, SLDeviceRotation* devRot, SLTexFont* font, diff --git a/modules/sl/source/node/SLLight.cpp b/modules/sl/source/node/SLLight.cpp index aacff49c..27d86c9f 100644 --- a/modules/sl/source/node/SLLight.cpp +++ b/modules/sl/source/node/SLLight.cpp @@ -15,6 +15,18 @@ SLCol4f SLLight::globalAmbient = SLCol4f(0.1f, 0.1f, 0.1f, 1.0f); SLfloat SLLight::gamma = 1.0f; SLbool SLLight::doColoredShadows = false; //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLLight::SLLight object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param ambiPower Ambient light power + * @param diffPower Diffuse light power + * @param specPower Specular light power + * @param id Light ID + */ SLLight::SLLight(SLfloat ambiPower, SLfloat diffPower, SLfloat specPower, diff --git a/modules/sl/source/node/SLLightDirect.cpp b/modules/sl/source/node/SLLightDirect.cpp index 5d8ae0b5..7f9ea009 100644 --- a/modules/sl/source/node/SLLightDirect.cpp +++ b/modules/sl/source/node/SLLightDirect.cpp @@ -17,6 +17,19 @@ #include //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLLightDirect::SLLightDirect object + * @details It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within a SLScene::assemble function. All objects that get rendered + * have to do their OpenGL initialization when they are used the first time + * during rendering in the main thread. + * @param assetMgr AssetManager that will own the light mesh + * @param s SLScene pointer + * @param arrowLength Length of the arrow visualization mesh + * @param hasMesh Boolean if a mesh should be created and shown + * @param doCascadedShadows Boolean for doing cascaded shadow mapping + */ SLLightDirect::SLLightDirect(SLAssetManager* assetMgr, SLScene* s, SLfloat arrowLength, @@ -51,6 +64,25 @@ SLLightDirect::SLLightDirect(SLAssetManager* assetMgr, init(s); } //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLLightDirect::SLLightDirect object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param assetMgr AssetManager that will own the light mesh + * @param s SLScene pointer + * @param posx Light position x + * @param posy Light position y + * @param posz Light position z + * @param arrowLength Length of the arrow visualization mesh + * @param ambiPower Ambient light power + * @param diffPower Diffuse light power + * @param specPower Specular light power + * @param hasMesh Boolean if a mesh should be created and shown + * @param doCascadedShadows Boolean for doing cascaded shadow mapping + */ SLLightDirect::SLLightDirect(SLAssetManager* assetMgr, SLScene* s, SLfloat posx, diff --git a/modules/sl/source/node/SLLightRect.cpp b/modules/sl/source/node/SLLightRect.cpp index b6b1f1e2..2630e9bb 100644 --- a/modules/sl/source/node/SLLightRect.cpp +++ b/modules/sl/source/node/SLLightRect.cpp @@ -18,6 +18,19 @@ extern SLfloat rnd01(); //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLLightRect::SLLightRect object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param assetMgr AssetManager that will own the light mesh + * @param s SLScene pointer + * @param w Width of the light rectangle + * @param h Height if the light rectangle + * @param hasMesh Boolean if a mesh should be created and shown + */ SLLightRect::SLLightRect(SLAssetManager* assetMgr, SLScene* s, SLfloat w, diff --git a/modules/sl/source/node/SLLightSpot.cpp b/modules/sl/source/node/SLLightSpot.cpp index 49477eb8..39356789 100644 --- a/modules/sl/source/node/SLLightSpot.cpp +++ b/modules/sl/source/node/SLLightSpot.cpp @@ -17,6 +17,19 @@ #include //----------------------------------------------------------------------------- +/** + * @brief Construct a new SLLightSpot::SLLightSpot object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param assetMgr AssetManager that will own the light mesh + * @param s SLScene pointer + * @param radius Radius of the spot light sphere + * @param spotAngleDEG Spot cone shine angle in degrees + * @param hasMesh Boolean if a mesh should be created and shown + */ SLLightSpot::SLLightSpot(SLAssetManager* assetMgr, SLScene* s, SLfloat radius, diff --git a/modules/sl/source/node/SLNode.cpp b/modules/sl/source/node/SLNode.cpp index eafc471e..37c4e92f 100644 --- a/modules/sl/source/node/SLNode.cpp +++ b/modules/sl/source/node/SLNode.cpp @@ -28,9 +28,15 @@ unsigned int SLNode::instanceIndex = 0; // Static updateRec counter SLuint SLNode::numWMUpdates = 0; //----------------------------------------------------------------------------- -/*! -Default constructor just setting the name. -*/ +/** + * @brief Construct a new SLNode::SLNode object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param name Name of the node + */ SLNode::SLNode(const SLstring& name) : SLObject(name) { _parent = nullptr; @@ -53,6 +59,11 @@ SLNode::SLNode(const SLstring& name) : SLObject(name) //----------------------------------------------------------------------------- /*! Constructor with a mesh pointer and name. +It is important that during instantiation NO OpenGL functions (gl*) get called +because this constructor will be most probably called in a parallel thread from +within a SLScene::assemble function. All objects that get rendered have to do +their OpenGL initialization when they are used the first time during rendering +in the main thread. */ SLNode::SLNode(SLMesh* mesh, const SLstring& name) : SLObject(name) { @@ -80,6 +91,11 @@ SLNode::SLNode(SLMesh* mesh, const SLstring& name) : SLObject(name) //----------------------------------------------------------------------------- /*! Constructor with a mesh pointer, translation vector and name. +It is important that during instantiation NO OpenGL functions (gl*) get called +because this constructor will be most probably called in a parallel thread from +within a SLScene::assemble function. All objects that get rendered have to do +their OpenGL initialization when they are used the first time during rendering +in the main thread. */ SLNode::SLNode(SLMesh* mesh, const SLVec3f& translation, diff --git a/modules/sl/source/node/SLNode.h b/modules/sl/source/node/SLNode.h index c8f0e3a3..a2161342 100644 --- a/modules/sl/source/node/SLNode.h +++ b/modules/sl/source/node/SLNode.h @@ -93,21 +93,21 @@ struct SLNodeStats }; //----------------------------------------------------------------------------- //! SLNode represents a node in a hierarchical scene graph. -/*! - * SLNode is the most important building block of the scene graph. +/** + * @details This is the most important building block of the scene graph. * A node can have 0-N children nodes in the vector _children. With child * nodes you can build hierarchical structures. A node without a mesh can act * as parent node to group its children. A node without children only makes * sense to hold a mesh for visualization. The pointer _parent points to the - * parent of a child node. \n\n - * + * parent of a child node. + * \n\n * A node can point to a single SLMesh object for the rendering of triangles * lines or points meshes. Meshes are stored in the SLAssetManager::_meshes * vector. Multiple nodes can point to the same mesh object. The node is * therefore not the owner of the meshes and does not delete them. The mesh * is drawn by the methods SLNode::drawMesh and alternatively by - * SLNode::drawRec.\n\n - * + * SLNode::drawRec. + * \n\n * A node can be transformed and has therefore a object matrix (_om) for its * local transform. All other matrices such as the world matrix (_wm), the * inverse world matrix (_wmI) are derived from the object matrix and @@ -132,6 +132,11 @@ struct SLNodeStats * and SLLightRect are derived from SLNode and represent light sources in the * scene. Cameras and lights can be placed in the scene because of their * inheritance of SLNode.\n + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. */ class SLNode : public SLObject diff --git a/modules/sl/source/node/SLNodeLOD.cpp b/modules/sl/source/node/SLNodeLOD.cpp index dd87d97a..c4e1f560 100644 --- a/modules/sl/source/node/SLNodeLOD.cpp +++ b/modules/sl/source/node/SLNodeLOD.cpp @@ -18,7 +18,12 @@ * < than the minLodCoverage of the last node in the LOD group. If the first * child node has e.g. a minLodCoverage of 0.1 it means that it will be visible * if its bounding rectangle covers more then 10% of the viewport. The first - * child node in the group must be the one with the highest resolution. + * child node in the group must be the one with the highest resolution.\n + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. * \param childToAdd LOD child node pointer to add * \param minLodCoverage A value > 0 and < 1 and < than the minLodCoverage * of the last node in the LOD group diff --git a/modules/sl/source/node/SLSkybox.cpp b/modules/sl/source/node/SLSkybox.cpp index fc7ce460..5f36b46b 100644 --- a/modules/sl/source/node/SLSkybox.cpp +++ b/modules/sl/source/node/SLSkybox.cpp @@ -17,10 +17,23 @@ #include //----------------------------------------------------------------------------- -//! Cubemap constructor with cubemap images -/*! All resources allocated are stored in the SLScene vectors for textures, -materials, programs and meshes and get deleted at scene destruction. -*/ +/** + * @brief Construct a new SLSkybox::SLSkybox object with 6 images for all sides + * @details It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within a SLScene::assemble function. All objects that get rendered + * have to do their OpenGL initialization when they are used the first time + * during rendering in the main thread. + * @param assetMgr Asset manager that will own the skybox mesh + * @param shaderPath Path to the shader files + * @param cubeMapXPos Texture image file for the positive X side + * @param cubeMapXNeg Texture image file for the negative X side + * @param cubeMapYPos Texture image file for the positive Y side + * @param cubeMapYNeg Texture image file for the negative Y side + * @param cubeMapZPos Texture image file for the positive Z side + * @param cubeMapZNeg Texture image file for the negative Z side + * @param name Name of the skybox + */ SLSkybox::SLSkybox(SLAssetManager* assetMgr, SLstring shaderPath, SLstring cubeMapXPos, @@ -80,6 +93,23 @@ SLSkybox::SLSkybox(SLAssetManager* assetMgr, all the textures needed for image based lighting and store them in the textures of the material of this sky box. */ + +/** + * @brief Construct a new SLSkybox::SLSkybox object with an HDR image + * @details This constructor generates a cube map skybox from a HDR Image and also + * all the textures needed for image based lighting and store them in the textures + * of the material of this sky box.\n + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param assetMgr Asset manager that will own the skybox mesh + * @param shaderPath Path to the shader files + * @param hdrImage HDR texture image file + * @param resolution Resolution of the texture objects for image based lighting + * @param name Name of the skybox + */ SLSkybox::SLSkybox(SLAssetManager* am, SLstring shaderPath, SLstring hdrImage, diff --git a/modules/sl/source/node/SLText.cpp b/modules/sl/source/node/SLText.cpp index 3f0145da..503f2393 100644 --- a/modules/sl/source/node/SLText.cpp +++ b/modules/sl/source/node/SLText.cpp @@ -12,9 +12,19 @@ #include //----------------------------------------------------------------------------- -/*! -The ctor sets all members and translates to the min. position. -*/ +/** + * @brief Construct a new SLText::SLText object + * @remarks It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param text Text to be rendered + * @param font SLTexTont to be used + * @param color Color for font + * @param maxWidth Max. line width in pixels + * @param lineHeightFactor Line hight factor >= 1.0 + */ SLText::SLText(SLstring text, SLTexFont* font, SLCol4f color, diff --git a/modules/sl/source/node/SLTransformNode.cpp b/modules/sl/source/node/SLTransformNode.cpp index 87c14f8b..efecba9b 100644 --- a/modules/sl/source/node/SLTransformNode.cpp +++ b/modules/sl/source/node/SLTransformNode.cpp @@ -16,14 +16,16 @@ #include //----------------------------------------------------------------------------- -/*! - Constructor for a transform node. - Because a transform node will be added and removed on the fly to the - scenegraph it well be the owner of its meshes (SLMesh), materials (SLMaterial) - and shader programs (SLGLProgram). It has to delete them in the destructor. - @param sv Pointer to the SLSceneView - @param targetNode Pointer to the node that should be transformed. - @param shaderDir Path to the shader files +/** + * @brief Construct a new SLTransformNode::SLTransformNode object * + * @details It is important that during instantiation NO OpenGL functions (gl*) + * get called because this constructor will be most probably called in a parallel + * thread from within an SLScene::registerAssetsToLoad or SLScene::assemble + * function. All objects that get rendered have to do their OpenGL initialization + * when they are used the first time during rendering in the main thread. + * @param sv Pointer to the SLSceneView + * @param targetNode Pointer to the node that should be transformed. + * @param shaderDir Path to the shader files */ SLTransformNode::SLTransformNode(SLSceneView* sv, SLNode* targetNode,