summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h')
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h2245
2 files changed, 0 insertions, 2245 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
new file mode 160000
+Subproject 427fddb50d43aa21a90fc7356ee3cdd8a908df5
diff --git a/src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h b/src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h
deleted file mode 100644
index 12de5d88..00000000
--- a/src/Runtime/ogl-runtime/src/render/backends/Qt3DSRenderBackend.h
+++ /dev/null
@@ -1,2245 +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_RENDER_BACKEND_H
-#define QT3DS_RENDER_BACKEND_H
-
-/// @file Qt3DSRenderBackend.h
-/// NVRender backend definition.
-
-#include "foundation/Qt3DSAllocator.h"
-#include "foundation/Qt3DSNoCopy.h"
-#include "foundation/Qt3DSFoundation.h"
-#include "foundation/Qt3DSBroadcastingAllocator.h"
-#include "foundation/Qt3DSRefCounted.h"
-#include "render/Qt3DSRenderBaseTypes.h"
-#include "foundation/Qt3DSBounds3.h"
-#include <EASTL/string.h>
-
-#include <QtGui/qsurfaceformat.h>
-
-namespace qt3ds {
-namespace render {
-
-#define HandleToID_cast(staticType, dynamicType, handle) \
- static_cast<staticType>(reinterpret_cast<dynamicType>(handle))
-
- class NVRenderBackend : public NVRefCounted, public NoCopy
- {
-
- public:
- /// opaque buffer object handle
- typedef struct _NVRenderBackendBufferObject *NVRenderBackendBufferObject;
- /// opaque attribute layout object handle
- typedef struct _NVRenderBackendAttribLayoutObject *NVRenderBackendAttribLayoutObject;
- /// opaque input assembler object handle
- typedef struct _NVRenderBackendInputAssemblerObject *NVRenderBackendInputAssemblerObject;
- /// opaque texture object handle
- typedef struct _NVRenderBackendTextureObject *NVRenderBackendTextureObject;
- /// opaque sampler object handle
- typedef struct _NVRenderBackendSamplerObject *NVRenderBackendSamplerObject;
- /// opaque renderbuffer object handle
- typedef struct _NVRenderBackendRenderbufferObject *NVRenderBackendRenderbufferObject;
- /// opaque framebuffer object handle
- typedef struct _NVRenderBackendRenderTargetObject *NVRenderBackendRenderTargetObject;
- /// opaque vertex shader object handle
- typedef struct _NVRenderBackendVertexShaderObject *NVRenderBackendVertexShaderObject;
- /// opaque fragment shader object handle
- typedef struct _NVRenderBackendFragmentShaderObject *NVRenderBackendFragmentShaderObject;
- /// opaque tesselation control shader object handle
- typedef struct _NVRenderBackendTessControlShaderObject
- *NVRenderBackendTessControlShaderObject;
- /// opaque tesselation evaluation shader object handle
- typedef struct _NVRenderBackendTessEvaluationShaderObject
- *NVRenderBackendTessEvaluationShaderObject;
- /// opaque geometry shader object handle
- typedef struct _NVRenderBackendGeometryShaderObject *NVRenderBackendGeometryShaderObject;
- /// opaque compute shader object handle
- typedef struct _NVRenderBackendComputeShaderObject *NVRenderBackendComputeShaderObject;
- /// opaque shader program object handle
- typedef struct _NVRenderBackendShaderProgramObject *NVRenderBackendShaderProgramObject;
- /// opaque depth stencil state object handle
- typedef struct _NVRenderBackendDepthStencilStateObject
- *NVRenderBackendDepthStencilStateObject;
- /// opaque rasterizer state object handle
- typedef struct _NVRenderBackendRasterizerStateObject *NVRenderBackendRasterizerStateObject;
- /// opaque query object handle
- typedef struct _NVRenderBackendQueryObject *NVRenderBackendQueryObject;
- /// opaque sync object handle
- typedef struct _NVRenderBackendSyncObject *NVRenderBackendSyncObject;
- /// opaque sync object handle
- typedef struct _NVRenderBackendProgramPipeline *NVRenderBackendProgramPipeline;
- /// opaque sync object handle
- typedef struct _NVRenderBackendPathObject *NVRenderBackendPathObject;
-
- // backend capability caps
- typedef struct
- {
- enum Enum {
- ConstantBuffer, ///< Constant buffer support query
- DepthStencilTexture, ///< depth stencil texture format suport query
- DxtImages, ///< DXT image support query
- FpRenderTarget, ///< render to floating point target support query
- MsTexture, ///< Multisample texture support query
- TexSwizzle, ///< Texture swizzle support query
- FastBlits, ///< Hardware supports fast blits
- Tessellation, ///< Hardware supports tessellation
- Compute, ///< Hardware supports compute shader
- Geometry, ///< Hardware supports geometry shader
- SampleQuery, ///< Hardware supports query calls of type samples
- TimerQuery, ///< Hardware supports query calls of type timer
- CommandSync, ///< Hardware supports command sync object
- TextureArray, ///< Hardware supports texture arrays
- StorageBuffer, ///< Hardware supports shader storage buffers
- AtomicCounterBuffer, ///< Hardware supports atomic counter buffers
- ShaderImageLoadStore, ///< Hardware supports shader image load store operations
- ProgramPipeline, ///< Driver supports separate programs
- PathRendering, ///< Driver support path rendering
- AdvancedBlend, ///< Driver supports advanced blend modes
- BlendCoherency, ///< Hardware supports blend coherency
- gpuShader5, // for high precision sampling
- AdvancedBlendKHR, ///< Driver supports advanced blend modes
- VertexArrayObject,
- StandardDerivatives,
- TextureLod
- };
- } NVRenderBackendCaps;
-
- // backend queries
- typedef struct
- {
- enum Enum {
- MaxTextureSize, ///< Return max supported texture size
- MaxTextureArrayLayers, ///< Return max supported layer count for texture arrays
- MaxConstantBufferSlots, ///< Return max supported constant buffe slots for a single
- ///shader stage
- MaxConstantBufferBlockSize ///< Return max supported size for a single constant
- ///buffer block
- };
- } NVRenderBackendQuery;
-
- /// backend interface
-
- /**
- * @brief get the backend type
- *
- * @return true backend type
- */
- virtual NVRenderContextType GetRenderContextType() const = 0;
-
- /**
- * @brief get the version of the shading language
- * @return version string, must be copied by clients to be retained.
- */
- virtual const char *GetShadingLanguageVersion() = 0;
-
- /**
- * @brief get maximum supported texture image units that
- * can be used to access texture maps from the vertex shader and the fragment processor
- *combined.
- *
- * @return max texture size
- */
- virtual QT3DSU32 GetMaxCombinedTextureUnits() = 0;
-
- /**
- * @brief query Backend capabilities
- *
- * @param[in] inCap CAPS flag to query
- * @ConstantBuffer, @DepthStencilTexture, ...
- *
- * @return true if supported
- */
- virtual bool GetRenderBackendCap(NVRenderBackendCaps::Enum inCap) const = 0;
-
- /**
- * @brief query Backend values
- *
- * @param[in] inQuery Query flag to get value for
- * @MaxTextureSize, @MaxTextureArrayLayers,
- *...
- * @param[in/out] params the query result is stored here
- *
- * @return no return
- */
- virtual void GetRenderBackendValue(NVRenderBackendQuery::Enum inQuery,
- QT3DSI32 *params) const = 0;
-
- /**
- * @brief query for bit depth of the depth buffer
- *
- * @return depth buffer bitplanes
- */
- virtual QT3DSU32 GetDepthBits() const = 0;
-
- /**
- * @brief query for bit depth of the stencil buffer
- *
- * @return stencil buffer bitplanes
- */
- virtual QT3DSU32 GetStencilBits() const = 0;
-
- /*
- * @brief set a backend rende state
- *
- * @param[in] bEnable enable/disable state
- * @param[in] value type of state
- *
- * @return no return
- */
- virtual void SetRenderState(bool bEnable, const NVRenderState::Enum value) = 0;
-
- /**
- * @brief get a backend rende state
- *
- * @param[in] value type of state
- *
- * @return true if state enabled otherwise false
- */
- virtual bool GetRenderState(const NVRenderState::Enum value) = 0;
-
- /**
- * @brief get current depth function
- *
- * @return active depth function
- */
- virtual NVRenderBoolOp::Enum GetDepthFunc() = 0;
-
- /**
- * @brief create a depth stencil state object
- *
- * @param[in] enableDepth enable depth test
- * @param[in] depthMask enable depth writes
- * @param[in] depthFunc depth compare function
- * @param[in] enableStencil enable stencil test
- * @param[in] stencilFuncFront stencil setup front faces
- * @param[in] stencilFuncBack stencil setup back faces
- * @param[in] depthStencilOpFront depth/stencil operations front faces
- * @param[in] depthStencilOpBack depth/stencil operations back faces
- *
- * @return opaque handle to state object
- */
- virtual NVRenderBackendDepthStencilStateObject
- CreateDepthStencilState(bool enableDepth, bool depthMask, NVRenderBoolOp::Enum depthFunc,
- bool enableStencil,
- NVRenderStencilFunctionArgument &stencilFuncFront,
- NVRenderStencilFunctionArgument &stencilFuncBack,
- NVRenderStencilOperationArgument &depthStencilOpFront,
- NVRenderStencilOperationArgument &depthStencilOpBack) = 0;
-
- /**
- * @brief release a depth stencil state object
- *
- * @param[in] depthStencilState pointer to state object
- *
- * @return none
- */
- virtual void
- ReleaseDepthStencilState(NVRenderBackendDepthStencilStateObject depthStencilState) = 0;
-
- /**
- * @brief create a rasterizer state object
- *
- * @param[in] depthBias any othe value than 0 enables depth bias
- * @param[in] depthScale any othe value than 0 enables depth scale
- * @param[in] cullFace select face to cull front or back
- *
- * @return opaque handle to state object
- */
- virtual NVRenderBackendRasterizerStateObject
- CreateRasterizerState(QT3DSF32 depthBias, QT3DSF32 depthScale, NVRenderFaces::Enum cullFace) = 0;
-
- /**
- * @brief release a rasterizer state object
- *
- * @param[in] rasterizerState pointer to state object
- *
- * @return none
- */
- virtual void
- ReleaseRasterizerState(NVRenderBackendRasterizerStateObject rasterizerState) = 0;
-
- /**
- * @brief set depth stencil state
- *
- * @param[in] depthStencilState pointer to state object
- *
- * @return none
- */
- virtual void
- SetDepthStencilState(NVRenderBackendDepthStencilStateObject depthStencilState) = 0;
-
- /**
- * @brief set rasterizer state
- *
- * @param[in] rasterizerState pointer to state object
- *
- * @return none
- */
- virtual void SetRasterizerState(NVRenderBackendRasterizerStateObject rasterizerState) = 0;
-
- /**
- * @brief set current depth function
- *
- * @param[in] func type of function
- *
- * @return no return
- */
- virtual void SetDepthFunc(const NVRenderBoolOp::Enum func) = 0;
-
- /**
- * @brief query if depth write is enabled
- *
- * @return true if enabled
- */
- virtual bool GetDepthWrite() = 0;
-
- /**
- * @brief enable / disable depth writes
- *
- * @param[in] bEnable true for enable
- *
- * @return no return
- */
- virtual void SetDepthWrite(bool bEnable) = 0;
-
- /**
- * @brief enable / disable color channel writes
- *
- * @param[in] bRed true for enable red channel
- * @param[in] bGreen true for enable green channel
- * @param[in] bBlue true for enable blue channel
- * @param[in] bAlpha true for enable alpha channel
- *
- * @return no return
- */
- virtual void SetColorWrites(bool bRed, bool bGreen, bool bBlue, bool bAlpha) = 0;
-
- /**
- * @brief enable / disable multisample rendering
- *
- * @param[in] bEnable true for enable
- *
- * @return no return
- */
- virtual void SetMultisample(bool bEnable) = 0;
-
- /**
- * @brief query blend functions
- *
- * @param[out] pBlendFuncArg blending functions
- *
- * @return no return
- */
- virtual void GetBlendFunc(NVRenderBlendFunctionArgument *pBlendFuncArg) = 0;
-
- /**
- * @brief set blend functions
- *
- * @param[in] pBlendFuncArg blending functions
- *
- * @return no return
- */
- virtual void SetBlendFunc(const NVRenderBlendFunctionArgument &blendFuncArg) = 0;
-
- /**
- * @brief set blend equation
- *
- * @param[in] pBlendEquArg blending equation
- *
- * @return no return
- */
- virtual void SetBlendEquation(const NVRenderBlendEquationArgument &pBlendEquArg) = 0;
-
- /**
- * @brief guarantee blend coherency
- *
- *
- * @return no return
- */
- virtual void SetBlendBarrier(void) = 0;
-
- /**
- * @brief query scissor rectangle
- *
- * @param[out] pRect contains scissor rect
- *
- * @return no return
- */
- virtual void GetScissorRect(NVRenderRect *pRect) = 0;
-
- /**
- * @brief set scissor rectangle
- *
- * @param[out] pRect contains scissor rect
- *
- * @return no return
- */
- virtual void SetScissorRect(const NVRenderRect &rect) = 0;
-
- /**
- * @brief query viewport rectangle
- *
- * @param[out] pRect contains viewport rect
- *
- * @return no return
- */
- virtual void GetViewportRect(NVRenderRect *pRect) = 0;
-
- /**
- * @brief set viewport rectangle
- *
- * @param[out] pRect contains viewport rect
- *
- * @return no return
- */
- virtual void SetViewportRect(const NVRenderRect &rect) = 0;
-
- /**
- * @brief query viewport rectangle
- *
- * @param[in] clearColor clear color
- *
- * @return no return
- */
- virtual void SetClearColor(const QT3DSVec4 *pClearColor) = 0;
-
- /**
- * @brief query viewport rectangle
- *
- * @param[in] flags clear flags
- *
- * @return no return
- */
- virtual void Clear(NVRenderClearFlags flags) = 0;
-
- /**
- * @brief create a buffer object
- *
- * @param[in] size Size of the buffer
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- * @param[in] usage Usage of the buffer (e.g. static, dynamic...)
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- *application.
- *
- * @return The created buffer object or NULL if the creation failed.
- */
- virtual NVRenderBackendBufferObject CreateBuffer(size_t size,
- NVRenderBufferBindFlags bindFlags,
- NVRenderBufferUsageType::Enum usage,
- const void *hostPtr = NULL) = 0;
-
- /**
- * @brief bind a buffer object
- *
- * @param[in] bo Pointer to buffer object
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- *
- * @return no return.
- */
- virtual void BindBuffer(NVRenderBackendBufferObject bo,
- NVRenderBufferBindFlags bindFlags) = 0;
-
- /**
- * @brief Release a single buffer object
- *
- * @param[in] bo Pointer to buffer object
- *
- * @return no return.
- */
- virtual void ReleaseBuffer(NVRenderBackendBufferObject bo) = 0;
-
- /**
- * @brief update a whole buffer object
- *
- * @param[in] bo Pointer to buffer object
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- * @param[in] size Size of the data buffer
- * @param[in] usage Usage of the buffer (e.g. static, dynamic...)
- * @param[in] data A pointer to the buffer data that is allocated by the
- *application.
- *
- * @return no return.
- */
- virtual void UpdateBuffer(NVRenderBackendBufferObject bo, NVRenderBufferBindFlags bindFlags,
- size_t size, NVRenderBufferUsageType::Enum usage,
- const void *data) = 0;
-
- /**
- * @brief update a range of a buffer object
- *
- * @param[in] bo Pointer to buffer object
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- * @param[in] size Size of the data buffer
- * @param[in] usage Usage of the buffer (e.g. static, dynamic...)
- * @param[in] data A pointer to the buffer data that is allocated by the
- *application.
- *
- * @return no return.
- */
- virtual void UpdateBufferRange(NVRenderBackendBufferObject bo,
- NVRenderBufferBindFlags bindFlags, size_t offset,
- size_t size, const void *data) = 0;
-
- /**
- * @brief Get a pointer to the buffer data ( GL(ES) >= 3 only )
- *
- * @param[in] bo Pointer to buffer object
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- * @param[in] offset Byte offset into the data buffer
- * @param[in] length Byte length of mapping size
- * @param[in] access Access of the buffer (e.g. read, write, ...)
- *
- * @return pointer to mapped data or null.
- */
- virtual void *MapBuffer(NVRenderBackendBufferObject bo, NVRenderBufferBindFlags bindFlags,
- size_t offset, size_t length,
- NVRenderBufferAccessFlags accessFlags) = 0;
-
- /**
- * @brief Unmap a previously mapped buffer ( GL(ES) >= 3 only )
- * This functions transfers the content to the hardware buffer
- *
- * @param[in] bo Pointer to buffer object
- * @param[in] bindFlags Where to bind this buffer (e.g. vertex, index, ...)
- * For OpenGL this should be a single
- *value
- *
- * @return true if successful
- */
- virtual bool UnmapBuffer(NVRenderBackendBufferObject bo,
- NVRenderBufferBindFlags bindFlags) = 0;
-
- /**
- * @brief Set a memory barrier
- *
- * @param[in] barriers Flags for barriers
- *
- * @return no return.
- */
- virtual void SetMemoryBarrier(NVRenderBufferBarrierFlags barriers) = 0;
-
- /**
- * @brief create a query object
- *
- * @return The created query object or NULL if the creation failed.
- */
- virtual NVRenderBackendQueryObject CreateQuery() = 0;
-
- /**
- * @brief delete query objects
- *
- * @param[in] qo Handle to query object
- *
- * @return no return
- */
- virtual void ReleaseQuery(NVRenderBackendQueryObject qo) = 0;
-
- /**
- * @brief Start query recording
- *
- * @param[in] qo Handle to query object
- * @param[in] type Type of query
- *
- * @return no return
- */
- virtual void BeginQuery(NVRenderBackendQueryObject qo, NVRenderQueryType::Enum type) = 0;
-
- /**
- * @brief End query recording
- *
- * @param[in] qo Handle to query object
- * @param[in] type Type of query
- *
- * @return no return
- */
- virtual void EndQuery(NVRenderBackendQueryObject qo, NVRenderQueryType::Enum type) = 0;
-
- /**
- * @brief Get a query result
- *
- * @param[in] qo Handle to query object
- * @param[in] type Type of query
- * @param[out] params Contains result of query regarding query type
- *
- * @return no return
- */
- virtual void GetQueryResult(NVRenderBackendQueryObject qo,
- NVRenderQueryResultType::Enum resultType, QT3DSU32 *params) = 0;
-
- /**
- * @brief Get a query result
- *
- * @param[in] qo Handle to query object
- * @param[in] type Type of query
- * @param[out] params Contains result of query regarding query type 64 bit returns
- *
- * @return no return
- */
- virtual void GetQueryResult(NVRenderBackendQueryObject qo,
- NVRenderQueryResultType::Enum resultType, QT3DSU64 *params) = 0;
-
- /**
- * @brief Record the GPU time using the query object
- *
- * @param[in] qo Handle to query object
- *
- * @return no return
- */
- virtual void SetQueryTimer(NVRenderBackendQueryObject qo) = 0;
-
- /**
- * @brief create a sync object and place it in the command queue
- *
- * @param[in] tpye Type to sync
- * @param[in] syncFlags Currently unused
- *
- * @return The created sync object or NULL if the creation failed.
- */
- virtual NVRenderBackendSyncObject CreateSync(NVRenderSyncType::Enum tpye,
- NVRenderSyncFlags syncFlags) = 0;
-
- /**
- * @brief delete sync object
- *
- * @param[in] so Handle to sync object
- *
- * @return no return
- */
- virtual void ReleaseSync(NVRenderBackendSyncObject so) = 0;
-
- /**
- * @brief wait for sync object to be signaled
- *
- * @param[in] so Handle to sync object
- * @param[in] syncFlags Currently unused
- * @param[in] timeout Currently ignored
- *
- * @return no return
- */
- virtual void WaitSync(NVRenderBackendSyncObject so, NVRenderCommandFlushFlags syncFlags,
- QT3DSU64 timeout) = 0;
-
- /**
- * @brief create a render target object
- *
- *
- * @return The created render target object or NULL if the creation failed.
- */
- virtual NVRenderBackendRenderTargetObject CreateRenderTarget() = 0;
-
- /**
- * @brief Release a single render target object
- *
- * @param[in] rto Pointer to render target object
- *
- * @return no return.
- */
- virtual void ReleaseRenderTarget(NVRenderBackendRenderTargetObject rto) = 0;
-
- /**
- * @brief Attach a renderbuffer object to the framebuffer
- *
- * @param[in] rto Pointer to render target object
- * @param[in] attachment Attachment point (e.g COLOR0, DEPTH)
- * @param[in] rbo Pointer to renderbuffer object
- *
- * @return no return.
- */
- virtual void RenderTargetAttach(NVRenderBackendRenderTargetObject rto,
- NVRenderFrameBufferAttachments::Enum attachment,
- NVRenderBackendRenderbufferObject rbo) = 0;
-
- /**
- * @brief Attach a texture object to the render target
- *
- * @param[in] rto Pointer to render target object
- * @param[in] attachment Attachment point (e.g COLOR0, DEPTH)
- * @param[in] to Pointer to texture object
- * @param[in] target Attachment texture target
- *
- * @return no return.
- */
- virtual void RenderTargetAttach(
- NVRenderBackendRenderTargetObject rto, NVRenderFrameBufferAttachments::Enum attachment,
- NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target = NVRenderTextureTargetType::Texture2D) = 0;
-
- /**
- * @brief Attach a texture object to the render target
- *
- * @param[in] rto Pointer to render target object
- * @param[in] attachment Attachment point (e.g COLOR0, DEPTH)
- * @param[in] to Pointer to texture object
- * @param[in] level Texture mip level
- * @param[in] layer Texture layer or slice
- *
- * @return no return.
- */
- virtual void RenderTargetAttach(NVRenderBackendRenderTargetObject rto,
- NVRenderFrameBufferAttachments::Enum attachment,
- NVRenderBackendTextureObject to, QT3DSI32 level,
- QT3DSI32 layer) = 0;
-
- /**
- * @brief Make a render target active
- *
- * @param[in] rto Pointer to render target object
- *
- * @return no return.
- */
- virtual void SetRenderTarget(NVRenderBackendRenderTargetObject rto) = 0;
-
- /**
- * @brief Check if a render target is ready for render
- *
- * @param[in] rto Pointer to render target object
- *
- * @return true if usable.
- */
- virtual bool RenderTargetIsValid(NVRenderBackendRenderTargetObject rto) = 0;
-
- /**
- * @brief Make a render target active for reading
- *
- * @param[in] rto Pointer to render target object
- *
- * @return no return.
- */
- virtual void SetReadTarget(NVRenderBackendRenderTargetObject rto) = 0;
-
- /**
- * @brief Set active buffers for drawing
- *
- * @param[in] rto Pointer to render target object
- * @param[in] inDrawBufferSet Pointer to array of enabled render targets
- *
- * @return no return.
- */
- virtual void SetDrawBuffers(NVRenderBackendRenderTargetObject rto,
- NVConstDataRef<QT3DSI32> inDrawBufferSet) = 0;
-
- /**
- * @brief Set active buffer for reading
- *
- * @param[in] rto Pointer to render target object
- * @param[in] inReadFace Buffer to read from
- *
- * @return no return.
- */
- virtual void SetReadBuffer(NVRenderBackendRenderTargetObject rto,
- NVReadFaces::Enum inReadFace) = 0;
-
- /**
- * @brief Copy framebuffer attachments. Source is set with SetReadTarget dest with
- * SetRenderTarget
- *
- * @param[in] srcX0 Lower left X coord of source rectangle
- * @param[in] srcY0 Lower left Y coord of source rectangle
- * @param[in] srcX1 Upper right X coord of source rectangle
- * @param[in] srcY1 Upper right Y coord of source rectangle
- * @param[in] dstX0 Lower left X coord of dest rectangle
- * @param[in] dstY0 Lower left Y coord of dest rectangle
- * @param[in] dstX1 Upper right X coord of dest rectangle
- * @param[in] dstY1 Upper right Y coord of dest rectangle
- * @param[in] inDrawBufferSet pointer to array of enabled render targets
- * @param[in] filter Copy filter method (NEAREST or LINEAR)
- *
- * @return no return.
- */
- virtual void BlitFramebuffer(QT3DSI32 srcX0, QT3DSI32 srcY0, QT3DSI32 srcX1, QT3DSI32 srcY1,
- QT3DSI32 dstX0, QT3DSI32 dstY0, QT3DSI32 dstX1, QT3DSI32 dstY1,
- NVRenderClearFlags flags,
- NVRenderTextureMagnifyingOp::Enum filter) = 0;
-
- /**
- * @brief create a render buffer object
- *
- * @param[in] storageFormat Format of the buffer
- * @param[in] width Buffer with
- * @param[in] height Buffer height
- *
- * @return The created render buffer object or NULL if the creation failed.
- */
- virtual NVRenderBackendRenderbufferObject
- CreateRenderbuffer(NVRenderRenderBufferFormats::Enum storageFormat, size_t width,
- size_t height) = 0;
-
- /**
- * @brief Release a single renderbuffer object
- *
- * @param[in] bo Pointer to renderbuffer object
- *
- * @return no return.
- */
- virtual void ReleaseRenderbuffer(NVRenderBackendRenderbufferObject rbo) = 0;
-
- /**
- * @brief resize a render buffer object
- *
- * @param[in] storageFormat Format of the buffer
- * @param[in] width Buffer with
- * @param[in] height Buffer height
- *
- * @return True on success
- */
- virtual bool ResizeRenderbuffer(NVRenderBackendRenderbufferObject rbo,
- NVRenderRenderBufferFormats::Enum storageFormat,
- size_t width, size_t height) = 0;
-
- /**
- * @brief create a texture object
- *
- * @return The created texture object or NULL if the creation failed..
- */
- virtual NVRenderBackendTextureObject CreateTexture() = 0;
-
- /**
- * @brief set texture data for a 2D texture
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] border border
- * @param[in] format format of provided pixel data
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetTextureData2D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- NVRenderTextureFormats::Enum internalFormat, size_t width,
- size_t height, QT3DSI32 border,
- NVRenderTextureFormats::Enum format,
- const void *hostPtr = NULL) = 0;
-
- /**
- * @brief set texture data for the face of a Cube map
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target face
- * @param[in] level Texture mip level
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] border border
- * @param[in] format format of provided pixel data
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetTextureDataCubeFace(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- NVRenderTextureFormats::Enum internalFormat,
- size_t width, size_t height, QT3DSI32 border,
- NVRenderTextureFormats::Enum format,
- const void *hostPtr = NULL) = 0;
-
- /**
- * @brief create a storage for a 2D texture including mip levels
- * Note that this makes texture immutable in size and format
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] levels Texture mip level count
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- *
- * @return No return
- */
- virtual void CreateTextureStorage2D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 levels,
- NVRenderTextureFormats::Enum internalFormat,
- size_t width, size_t height) = 0;
-
- /**
- * @brief set texture sub data for a 2D texture
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] xOffset Texture x offset
- * @param[in] yOffset Texture y offset
- * @param[in] width Texture width
- * @param[in] height Texture height
- * @param[in] border border
- * @param[in] format format of texture
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetTextureSubData2D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- QT3DSI32 xOffset, QT3DSI32 yOffset, size_t width, size_t height,
- NVRenderTextureFormats::Enum format,
- const void *hostPtr = NULL) = 0;
-
- /**
- * @brief set compressed texture data for a 2D texture
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] border border
- * @param[in] imageSize image size in bytes located at hostPtr
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetCompressedTextureData2D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- NVRenderTextureFormats::Enum internalFormat,
- size_t width, size_t height, QT3DSI32 border,
- size_t imageSize, const void *hostPtr = NULL) = 0;
-
- /**
- * @brief set compressed texture data for a Cubemap face
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] border border
- * @param[in] imageSize image size in bytes located at hostPtr
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetCompressedTextureDataCubeFace(
- NVRenderBackendTextureObject to, NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- NVRenderTextureFormats::Enum internalFormat, size_t width, size_t height, QT3DSI32 border,
- size_t imageSize, const void *hostPtr = NULL) = 0;
-
- /**
- * @brief set compressed texture sub data for a 2D texture
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] xOffset Texture x offset
- * @param[in] yOffset Texture y offset
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] format format of provided pixel data
- * @param[in] imageSize image size in bytes located at hostPtr
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetCompressedTextureSubData2D(
- NVRenderBackendTextureObject to, NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- QT3DSI32 xOffset, QT3DSI32 yOffset, size_t width, size_t height,
- NVRenderTextureFormats::Enum format, size_t imageSize, const void *hostPtr = NULL) = 0;
-
- /**
- * @brief establish a multisampled 2D texture
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D MS
- * @param[in] samples Textures sample count
- * @param[in] internalFormat Format of the texture
- * @param[in] width Texture width
- * @param[in] height Texture height
- * @param[in] bool Fixed sample locations
- *
- * @return No return
- */
- virtual void SetMultisampledTextureData2D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target,
- size_t samples,
- NVRenderTextureFormats::Enum internalFormat,
- size_t width, size_t height,
- bool fixedsamplelocations) = 0;
-
- /**
- * @brief set texture data for a 3D texture or 2D texture array
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] level Texture mip level
- * @param[in] internalFormat format of the texture
- * @param[in] width texture width
- * @param[in] height texture height
- * @param[in] depth texture depth or slice count
- * @param[in] border border
- * @param[in] format format of provided pixel data
- * @param[in] hostPtr A pointer to the buffer data that is allocated by the
- * application.
- *
- * @return No return
- */
- virtual void SetTextureData3D(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 level,
- NVRenderTextureFormats::Enum internalFormat, size_t width,
- size_t height, size_t depth, QT3DSI32 border,
- NVRenderTextureFormats::Enum format,
- const void *hostPtr = NULL) = 0;
-
- /**
- * @brief generate mipmap levels
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Texture target 2D,...
- * @param[in] hint How to generate mips (Nicest)
- *
- * @return No return
- */
- virtual void GenerateMipMaps(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target,
- NVRenderHint::Enum genType) = 0;
-
- /**
- * @brief bind a texture object
- *
- * @param[in] to Pointer to texture object
- * @param[in] target Where to bind this texture (e.g. 2D, 3D, ...)
- * @param[in] unit Which unit to bind this texture
- *
- * @return no return.
- */
- virtual void BindTexture(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSU32 unit) = 0;
-
- /**
- * @brief bind a image/texture object
- *
- * @param[in] to Pointer to texture object
- * @param[in] unit Which unit to bind this texture
- * @param[in] level Which level to bind
- * @param[in] layered Bind layered texture (cube map, array,... )
- * @param[in] level Specify layer. Only valid of layered=false.
- * @param[in] access Access mode ( read, write, read-write )
- * @param[in] format Texture format must be compatible with Image format
- *
- * @return no return.
- */
- virtual void BindImageTexture(NVRenderBackendTextureObject to, QT3DSU32 unit, QT3DSI32 level,
- bool layered, QT3DSI32 layer,
- NVRenderImageAccessType::Enum accessFlags,
- NVRenderTextureFormats::Enum format) = 0;
-
- /**
- * @brief Release a single texture object
- *
- * @param[in] to Pointer to buffer object
- *
- * @return no return.
- */
- virtual void ReleaseTexture(NVRenderBackendTextureObject to) = 0;
-
- /**
- * @brief query texture swizzle mode
- * This is mainly for luminance, alpha replacement with R8 formats
- *
- * @param[in] inFormat input texture format to check
- *
- * @return texture swizzle mode
- */
- virtual NVRenderTextureSwizzleMode::Enum
- GetTextureSwizzleMode(const NVRenderTextureFormats::Enum inFormat) const = 0;
-
- /**
- * @ brief create a sampler
- *
- * @param[in] minFilter Texture min filter
- * @param[in] magFilter Texture mag filter
- * @param[in] wrapS Texture coord generation for S
- * @param[in] wrapT Texture coord generation for T
- * @param[in] wrapR Texture coord generation for R
- * @param[in] minLod Texture min level of detail
- * @param[in] maxLod Texture max level of detail
- * @param[in] lodBias Texture level of detail example
- * @param[in] compareMode Texture compare mode
- * @param[in] compareFunc Texture compare function
- * @param[in] anisoFilter Aniso filter value [1.0, 16.0]
- * @param[in] borderColor Texture border color float[4]
- *
- * @return The created sampler object or NULL if the creation failed.
- */
- virtual NVRenderBackendSamplerObject CreateSampler(
- NVRenderTextureMinifyingOp::Enum minFilter = NVRenderTextureMinifyingOp::Linear,
- NVRenderTextureMagnifyingOp::Enum magFilter = NVRenderTextureMagnifyingOp::Linear,
- NVRenderTextureCoordOp::Enum wrapS = NVRenderTextureCoordOp::ClampToEdge,
- NVRenderTextureCoordOp::Enum wrapT = NVRenderTextureCoordOp::ClampToEdge,
- NVRenderTextureCoordOp::Enum wrapR = NVRenderTextureCoordOp::ClampToEdge,
- QT3DSI32 minLod = -1000, QT3DSI32 maxLod = 1000, QT3DSF32 lodBias = 0.0,
- NVRenderTextureCompareMode::Enum compareMode = NVRenderTextureCompareMode::NoCompare,
- NVRenderTextureCompareOp::Enum compareFunc = NVRenderTextureCompareOp::LessThanOrEqual,
- QT3DSF32 anisotropy = 1.0, QT3DSF32 *borderColor = NULL) = 0;
-
- /**
- * @ brief update a sampler
- *
- * @param[in] so Pointer to sampler object
- * @param[in] target Texture target 2D, 3D
- * @param[in] minFilter Texture min filter
- * @param[in] magFilter Texture mag filter
- * @param[in] wrapS Texture coord generation for S
- * @param[in] wrapT Texture coord generation for T
- * @param[in] wrapR Texture coord generation for R
- * @param[in] minLod Texture min level of detail
- * @param[in] maxLod Texture max level of detail
- * @param[in] lodBias Texture level of detail bias (unused)
- * @param[in] compareMode Texture compare mode
- * @param[in] compareFunc Texture compare function
- * @param[in] anisoFilter Aniso filter value [1.0, 16.0]
- * @param[in] borderColor Texture border color float[4] (unused)
- *
- * @return No return
- */
- virtual void UpdateSampler(
- NVRenderBackendSamplerObject so, NVRenderTextureTargetType::Enum target,
- NVRenderTextureMinifyingOp::Enum minFilter = NVRenderTextureMinifyingOp::Linear,
- NVRenderTextureMagnifyingOp::Enum magFilter = NVRenderTextureMagnifyingOp::Linear,
- NVRenderTextureCoordOp::Enum wrapS = NVRenderTextureCoordOp::ClampToEdge,
- NVRenderTextureCoordOp::Enum wrapT = NVRenderTextureCoordOp::ClampToEdge,
- NVRenderTextureCoordOp::Enum wrapR = NVRenderTextureCoordOp::ClampToEdge,
- QT3DSF32 minLod = -1000.0, QT3DSF32 maxLod = 1000.0, QT3DSF32 lodBias = 0.0,
- NVRenderTextureCompareMode::Enum compareMode = NVRenderTextureCompareMode::NoCompare,
- NVRenderTextureCompareOp::Enum compareFunc = NVRenderTextureCompareOp::LessThanOrEqual,
- QT3DSF32 anisotropy = 1.0, QT3DSF32 *borderColor = NULL) = 0;
-
- /**
- * @ brief Update a textures swizzle mode
- *
- * @param[in] so Pointer to texture object
- * @param[in] target Texture target 2D, 3D
- * @param[in] swizzleMode Texture swizzle mode
- *
- * @return No return
- */
- virtual void UpdateTextureSwizzle(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target,
- NVRenderTextureSwizzleMode::Enum swizzleMode) = 0;
-
- /**
- * @ brief Update state belonging to a texture object
- *
- * @param[in] so Pointer to texture object
- * @param[in] target Texture target 2D, 3D, Cube
- * @param[in] baseLevel Texture base level
- * @param[in] maxLevel Texture max level
- *
- * @return No return
- */
- virtual void UpdateTextureObject(NVRenderBackendTextureObject to,
- NVRenderTextureTargetType::Enum target, QT3DSI32 baseLevel,
- QT3DSI32 maxLevel) = 0;
-
- /**
- * @brief Release a single sampler object
- *
- * @param[in] so Pointer to sampler object
- *
- * @return no return.
- */
- virtual void ReleaseSampler(NVRenderBackendSamplerObject so) = 0;
-
- /**
- * @brief create a attribute layout object
- *
- * @param[in] attribs Array off vertex attributes.
- *
- * @return The created attribute layout object or NULL if the creation failed.
- */
- virtual NVRenderBackendAttribLayoutObject
- CreateAttribLayout(NVConstDataRef<NVRenderVertexBufferEntry> attribs) = 0;
-
- /**
- * @brief Release a attribute layoutr object
- *
- * @param[in] ao Pointer to attribute layout object
- *
- * @return no return.
- */
- virtual void ReleaseAttribLayout(NVRenderBackendAttribLayoutObject ao) = 0;
-
- /**
- * @brief create a input assembler object
- *
- * @param[in] attribLayout Pointer to NVRenderBackendAttribLayoutObject object
- * @param[in] buffers list of vertex buffers
- * @param[in] indexBuffer index buffer object
- * @param[in] strides list of strides of the buffer
- * @param[in] offsets list of offsets into the buffer
- * @param[in] patchVertexCount vertext count for a patch. Only valid for patch primitives
- *
- * @return The created input assembler object or NULL if the creation failed.
- */
- virtual NVRenderBackendInputAssemblerObject
- CreateInputAssembler(NVRenderBackendAttribLayoutObject attribLayout,
- NVConstDataRef<NVRenderBackendBufferObject> buffers,
- const NVRenderBackendBufferObject indexBuffer,
- NVConstDataRef<QT3DSU32> strides, NVConstDataRef<QT3DSU32> offsets,
- QT3DSU32 patchVertexCount) = 0;
-
- /**
- * @brief Release a input assembler object
- *
- * @param[in] iao Pointer to attribute layout object
- *
- * @return no return.
- */
- virtual void ReleaseInputAssembler(NVRenderBackendInputAssemblerObject iao) = 0;
-
- /**
- * @brief Set a input assembler object.
- * This setup the render engine vertex assmebly
- *
- * @param[in] iao Pointer to attribute layout object
- * @param[in] po Pointer program object
- *
- * @return false if it fails.
- */
- virtual bool SetInputAssembler(NVRenderBackendInputAssemblerObject iao,
- NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Set the per patch vertex count
- *
- * @param[in] iao Pointer to attribute layout object
- * @param[in] count Count of vertices per patch
- *
- * @return false if it fails.
- */
- virtual void SetPatchVertexCount(NVRenderBackendInputAssemblerObject iao, QT3DSU32 count) = 0;
-
- /**
- * @brief create a vertex shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created vertex shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendVertexShaderObject CreateVertexShader(NVConstDataRef<QT3DSI8> source,
- eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a vertex shader object
- *
- * @param[in] vso Pointer to vertex shader object
- *
- * @return No Return.
- */
- virtual void ReleaseVertexShader(NVRenderBackendVertexShaderObject vso) = 0;
-
- /**
- * @brief create a fragment shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created vertex shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendFragmentShaderObject
- CreateFragmentShader(NVConstDataRef<QT3DSI8> source, eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a fragment shader object
- *
- * @param[in] vso Pointer to fragment shader object
- *
- * @return No Return.
- */
- virtual void ReleaseFragmentShader(NVRenderBackendFragmentShaderObject fso) = 0;
-
- /**
- * @brief create a tessellation control shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created tessellation control shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendTessControlShaderObject
- CreateTessControlShader(NVConstDataRef<QT3DSI8> source, eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a tessellation control shader object
- *
- * @param[in] tcso Pointer to tessellation control shader object
- *
- * @return No Return.
- */
- virtual void ReleaseTessControlShader(NVRenderBackendTessControlShaderObject tcso) = 0;
-
- /**
- * @brief create a tessellation evaluation shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created tessellation evaluation shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendTessEvaluationShaderObject
- CreateTessEvaluationShader(NVConstDataRef<QT3DSI8> source, eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a tessellation evaluation shader object
- *
- * @param[in] tcso Pointer to tessellation evaluation shader object
- *
- * @return No Return.
- */
- virtual void
- ReleaseTessEvaluationShader(NVRenderBackendTessEvaluationShaderObject teso) = 0;
-
- /**
- * @brief create a geometry shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created geometry shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendGeometryShaderObject
- CreateGeometryShader(NVConstDataRef<QT3DSI8> source, eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a geometry shader object
- *
- * @param[in] tcso Pointer to geometry shader object
- *
- * @return No Return.
- */
- virtual void ReleaseGeometryShader(NVRenderBackendGeometryShaderObject gso) = 0;
-
- /**
- * @brief create a compute shader object
- *
- * @param[in] source Pointer to shader source
- * @param[in/out] errorMessage Pointer to copy the error message
- * @param[in] binary True if the source is actually a binary program
- *
- * @return The created compute shader object or NULL if the creation failed.
- */
- virtual NVRenderBackendComputeShaderObject CreateComputeShader(NVConstDataRef<QT3DSI8> source,
- eastl::string &errorMessage,
- bool binary) = 0;
-
- /**
- * @brief release a compute shader object
- *
- * @param[in] cso Pointer to compute shader object
- *
- * @return No Return.
- */
- virtual void ReleaseComputeShader(NVRenderBackendComputeShaderObject cso) = 0;
-
- /**
- * @brief attach a vertex shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] vso Pointer to vertex shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendVertexShaderObject vso) = 0;
-
- /**
- * @brief detach a vertex shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] vso Pointer to vertex shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendVertexShaderObject vso) = 0;
-
- /**
- * @brief attach a fragment shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] fso Pointer to fragment shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendFragmentShaderObject fso) = 0;
-
- /**
- * @brief detach a fragment shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] fso Pointer to fragment shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendFragmentShaderObject fso) = 0;
-
- /**
- * @brief attach a tessellation control shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] tcso Pointer to tessellation control shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendTessControlShaderObject tcso) = 0;
-
- /**
- * @brief detach a tessellation control shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] tcso Pointer to tessellation control shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendTessControlShaderObject tcso) = 0;
-
- /**
- * @brief attach a tessellation evaluation shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] teso Pointer to tessellation evaluation shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendTessEvaluationShaderObject teso) = 0;
-
- /**
- * @brief detach a tessellation evaluation shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] teso Pointer to tessellation evaluation shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendTessEvaluationShaderObject teso) = 0;
-
- /**
- * @brief attach a geometry shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] teso Pointer to geometry shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendGeometryShaderObject gso) = 0;
-
- /**
- * @brief detach a geometry shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] teso Pointer to geometry shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendGeometryShaderObject gso) = 0;
-
- /**
- * @brief attach a compute shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] cso Pointer to compute shader object
- *
- * @return No Return.
- */
- virtual void AttachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendComputeShaderObject cso) = 0;
-
- /**
- * @brief detach a compute shader object to a program object
- *
- * @param[in] po Pointer to program object
- * @param[in] cso Pointer to compute shader object
- *
- * @return No Return.
- */
- virtual void DetachShader(NVRenderBackendShaderProgramObject po,
- NVRenderBackendComputeShaderObject cso) = 0;
-
- /**
- * @brief create a shader program object
- *
- * @param[in] isSeparable Tell the backend that this program is separable
- *
- * @return The created shader program object or NULL if the creation failed.
- */
- virtual NVRenderBackendShaderProgramObject CreateShaderProgram(bool isSeparable) = 0;
-
- /**
- * @brief release a shader program object
- *
- * @param[in] po Pointer to shader program object
- *
- * @return No Return.
- */
- virtual void ReleaseShaderProgram(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief link a shader program object
- *
- * @param[in] po Pointer to shader program object
- * @param[in/out] errorMessage Pointer to copy the error message
- *
- * @return True if program is succesful linked.
- */
- virtual bool LinkProgram(NVRenderBackendShaderProgramObject po,
- eastl::string &errorMessage) = 0;
-
- /**
- * @brief Make a program current
- *
- * @param[in] po Pointer to shader program object
- *
- * @return No return
- */
- virtual void SetActiveProgram(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief create a program pipeline object
- *
- *
- * @return The created program pipeline object or NULL if the creation failed.
- */
- virtual NVRenderBackendProgramPipeline CreateProgramPipeline() = 0;
-
- /**
- * @brief release a program pipeline object
- *
- * @param[in] ppo Pointer to program pipeline object
- *
- * @return No Return.
- */
- virtual void ReleaseProgramPipeline(NVRenderBackendProgramPipeline ppo) = 0;
-
- /**
- * @brief Make a program pipeline current
- *
- * @param[in] ppo Pointer to program pipeline object
- *
- * @return No return
- */
- virtual void SetActiveProgramPipeline(NVRenderBackendProgramPipeline ppo) = 0;
-
- /**
- * @brief Make a program stage active for this pipeline
- *
- * @param[in] ppo Pointer to program pipeline object
- * @param[in] flags Shader stage flags to which this po is bound to
- * @param[in] po Pointer to shader program object
- *
- * @return No return
- */
- virtual void SetProgramStages(NVRenderBackendProgramPipeline ppo,
- NVRenderShaderTypeFlags flags,
- NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Runs a compute program
- *
- * @param[in] po Pointer to shader program object
- * @param[in] numGroupsX The number of work groups to be launched in the X
- * dimension
- * @param[in] numGroupsY The number of work groups to be launched in the Y
- * dimension
- * @param[in] numGroupsZ The number of work groups to be launched in the Z
- * dimension
- *
- * @return No return
- */
- virtual void DispatchCompute(NVRenderBackendShaderProgramObject po, QT3DSU32 numGroupsX,
- QT3DSU32 numGroupsY, QT3DSU32 numGroupsZ) = 0;
-
- /**
- * @brief Query constant count for a program object
- *
- * @param[in] po Pointer to shader program object
- *
- * @return Return active constant count
- */
- virtual QT3DSI32 GetConstantCount(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Query constant buffer count for a program object
- *
- * @param[in] po Pointer to shader program object
- *
- * @return Return active constant buffer count
- */
- virtual QT3DSI32 GetConstantBufferCount(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Query constant information by ID
- *
- * @param[in] po Pointer to shader program object
- * @param[in] id Constant ID
- * @param[in] bufSize Max char for nameBuf
- * @param[out] numElem Usually one unless for arrays
- * @param[out] type Constant data type (QT3DSVec4, QT3DSVec3,...)
- * @param[out] binding Unit binding point for samplers and images
- * @param[out] nameBuf Name of the constant
- *
- * @return Return current constant location or -1 if not found
- */
- virtual QT3DSI32 GetConstantInfoByID(NVRenderBackendShaderProgramObject po, QT3DSU32 id,
- QT3DSU32 bufSize, QT3DSI32 *numElem,
- NVRenderShaderDataTypes::Enum *type, QT3DSI32 *binding,
- char *nameBuf) = 0;
-
- /**
- * @brief Query constant buffer information by ID
- *
- * @param[in] po Pointer to shader program object
- * @param[in] id Constant buffer ID
- * @param[in] nameBufSize Size of nameBuf
- * @param[out] paramCount Count ot parameter contained in the buffer
- * @param[out] bufferSize Data size of the constant buffer
- * @param[out] length Actual characters written
- * @param[out] nameBuf Receives the name of the buffer
- *
- * @return Return current constant buffer location or -1 if not found
- */
- virtual QT3DSI32 GetConstantBufferInfoByID(NVRenderBackendShaderProgramObject po, QT3DSU32 id,
- QT3DSU32 nameBufSize, QT3DSI32 *paramCount,
- QT3DSI32 *bufferSize, QT3DSI32 *length,
- char *nameBuf) = 0;
-
- /**
- * @brief Query constant buffer param indices
- *
- * @param[in] po Pointer to shader program object
- * @param[in] id Constant buffer ID
- * @param[out] indices Receives the indices of the uniforms within the
- * constant buffer
- *
- * @return no return value
- */
- virtual void GetConstantBufferParamIndices(NVRenderBackendShaderProgramObject po, QT3DSU32 id,
- QT3DSI32 *indices) = 0;
-
- /**
- * @brief Query constant buffer param info by indices
- *
- * @param[in] po Pointer to shader program object
- * @param[in] count Number of indices
- * @param[in] indices The indices of the uniforms within the constant
- * buffer
- * @param[out] type Array of param types ( float ,int, ...)
- * @param[out] size Array of param size
- * @param[out] offset Array of param offsets within the constant buffer
- *
- * @return no return value
- */
- virtual void GetConstantBufferParamInfoByIndices(NVRenderBackendShaderProgramObject po,
- QT3DSU32 count, QT3DSU32 *indices, QT3DSI32 *type,
- QT3DSI32 *size, QT3DSI32 *offset) = 0;
-
- /**
- * @brief Bind program constant block
- *
- * @param[in] po Pointer to shader program object
- * @param[in] blockIndex Constant block index returned by
- * GetConstantBufferInfoByID
- * @param[in] binding Block binding location which should be the same as index
- * in ProgramSetConstantBlock
- *
- * @return No return
- */
- virtual void ProgramSetConstantBlock(NVRenderBackendShaderProgramObject po,
- QT3DSU32 blockIndex, QT3DSU32 binding) = 0;
-
- /**
- * @brief Bind constant buffer for usage in the current active shader program
- *
- * @param[in] index Constant ID
- * @param[in] bo Pointer to constant buffer object
- *
- * @return No return
- */
- virtual void ProgramSetConstantBuffer(QT3DSU32 index, NVRenderBackendBufferObject bo) = 0;
-
- /**
- * @brief Query storage buffer count for a program object
- *
- * @param[in] po Pointer to shader program object
- *
- * @return Return active storage buffer count
- */
- virtual QT3DSI32 GetStorageBufferCount(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Query storage buffer information by ID
- *
- * @param[in] po Pointer to shader program object
- * @param[in] id Storage buffer ID
- * @param[in] nameBufSize Size of nameBuf
- * @param[out] paramCount Count of parameter contained in the buffer
- * @param[out] bufferSize Data size of the constant buffer
- * @param[out] length Actual characters written
- * @param[out] nameBuf Receives the name of the buffer
- *
- * @return Return current storage buffer binding or -1 if not found
- */
- virtual QT3DSI32 GetStorageBufferInfoByID(NVRenderBackendShaderProgramObject po, QT3DSU32 id,
- QT3DSU32 nameBufSize, QT3DSI32 *paramCount,
- QT3DSI32 *bufferSize, QT3DSI32 *length, char *nameBuf) = 0;
-
- /**
- * @brief Bind a storage buffer for usage in the current active shader program
- *
- * @param[in] index Constant ID
- * @param[in] bo Pointer to storage buffer object
- *
- * @return No return
- */
- virtual void ProgramSetStorageBuffer(QT3DSU32 index, NVRenderBackendBufferObject bo) = 0;
-
- /**
- * @brief Query atomic counter buffer count for a program object
- *
- * @param[in] po Pointer to shader program object
- *
- * @return Return active atomic buffer count
- */
- virtual QT3DSI32 GetAtomicCounterBufferCount(NVRenderBackendShaderProgramObject po) = 0;
-
- /**
- * @brief Query atomic counter buffer information by ID
- *
- * @param[in] po Pointer to shader program object
- * @param[in] id Storage buffer ID
- * @param[in] nameBufSize Size of nameBuf
- * @param[out] paramCount Count of parameter contained in the buffer
- * @param[out] bufferSize Data size of the constant buffer
- * @param[out] length Actual characters written
- * @param[out] nameBuf Receives the name of the buffer
- *
- * @return Return current storage buffer binding or -1 if not found
- */
- virtual QT3DSI32 GetAtomicCounterBufferInfoByID(NVRenderBackendShaderProgramObject po,
- QT3DSU32 id, QT3DSU32 nameBufSize, QT3DSI32 *paramCount,
- QT3DSI32 *bufferSize, QT3DSI32 *length,
- char *nameBuf) = 0;
-
- /**
- * @brief Bind a atomic counter buffer for usage in the current active shader program
- *
- * @param[in] index Constant ID
- * @param[in] bo Pointer to atomic counter buffer object
- *
- * @return No return
- */
- virtual void ProgramSetAtomicCounterBuffer(QT3DSU32 index, NVRenderBackendBufferObject bo) = 0;
-
- /**
- * @brief Set constant value
- *
- * @param[in] po Pointer program object
- * @param[in] id Constant ID
- * @param[in] type Constant data type (QT3DSVec4, QT3DSVec3,...)
- * @param[in] count Element count
- * @param[in] value Pointer to constant value
- * @param[in] transpose Transpose a matrix
- *
- * @return No return
- */
- virtual void SetConstantValue(NVRenderBackendShaderProgramObject po, QT3DSU32 id,
- NVRenderShaderDataTypes::Enum type, QT3DSI32 count,
- const void *value, bool transpose = false) = 0;
-
- /**
- * @brief Draw the current active vertex buffer
- *
- * @param[in] drawMode Draw mode (Triangles, ....)
- * @param[in] start Start vertex
- * @param[in] count Vertex count
- *
- * @return no return.
- */
- virtual void Draw(NVRenderDrawMode::Enum drawMode, QT3DSU32 start, QT3DSU32 count) = 0;
-
- /**
- * @brief Draw the current active vertex buffer using an indirect buffer
- * This means the setup of the draw call is stored in a buffer bound to
- * NVRenderBufferBindValues::Draw_Indirect
- *
- * @param[in] drawMode Draw mode (Triangles, ....)
- * @param[in] indirect Offset into a indirect drawing setup buffer
- *
- * @return no return.
- */
- virtual void DrawIndirect(NVRenderDrawMode::Enum drawMode, const void *indirect) = 0;
-
- /**
- * @brief Draw the current active index buffer
- *
- * @param[in] drawMode Draw mode (Triangles, ....)
- * @param[in] count Index count
- * @param[in] type Index type (QT3DSU16, QT3DSU8)
- * @param[in] indices Pointer to index buffer. In the case of buffer objects
- * this is an offset into the active index buffer
- *object.
- *
- * @return no return.
- */
- virtual void DrawIndexed(NVRenderDrawMode::Enum drawMode, QT3DSU32 count,
- NVRenderComponentTypes::Enum type, const void *indices) = 0;
-
- /**
- * @brief Draw the current active index buffer using an indirect buffer
- * This means the setup of the draw call is stored in a buffer bound to
- * NVRenderBufferBindValues::Draw_Indirect
- *
- * @param[in] drawMode Draw mode (Triangles, ....)
- * @param[in] type Index type (QT3DSU16, QT3DSU8)
- * @param[in] indices Offset into a indirect drawing setup buffer
- *
- * @return no return.
- */
- virtual void DrawIndexedIndirect(NVRenderDrawMode::Enum drawMode,
- NVRenderComponentTypes::Enum type,
- const void *indirect) = 0;
-
- /**
- * @brief Read a pixel rectangle from render target (from bottom left)
- *
- * @param[in] rto Pointer to render target object
- * @param[in] x Windows X start coord
- * @param[in] y Windows Y start coord
- * @param[in] width Read width dim
- * @param[in] height Read height dim
- * @param[out] pixels Returned pixel data
- *
- * @return No return
- */
- virtual void ReadPixel(NVRenderBackendRenderTargetObject rto, QT3DSI32 x, QT3DSI32 y, QT3DSI32 width,
- QT3DSI32 height, NVRenderReadPixelFormats::Enum inFormat,
- void *pixels) = 0;
-
- /**
- * @brief Create a NV path render object
- *
- * @param[in] range Number of internal objects
- *
- * @return return path object on success or NULL
- */
- virtual NVRenderBackendPathObject CreatePathNVObject(size_t range) = 0;
-
- /**
- * @brief Relase a NV path render object
- *
- * @param[in] po Created path object
- * @param[in] range Number of internal objects
- *
- * @return return path object on success or NULL
- */
- virtual void ReleasePathNVObject(NVRenderBackendPathObject po, size_t range) = 0;
-
- /**
- * @brief Set the path commands and data.
- *
- * @param[in] inPathObject Pointer to NV path object
- * @param[in] inPathCommands vector of path commands ( moveTo,... )
- * @param[in] inPathCoords vector of path coords
- *
- * @return No return
- */
- virtual void SetPathSpecification(NVRenderBackendPathObject inPathObject,
- NVConstDataRef<QT3DSU8> inPathCommands,
- NVConstDataRef<QT3DSF32> inPathCoords) = 0;
-
- /**
- * @brief Get Bounds of the path object
- *
- * @param[in] inPathObject Pointer to NV path object
- *
- * @return return bounds
- */
- virtual NVBounds3 GetPathObjectBoundingBox(NVRenderBackendPathObject inPathObject) = 0;
- virtual NVBounds3 GetPathObjectFillBox(NVRenderBackendPathObject inPathObject) = 0;
- virtual NVBounds3 GetPathObjectStrokeBox(NVRenderBackendPathObject inPathObject) = 0;
-
- /**
- * @brief Set stroke width. Defaults to 0 if unset.
- *
- * @param[in] inPathObject Pointer to NV path object
- *
- * @return No return
- */
- virtual void SetStrokeWidth(NVRenderBackendPathObject inPathObject,
- QT3DSF32 inStrokeWidth) = 0;
-
- /**
- * @brief Path transform commands
- *
- * @param[in] inPathObject Pointer to NV path object
- *
- * @return No return
- */
- virtual void SetPathProjectionMatrix(const QT3DSMat44 inPathProjection) = 0;
- virtual void SetPathModelViewMatrix(const QT3DSMat44 inPathModelview) = 0;
-
- /**
- * @brief Path stencil pass operations
- *
- * @param[in] inPathObject Pointer to NV path object
- *
- * @return No return
- */
- virtual void StencilStrokePath(NVRenderBackendPathObject inPathObject) = 0;
- virtual void StencilFillPath(NVRenderBackendPathObject inPathObject) = 0;
-
- /**
- * @brief Does a instanced stencil fill pass
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] fillMode Fille mode
- * @param[in] stencilMask Stencil mask
- * @param[in] transformType Transforming glyphs
- * @param[in] transformValues Pointer to array of transforms
- *
- * @return No return
- */
- virtual void StencilFillPathInstanced(
- NVRenderBackendPathObject po, size_t numPaths, NVRenderPathFormatType::Enum type,
- const void *charCodes, NVRenderPathFillMode::Enum fillMode, QT3DSU32 stencilMask,
- NVRenderPathTransformType::Enum transformType, const QT3DSF32 *transformValues) = 0;
-
- /**
- * @brief Does a instanced stencil stroke pass
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] stencilRef Stencil reference
- * @param[in] stencilMask Stencil mask
- * @param[in] transformType Transforming glyphs
- * @param[in] transformValues Pointer to array of transforms
- *
- * @return No return
- */
- virtual void StencilStrokePathInstancedN(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathFormatType::Enum type,
- const void *charCodes, QT3DSI32 stencilRef,
- QT3DSU32 stencilMask,
- NVRenderPathTransformType::Enum transformType,
- const QT3DSF32 *transformValues) = 0;
-
- /**
- * @brief Does a instanced cover fill pass
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] coverMode Cover mode
- * @param[in] transformType Transforming glyphs
- * @param[in] transformValues Pointer to array of transforms
- *
- * @return No return
- */
- virtual void CoverFillPathInstanced(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathFormatType::Enum type,
- const void *charCodes,
- NVRenderPathCoverMode::Enum coverMode,
- NVRenderPathTransformType::Enum transformType,
- const QT3DSF32 *transformValues) = 0;
-
- /**
- * @brief Does a instanced cover stroke pass
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] coverMode Cover mode
- * @param[in] transformType Transforming glyphs
- * @param[in] transformValues Pointer to array of transforms
- *
- * @return No return
- */
- virtual void CoverStrokePathInstanced(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathFormatType::Enum type,
- const void *charCodes,
- NVRenderPathCoverMode::Enum coverMode,
- NVRenderPathTransformType::Enum transformType,
- const QT3DSF32 *transformValues) = 0;
-
- /**
- * @brief Path stencil and depth offset
- *
- * @param[in] inSlope slope
- * @param[in] inBias bias
- *
- * @return No return
- */
- virtual void SetPathStencilDepthOffset(QT3DSF32 inSlope, QT3DSF32 inBias) = 0;
-
- /**
- * @brief Path cover function
- *
- * @param[in] inDepthFunction depth function
- *
- * @return No return
- */
- virtual void SetPathCoverDepthFunc(NVRenderBoolOp::Enum inDepthFunction) = 0;
-
- /**
- * @brief Load glyphs
- *
- * @param[in] po Base of path objects
- * @param[in] fontTarget System font, or application font,...
- * @param[in] fontName Name of font ( may include path )
- * @param[in] fontStyle Bold or italic
- * @param[in] numGlyphs Glyph count
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] handleMissingGlyphs skip or use
- * @param[in] pathParameterTemplate template
- * @param[in] emScale scale ( true type scale e.g. 2048 )
- *
- * @return No return
- */
- virtual void LoadPathGlyphs(NVRenderBackendPathObject po,
- NVRenderPathFontTarget::Enum fontTarget, const void *fontName,
- NVRenderPathFontStyleFlags fontStyle, size_t numGlyphs,
- NVRenderPathFormatType::Enum type, const void *charCodes,
- NVRenderPathMissingGlyphs::Enum handleMissingGlyphs,
- NVRenderBackendPathObject pathParameterTemplate,
- QT3DSF32 emScale) = 0;
-
- /**
- * @brief Load indexed font set
- *
- * @param[in] po Base of path objects
- * @param[in] fontTarget System font, or application font,...
- * @param[in] fontName Name of font ( may include path )
- * @param[in] fontStyle Bold or italic
- * @param[in] firstGlyphIndex First glyph
- * @param[in] numGlyphs Glyph count
- * @param[in] pathParameterTemplate template
- * @param[in] emScale scale ( true type scale e.g. 2048 )
- *
- * @return return load status
- */
- virtual NVRenderPathReturnValues::Enum
- LoadPathGlyphsIndexed(NVRenderBackendPathObject po, NVRenderPathFontTarget::Enum fontTarget,
- const void *fontName, NVRenderPathFontStyleFlags fontStyle,
- QT3DSU32 firstGlyphIndex, size_t numGlyphs,
- NVRenderBackendPathObject pathParameterTemplate, QT3DSF32 emScale) = 0;
-
- /**
- * @brief Load indexed font set
- *
- * @param[in] fontTarget System font, or application font,...
- * @param[in] fontName Name of font ( may include path )
- * @param[in] fontStyle Bold or italic
- * @param[in] pathParameterTemplate template
- * @param[in] emScale scale ( true type scale e.g. 2048 )
- * @param[out] po contains glyph count
- *
- * @return returnr base path object
- */
- virtual NVRenderBackendPathObject
- LoadPathGlyphsIndexedRange(NVRenderPathFontTarget::Enum fontTarget, const void *fontName,
- NVRenderPathFontStyleFlags fontStyle,
- NVRenderBackendPathObject pathParameterTemplate, QT3DSF32 emScale,
- QT3DSU32 *count) = 0;
-
- /**
- * @brief Load font set
- *
- * @param[in] po Base of path objects
- * @param[in] fontTarget System font, or application font,...
- * @param[in] fontName Name of font ( may include path )
- * @param[in] fontStyle Bold or italic
- * @param[in] firstGlyph First glyph
- * @param[in] numGlyphs Glyph count
- * @param[in] handleMissingGlyphs skip or use
- * @param[in] pathParameterTemplate template
- * @param[in] emScale scale ( true type scale e.g. 2048 )
- *
- * @return No return
- */
- virtual void LoadPathGlyphRange(NVRenderBackendPathObject po,
- NVRenderPathFontTarget::Enum fontTarget,
- const void *fontName, NVRenderPathFontStyleFlags fontStyle,
- QT3DSU32 firstGlyph, size_t numGlyphs,
- NVRenderPathMissingGlyphs::Enum handleMissingGlyphs,
- NVRenderBackendPathObject pathParameterTemplate,
- QT3DSF32 emScale) = 0;
-
- /**
- * @brief Query font metrics
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] metricQueryMask Qeury bit mask
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] stride scale ( true type scale e.g. 2048 )
- * @param[out] metrics Filled with font metric values
- *
- * @return No return
- */
- virtual void GetPathMetrics(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathGlyphFontMetricFlags metricQueryMask,
- NVRenderPathFormatType::Enum type, const void *charCodes,
- size_t stride, QT3DSF32 *metrics) = 0;
-
- /**
- * @brief Query font metrics
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] metricQueryMask Qeury bit mask
- * @param[in] stride scale ( true type scale e.g. 2048 )
- * @param[out] metrics Filled with font metric values
- *
- * @return No return
- */
- virtual void GetPathMetricsRange(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathGlyphFontMetricFlags metricQueryMask,
- size_t stride, QT3DSF32 *metrics) = 0;
-
- /**
- * @brief Query path spacing
- *
- * @param[in] po Base of path objects
- * @param[in] numPaths Number path objects
- * @param[in] pathListMode How to compute spacing
- * @param[in] type type ( byte, int,... )
- * @param[in] charCodes charachter string
- * @param[in] advanceScale
- * @param[in] kerningScale
- * @param[in] transformType
- * @param[out] metrics Filled with font metric values
- *
- * @return No return
- */
- virtual void GetPathSpacing(NVRenderBackendPathObject po, size_t numPaths,
- NVRenderPathListMode::Enum pathListMode,
- NVRenderPathFormatType::Enum type, const void *charCodes,
- QT3DSF32 advanceScale, QT3DSF32 kerningScale,
- NVRenderPathTransformType::Enum transformType,
- QT3DSF32 *spacing) = 0;
-
- virtual QSurfaceFormat format() const = 0;
-
- protected:
- /// struct for what the backend supports
- typedef struct NVRenderBackendSupport
- {
- union {
- struct
- {
- bool bDXTImagesSupported : 1; ///< compressed images supported
- bool bAnistropySupported : 1; ///< anistropic filtering supported
- bool bTextureSwizzleSupported : 1; ///< texture swizzle supported
- bool bDepthStencilSupported : 1; ///< depth stencil textures are supported
- bool bFPRenderTargetsSupported : 1; ///< floating point render targets are
- ///supported
- bool bConstantBufferSupported : 1; ///< Constant (uniform) buffers are supported
- bool bMsTextureSupported : 1; ///< Multisample textures are esupported
- bool bFastBlitsSupported : 1; ///< The hardware supports fast memor blits
- bool bTessellationSupported : 1; ///< Hardware supports tessellation
- bool bComputeSupported : 1; ///< Hardware supports compute shader
- bool bGeometrySupported : 1; ///< Hardware supports geometry shader
- bool bTimerQuerySupported : 1; ///< Hardware supports timer queries
- bool bProgramInterfaceSupported : 1; ///< API supports program interface queries
- bool bStorageBufferSupported : 1; ///< Shader storage buffers are supported
- bool bAtomicCounterBufferSupported : 1; ///< Atomic counter buffers are
- /// supported
- bool bShaderImageLoadStoreSupported : 1; ///< Shader image load / store
- ///operations are supported
- bool bProgramPipelineSupported : 1; ///< Driver supports separate programs
- bool bNVPathRenderingSupported : 1; ///< Driver NV path rendering
- bool bNVAdvancedBlendSupported : 1; ///< Advanced blend modes supported
- bool bNVBlendCoherenceSupported : 1; ///< Advanced blend done coherently
- ///supported
- bool bGPUShader5ExtensionSupported : 1;
- bool bKHRAdvancedBlendSupported : 1; ///< Advanced blend modes supported
- bool bKHRBlendCoherenceSupported : 1; ///< Advanced blend done coherently
- bool bVertexArrayObjectSupported : 1;
- bool bStandardDerivativesSupported : 1;
- bool bTextureLodSupported : 1;
- } bits;
-
- QT3DSU32 u32Values;
- } caps;
- } NVRenderBackendSupportBits;
-
- NVRenderBackendSupportBits m_backendSupport; ///< holds the backend support bits
- };
-}
-}
-
-#endif