diff options
Diffstat (limited to 'src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderPluginCInterface.h')
m--------- | src/Runtime/ogl-runtime | 0 | ||||
-rw-r--r-- | src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderPluginCInterface.h | 330 |
2 files changed, 0 insertions, 330 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime new file mode 160000 +Subproject 2025912174c4cf99270b7439ec3b021e1d089ae diff --git a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderPluginCInterface.h b/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderPluginCInterface.h deleted file mode 100644 index ec7481a0..00000000 --- a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderPluginCInterface.h +++ /dev/null @@ -1,330 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2008-2012 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#pragma once -#ifndef QT3DS_OBJECT_RENDER_PLUGIN_H -#define QT3DS_OBJECT_RENDER_PLUGIN_H - -/* - * Below are the definitions required in order to write a render plugin for UIComposer. - * Please note that calling anything related to opengl is explicitly not allowed except - * during either the class gl resource initialization function or during render. Calling into - * openGL and especially changing GL state during any other function may produce corrupt - *rendering. - */ - -#ifdef _cplusplus -#extern "C" { -#endif - -enum QT3DSRenderPluginPropertyTypes { - QT3DSRenderPluginPropertyTypeNone = 0, - QT3DSRenderPluginPropertyTypeLong = 1, - QT3DSRenderPluginPropertyTypeFloat = 2, - QT3DSRenderPluginPropertyTypeCharPtr = 3, -}; - -enum QT3DSRenderPluginDepthTypes { - QT3DSRenderPluginDepthTypeNoDepthBuffer = 0, - QT3DSRenderPluginDepthTypeDepth16, // 16 bit depth buffer - QT3DSRenderPluginDepthTypeDepth24, // 24 bit depth buffer - QT3DSRenderPluginDepthTypeDepth32, // 32 bit depth buffer -}; - -enum QT3DSRenderPluginTextureTypes { - QT3DSRenderPluginTextureTypeNoTexture = 0, - QT3DSRenderPluginTextureTypeRGBA8, // 32 bit format - QT3DSRenderPluginTextureTypeRGB8, // 24 bit format - QT3DSRenderPluginTextureTypeRGB565, // 16 bit format - QT3DSRenderPluginTextureTypeRGBA5551, // 16 bit format -}; - -enum QT3DSRenderPluginColorClearState { - QT3DSRenderPluginColorClearStateClearIsOptional = 0, - QT3DSRenderPluginColorClearStateDoNotClear, - QT3DSRenderPluginColorClearStateAlwaysClear, -}; - -enum QT3DSRenderPluginMSAALevel { - QT3DSRenderPluginMSAALevelNoMSAA = 0, // no MSAA, one also works. - QT3DSRenderPluginMSAALevelTwo = 2, // 2 samples - QT3DSRenderPluginMSAALevelFour = 4, // 4 samples - QT3DSRenderPluginMSAALevelEight = 8, // 8 samples -}; - -typedef long TBool; -#define TTRUE 1 -#define TFALSE 0 - -#define QT3DS_CURRENT_RENDER_PLUGIN_API_VERSION 2 - -typedef void *TRenderPluginInstancePtr; -typedef void *TRenderPluginClassPtr; - -// We will pass the componentized properties to the instance ptr. -typedef struct _RenderPluginPropertyUpdate -{ - const char *m_PropName; - enum QT3DSRenderPluginPropertyTypes m_PropertyType; - - // Is either a float or a long or a const char* depending on the property type. - // for specify types of properties, example code would be: - // float value = *((float*)&update.m_PropertyValue) - // long value = *((long*)&update.m_PropertyValue) - // char* value = (char*)update.m_PropertyValue - void *m_PropertyValue; -} TRenderPluginPropertyUpdate; - -typedef struct _RenderPluginSurfaceDescription -{ - long m_Width; - long m_Height; - enum QT3DSRenderPluginDepthTypes m_DepthBuffer; - enum QT3DSRenderPluginTextureTypes m_ColorBuffer; - TBool m_HasStencilBuffer; - QT3DSRenderPluginMSAALevel m_MSAALevel; -} TRenderPluginSurfaceDescription; - -typedef struct _TVec2 -{ - float x; - float y; -} TVec2; - -typedef struct _NeedsRenderResult -{ - TBool HasChangedSinceLastFrame; - TBool HasTransparency; -} TNeedsRenderResult; - -struct script_State; - -/* - * Create a new instance object. Typename is the name of the plugin file, so for example - * gears.plugin generates 'gears' as a type name. - * - * Required API function. - * - */ -typedef TRenderPluginInstancePtr (*TCreateInstanceFunction)(TRenderPluginClassPtr cls, - const char *inTypeName); - -typedef void (*TCreateInstanceScriptProxy)(TRenderPluginClassPtr cls, - TRenderPluginInstancePtr insPtr, - struct script_State *state); - -/* - * Update the plugin instance with a list of property updates. Properties are broken down by - *component so for example - * a color property named leftColor will be broken down into 'leftColor.r', 'leftColor.g', - *'leftColor.b'. Vector - * properties are broken down into x,y,z components. The property string has a void* member - *that is the actual value - * or in a charPtr property's case it is the char*. - * Please see the comments for m_PropertyValue member of TRenderPluginPropertyUpdate struct. - * - * Optional API function. - */ -typedef void (*TUpdateInstanceFunction)(TRenderPluginClassPtr cls, - TRenderPluginInstancePtr instance, - TRenderPluginPropertyUpdate *updates, long numUpdates); - -/* - * Query used when the plugin is rendering to an image. Should return the desired - *specifications of the plugins - * render target. - * presScaleFactor - the presentation scale factor when the user has requested scale to fit to - *be used for the - * presentation. - * - * Required API function. - */ -typedef TRenderPluginSurfaceDescription (*TSurfaceQueryFunction)(TRenderPluginClassPtr cls, - TRenderPluginInstancePtr instance, - TVec2 presScaleFactor); - -/* - * Query used by the rendering system. Should return true if the plugin will render something - *different than it did - * the last time it rendered. This is used so that we can cache render results and also so that we - *can trigger the - * progressive AA algorithm in the case where nothing has changed. - * - * presScaleFactor - the presentation scale factor when the user has requested scale to fit to be - *used for the - * presentation. - * - * OpenGL state may be changed in this function. - * - * Optional API function, returns true by default. - */ -typedef TNeedsRenderResult (*TNeedsRenderFunction)(TRenderPluginClassPtr cls, - TRenderPluginInstancePtr instance, - TRenderPluginSurfaceDescription surface, - TVec2 presScaleFactor); - -/* - * Render plugin data. - * Do not assume the surface requested is the surface given; for some cases it will be but if - *the system has deemed it - * appropriate to render the plugin directly to the back buffer then the surface description - *presented could differ by - * quite a bit. - * - * presScaleFactor - is the presentation scale factor when the user has requested scale to fit - *to be used for the - * presentation. - * inClearColorBuffer - True if the plugin needs to clear the color buffer (when rendering to - *texture) else false - * (when rendering to back buffer). - * - * Function should return 'UICTRUE' the image produced by rendering contains transparency; - *either every pixel wasn't - * written to or it is desired for the plugin to blend with background objects. Else should - *return UICFALSE. - * - * Required API function. - */ -typedef void (*TRenderFunction)(TRenderPluginClassPtr cls, TRenderPluginInstancePtr instance, - TRenderPluginSurfaceDescription surface, TVec2 presScaleFactor, - QT3DSRenderPluginColorClearState inClearColorBuffer); - -/* - * Pick - handle a mouse pick into the plugin. - * Returns true if the pick was consumed, false otherwise. - * - * Option API function. - */ -typedef TBool (*TPickFunction)(TRenderPluginClassPtr cls, TRenderPluginInstancePtr instance, - TVec2 inMouse, TVec2 inViewport); - -/* - * Release a given instance of the plugin. - * - * Required API function. - */ -typedef void (*TReleaseInstanceFunction)(TRenderPluginClassPtr cls, - TRenderPluginInstancePtr instance); - -/* - * Get the plugin API version. This allows the runtime to account for API changes over time or - * refuse to load the plugin. Plugins should return QT3DS_CURRENT_RENDER_PLUGIN_API_VERSION - * - * Required API function. - */ -typedef long (*TGetAPIVersionFunction)(TRenderPluginClassPtr cls); - -/* - * Initialize the resources for the class. Implementing this allows UIComposer to move - * expensive initialization outside of the actual presentation run, thus allowing for - * a smoother experience during the presentation at the cost of longer startup times. - * - * - plugin path is the path to the .plugin xml file so that clients can find resources - * specific to their plugin relative to their .plugin file. - * - * OpenGL state may be changed in this function. - * - * Optional API function. - */ -typedef void (*TInitializeClassGLResourcesFunction)(TRenderPluginClassPtr cls, - const char *pluginPath); - -/* - * Release the class allocated with the create proc provided in the shared library. - * - * Required API function. - */ -typedef void (*TReleaseClassFunction)(TRenderPluginClassPtr cls); - -/* - * Structure returned form the create class function. Unimplemented functions should be left - *NULL. - */ -typedef struct _RenderPluginClass -{ - TRenderPluginClassPtr m_Class; - - TGetAPIVersionFunction GetRenderPluginAPIVersion; - TInitializeClassGLResourcesFunction InitializeClassGLResources; - TReleaseClassFunction ReleaseClass; - - TCreateInstanceFunction CreateInstance; - TCreateInstanceScriptProxy CreateInstanceScriptProxy; - TUpdateInstanceFunction UpdateInstance; - TSurfaceQueryFunction QueryInstanceRenderSurface; - TNeedsRenderFunction NeedsRenderFunction; - TRenderFunction RenderInstance; - TPickFunction Pick; - TReleaseInstanceFunction ReleaseInstance; - -} TRenderPluginClass; - -// We look for this function name in the shared library -#define QT3DS_RENDER_PLUGIN_CREATE_CLASS_FUNCION_NAME "CreateRenderPlugin" - -/* - * Function signature we expect mapped to "CreateRenderPlugin". Example code: - * - extern "C" { - -#ifdef _WIN32 -#define PLUGIN_EXPORT_API __declspec(dllexport) -#else -#define PLUGIN_EXPORT_API -#endif - - - -PLUGIN_EXPORT_API TRenderPluginClass CreateRenderPlugin( const char*) -{ - GearClass* classItem = (GearClass*)malloc( sizeof(GearClass) ); - TRenderPluginClass retval; - memset( &retval, 0, sizeof( TRenderPluginClass ) ); - retval.m_Class = classItem; - retval.GetRenderPluginAPIVersion = GetAPIVersion; - retval.CreateInstance = CreateInstance; - retval.CreateInstanceScriptProxy = CreateInstanceScriptProxy; - retval.UpdateInstance = UpdateInstance; - retval.QueryInstanceRenderSurface = QuerySurface; - retval.RenderInstance = Render; - retval.ReleaseInstance = ReleaseInstance; - retval.ReleaseClass = ReleaseClass; - return retval; -} - - * Required API function. - */ - -typedef TRenderPluginClass (*TCreateRenderPluginClassFunction)(const char *inTypeName); - -#ifdef _cplusplus -} -#endif - -#endif |