summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h')
-rw-r--r--src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h b/src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h
new file mode 100644
index 00000000..1ba7cf08
--- /dev/null
+++ b/src/Runtime/ogl-runtime/src/engine/Qt3DSPluginDLL.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 1993-2009 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$
+**
+****************************************************************************/
+//==============================================================================
+// Includes
+//==============================================================================
+#pragma once
+#include "Qt3DSBasicPluginDLL.h"
+
+#include <QtGlobal>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//==============================================================================
+// Enums
+//==============================================================================
+// Texture format
+typedef enum _ETEXTUREFORMAT {
+ ETEXTUREFORMAT_Unknown = 0,
+ ETEXTUREFORMAT_RGBA8,
+ ETEXTUREFORMAT_RGB8,
+ ETEXTUREFORMAT_RGB565,
+ ETEXTUREFORMAT_RGBA5551,
+ ETEXTUREFORMAT_Alpha8,
+ ETEXTUREFORMAT_Luminance8,
+ ETEXTUREFORMAT_LuminanceAlpha8,
+ ETEXTUREFORMAT_RGBA_DXT1,
+ ETEXTUREFORMAT_RGB_DXT1,
+ ETEXTUREFORMAT_RGBA_DXT3,
+ ETEXTUREFORMAT_RGBA_DXT5,
+} ETEXTUREFORMAT;
+
+//==============================================================================
+// Functions declarations
+//==============================================================================
+
+//==============================================================================
+/**
+ * Perform plugin initialization.
+ * @param inArgs string arguments from XIF arg parameter
+ * @return EDLLSTATUS_OK if initialization suceeds
+ */
+typedef long (*PROC_Initialize)(const char *inArgs);
+Q_DECL_EXPORT long Initialize(const char *inArgs);
+
+//==============================================================================
+/**
+ * Passes the current screen size and format to the plugin.
+ * Plugin should override with it's own desired settings.
+ * This affects the size and format of the allocated offscreen texture.
+ * When resources are allocated, SetAllocatedRenderInfo will be called to
+ * inform the plugin of the allocated resources
+ * @param ioWidth width
+ * @param ioHeight height
+ * @param ioTextureFormat See ETEXTUREFORMAT
+ */
+typedef void (*PROC_GetDesiredTextureSize)(long *ioWidth, long *ioHeight,
+ ETEXTUREFORMAT *ioTextureFormat);
+Q_DECL_EXPORT void GetDesiredTextureSize(long *ioWidth, long *ioHeight,
+ ETEXTUREFORMAT *ioTextureFormat);
+
+//==============================================================================
+/**
+ * Information about the current EGL environment.
+ * Useful if plugin wishes to switch EGLContext to manage it's own state.
+ * Optional
+ * @param inEGLDisplay pointer to EGLDisplay
+ * @param inEGLCurrentContext pointer to current EGLContext
+ * @param inEGLSurface pointer to EGLSurface
+ * @param inEGLConfig pointer to EGLConfig attributes
+ */
+typedef void (*PROC_SetEGLInfo)(void *inEGLDisplay, void *inEGLCurrentContext, void *inEGLSurface,
+ void *inEGLConfig);
+Q_DECL_EXPORT void SetEGLInfo(void *inEGLDisplay, void *inEGLCurrentContext,
+ void *inEGLSurface, void *inEGLConfig);
+
+//==============================================================================
+/**
+ * Render pulse whenever the runtime requires a frame from the plugin.
+ * Note that if plugin wishes to switch EGLContext,
+ * it should restore the previous EGLContext(obtained from SetEGLInfo) at the end of this
+ *function.
+ * @param inHostWidth width of the host rectangle
+ * @param inHostHeight height of the host rectangle
+ * @param inDrawTime current time in milliseconds
+ */
+typedef void (*PROC_Render)(long inHostWidth, long inHostHeight, long inDrawTime);
+Q_DECL_EXPORT void Render(long inHostWidth, long inHostHeight, long inDrawTime);
+
+//==============================================================================
+/**
+ * Perform plugin uninitialization.
+ * @return EDLLSTATUS_OK if successful
+ */
+typedef long (*PROC_Uninitialize)();
+Q_DECL_EXPORT long Uninitialize();
+
+#ifdef __cplusplus
+}
+#endif