diff options
Diffstat (limited to 'src/Runtime/ogl-runtime/src/render/Examples/Qt3DSRenderRenderToTextureExample.cpp')
m--------- | src/Runtime/ogl-runtime | 0 | ||||
-rw-r--r-- | src/Runtime/ogl-runtime/src/render/Examples/Qt3DSRenderRenderToTextureExample.cpp | 178 |
2 files changed, 0 insertions, 178 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/Examples/Qt3DSRenderRenderToTextureExample.cpp b/src/Runtime/ogl-runtime/src/render/Examples/Qt3DSRenderRenderToTextureExample.cpp deleted file mode 100644 index e2cb4149..00000000 --- a/src/Runtime/ogl-runtime/src/render/Examples/Qt3DSRenderRenderToTextureExample.cpp +++ /dev/null @@ -1,178 +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$ -** -****************************************************************************/ -#include "Qt3DSRenderExample.h" -#include "Qt3DSRenderExampleTools.h" -#include "render/Qt3DSRenderFrameBuffer.h" -#include "render/Qt3DSRenderTexture2D.h" -#include "render/Qt3DSRenderIndexBuffer.h" -#include "render/Qt3DSRenderVertexBuffer.h" -#include "render/Qt3DSRenderFrameBuffer.h" -#include "render/Qt3DSRenderRenderBuffer.h" -#include "foundation/Qt3DSVec4.h" - -using namespace qt3ds; -using namespace qt3ds::render; - -namespace { -struct ShaderArgs -{ - float mvp[16]; - NVRenderTexture2DPtr texture; - NVRenderVertFragShaderPtr shader; - ShaderArgs() {} -}; -class RenderToTexture : public NVRenderExample -{ - NVRenderContext &m_Context; - NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer; - NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer; - // Simple shader - NVScopedRefCounted<NVRenderVertFragShader> mSimpleShader; - // Simple shader with texture lookup. - NVScopedRefCounted<NVRenderVertFragShader> mSimpleShaderTex; - - NVScopedRefCounted<NVRenderFrameBuffer> mFrameBuffer; - NVScopedRefCounted<NVRenderTexture2D> mColorBuffer; - NVScopedRefCounted<NVRenderTexture2D> mDepthBuffer; - - NVRenderHandle mGroupId; - QT3DSU32 mFBWidth; - QT3DSU32 mFBHeight; - - ShaderArgs mShaderArgs; - float frus[16]; - float model[16]; - float rot[9]; - -public: - RenderToTexture(NVRenderContext &context) - : m_Context(context) - , mFBWidth(400) - , mFBHeight(400) - { - NVRenderExampleTools::createBox(m_Context, mVertexBuffer.mPtr, mIndexBuffer.mPtr); - mVertexBuffer->addRef(); - mIndexBuffer->addRef(); - mSimpleShader = NVRenderExampleTools::createSimpleShader(m_Context); - mSimpleShaderTex = NVRenderExampleTools::createSimpleShaderTex(m_Context); - // If you don't want the depth buffer information back out of the system, then you can - // do this. - // mDepthBuffer = m_Context.CreateRenderBuffer( NVRenderRenderBufferFormats::Depth16, - // mFBWidth, mFBHeight ); - - mDepthBuffer = m_Context.CreateTexture2D(); - mDepthBuffer->SetTextureData(NVDataRef<QT3DSU8>(), 0, mFBWidth, mFBHeight, - NVRenderTextureFormats::Depth16); - mColorBuffer = m_Context.CreateTexture2D(); - mColorBuffer->SetTextureData(NVDataRef<QT3DSU8>(), 0, mFBWidth, mFBHeight, - NVRenderTextureFormats::RGBA8); - if (mDepthBuffer.mPtr && mColorBuffer.mPtr) { - // Creating objects tends to Bind them to their active state hooks. - // So to protect the rest of the system against what they are doing (if we care), we - // need - // to push the current state - // Auto-binds the framebuffer. - mFrameBuffer = m_Context.CreateFrameBuffer(); - mFrameBuffer->Attach(NVRenderFrameBufferAttachments::Color0, *mColorBuffer.mPtr); - mFrameBuffer->Attach(NVRenderFrameBufferAttachments::Depth, *mDepthBuffer.mPtr); - QT3DS_ASSERT(mFrameBuffer->IsComplete()); - - m_Context.SetRenderTarget(NULL); - } - mColorBuffer->SetMinFilter(NVRenderTextureMinifyingOp::Linear); - mColorBuffer->SetMagFilter(NVRenderTextureMagnifyingOp::Linear); - m_Context.SetVertexBuffer(mVertexBuffer); - m_Context.SetIndexBuffer(mIndexBuffer); - m_Context.SetDepthTestEnabled(true); - m_Context.SetDepthWriteEnabled(true); - m_Context.SetClearColor(QT3DSVec4(.3f)); - // Setup various matrici - NvGl2DemoMatrixIdentity(model); - NvGl2DemoMatrixIdentity(frus); - NvGl2DemoMatrixFrustum(frus, -1, 1, -1, 1, 1, 10); - NvGl2DemoMatrixTranslate(model, 0, 0, -4); - mShaderArgs.texture = mColorBuffer.mPtr; - } - void setupMVP(QT3DSVec3 translation) - { - float *mvp(mShaderArgs.mvp); - memCopy(mvp, frus, 16 * sizeof(float)); - NvGl2DemoMatrixMultiply(mvp, model); - NvGl2DemoMatrixTranslate(mvp, translation.x, translation.y, translation.z); - NvGl2DemoMatrixMultiply_4x4_3x3(mvp, rot); - } - void DrawIndexedArrays(QT3DSVec3 translation) - { - setupMVP(translation); - m_Context.SetActiveShader(mShaderArgs.shader); - mShaderArgs.shader->Bind(); - mShaderArgs.shader->SetPropertyValue("mat_mvp", - *reinterpret_cast<QT3DSMat44 *>(mShaderArgs.mvp)); - mShaderArgs.shader->SetPropertyValue("image0", mShaderArgs.texture); - m_Context.Draw(NVRenderDrawMode::Triangles, mIndexBuffer->GetNumIndices(), 0); - } - - virtual void drawFrame(double currentSeconds) - { - NvGl2DemoMatrixRotate_create3x3(rot, (float)currentSeconds * 50, .707f, .707f, 0); - NVRenderClearFlags clearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth); - // render to frame buffer - { - NVRenderContextScopedProperty<NVRenderFrameBufferPtr> __framebuffer( - m_Context, &NVRenderContext::GetRenderTarget, &NVRenderContext::SetRenderTarget, - mFrameBuffer); - NVRenderContextScopedProperty<NVRenderRect> __viewport( - m_Context, &NVRenderContext::GetViewport, &NVRenderContext::SetViewport, - NVRenderRect(0, 0, mFBWidth, mFBHeight)); - NVRenderContextScopedProperty<QT3DSVec4> __clearColor( - m_Context, &NVRenderContext::GetClearColor, &NVRenderContext::SetClearColor, - QT3DSVec4(.6f)); - m_Context.Clear(clearFlags); - mShaderArgs.shader = mSimpleShader; - DrawIndexedArrays(QT3DSVec3(0.f)); - } - m_Context.Clear(clearFlags); - mShaderArgs.texture = mColorBuffer; - mShaderArgs.shader = mSimpleShaderTex; - - DrawIndexedArrays(QT3DSVec3(-2.f, 0.f, 0.f)); - - mShaderArgs.texture = mDepthBuffer; - DrawIndexedArrays(QT3DSVec3(2.f, 0.f, 0.f)); - } - virtual QT3DSU32 getRuntimeInSeconds() - { - return mSimpleShader.mPtr && mSimpleShaderTex.mPtr ? 5 : 0; - } - virtual void release() { NVDelete(m_Context.GetFoundation(), this); } -}; -} - -QT3DS_RENDER_REGISTER_EXAMPLE(RenderToTexture);
\ No newline at end of file |