diff options
author | Liang Qi <liang.qi@qt.io> | 2016-11-23 10:49:37 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-11-23 10:49:37 +0100 |
commit | 5d4cbf4094c9b290626aab89e4bd92edd29ce49f (patch) | |
tree | eac893652c724f057fba493688b16e212fd844dd /examples/quick/scenegraph | |
parent | 13cf5f02ce788f19a73e5d5c3da76e57291761a5 (diff) | |
parent | 07cde200e55ee03bf9e2f9af89c20f91072deccc (diff) |
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
src/qml/jsruntime/qv4object_p.h
Change-Id: Iff4d3aba7710a999b8befdc493cbe959e1ce02f9
Diffstat (limited to 'examples/quick/scenegraph')
-rw-r--r-- | examples/quick/scenegraph/rendernode/d3d12renderer.cpp | 30 | ||||
-rw-r--r-- | examples/quick/scenegraph/rendernode/rendernode.pro | 16 | ||||
-rw-r--r-- | examples/quick/scenegraph/rendernode/rendernode.qrc | 2 | ||||
-rw-r--r-- | examples/quick/scenegraph/rendernode/shader_frag.cso | bin | 0 -> 908 bytes | |||
-rw-r--r-- | examples/quick/scenegraph/rendernode/shader_vert.cso | bin | 0 -> 1720 bytes | |||
-rw-r--r-- | examples/quick/scenegraph/rendernode/softwarerenderer.cpp | 2 |
6 files changed, 25 insertions, 25 deletions
diff --git a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp b/examples/quick/scenegraph/rendernode/d3d12renderer.cpp index 3b377f1cb1..9916769241 100644 --- a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp +++ b/examples/quick/scenegraph/rendernode/d3d12renderer.cpp @@ -42,12 +42,10 @@ #include <QQuickItem> #include <QQuickWindow> #include <QSGRendererInterface> +#include <QFile> #if QT_CONFIG(d3d12) -#include "vs_shader.hlslh" -#include "ps_shader.hlslh" - D3D12RenderNode::D3D12RenderNode(QQuickItem *item) : m_item(item) { @@ -78,7 +76,7 @@ void D3D12RenderNode::releaseResources() void D3D12RenderNode::init() { QSGRendererInterface *rif = m_item->window()->rendererInterface(); - m_device = static_cast<ID3D12Device *>(rif->getResource(m_item->window(), QSGRendererInterface::Device)); + m_device = static_cast<ID3D12Device *>(rif->getResource(m_item->window(), QSGRendererInterface::DeviceResource)); Q_ASSERT(m_device); D3D12_ROOT_PARAMETER rootParameter; @@ -111,12 +109,25 @@ void D3D12RenderNode::init() { "COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 8, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 } }; + QFile f(QStringLiteral(":/scenegraph/rendernode/shader_vert.cso")); + if (!f.open(QIODevice::ReadOnly)) { + qWarning("Failed to open file with vertex shader bytecode"); + return; + } + QByteArray vshader_cso = f.readAll(); + f.close(); + f.setFileName(QStringLiteral(":/scenegraph/rendernode/shader_frag.cso")); + if (!f.open(QIODevice::ReadOnly)) { + qWarning("Failed to open file with fragment shader bytecode"); + return; + } + QByteArray fshader_cso = f.readAll(); D3D12_SHADER_BYTECODE vshader; - vshader.pShaderBytecode = g_VS_Simple; - vshader.BytecodeLength = sizeof(g_VS_Simple); + vshader.pShaderBytecode = vshader_cso.constData(); + vshader.BytecodeLength = vshader_cso.size(); D3D12_SHADER_BYTECODE pshader; - pshader.pShaderBytecode = g_PS_Simple; - pshader.BytecodeLength = sizeof(g_PS_Simple); + pshader.pShaderBytecode = fshader_cso.constData(); + pshader.BytecodeLength = fshader_cso.size(); D3D12_RASTERIZER_DESC rastDesc = {}; rastDesc.FillMode = D3D12_FILL_MODE_SOLID; @@ -235,7 +246,8 @@ void D3D12RenderNode::render(const RenderState *state) init(); QSGRendererInterface *rif = m_item->window()->rendererInterface(); - ID3D12GraphicsCommandList *commandList = static_cast<ID3D12GraphicsCommandList *>(rif->getResource(m_item->window(), QSGRendererInterface::CommandList)); + ID3D12GraphicsCommandList *commandList = static_cast<ID3D12GraphicsCommandList *>( + rif->getResource(m_item->window(), QSGRendererInterface::CommandListResource)); Q_ASSERT(commandList); const int msize = 16 * sizeof(float); diff --git a/examples/quick/scenegraph/rendernode/rendernode.pro b/examples/quick/scenegraph/rendernode/rendernode.pro index 968902a5be..76e498042b 100644 --- a/examples/quick/scenegraph/rendernode/rendernode.pro +++ b/examples/quick/scenegraph/rendernode/rendernode.pro @@ -15,24 +15,10 @@ target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/rendernode INSTALLS += target OTHER_FILES += \ - main.qml \ - shader.hlsl + main.qml qtConfig(d3d12) { HEADERS += d3d12renderer.h SOURCES += d3d12renderer.cpp LIBS += -ld3d12 - - VSPS = shader.hlsl - vshader.input = VSPS - vshader.header = vs_shader.hlslh - vshader.entry = VS_Simple - vshader.type = vs_5_0 - pshader.input = VSPS - pshader.header = ps_shader.hlslh - pshader.entry = PS_Simple - pshader.type = ps_5_0 - - HLSL_SHADERS = vshader pshader - load(hlsl_bytecode_header) } diff --git a/examples/quick/scenegraph/rendernode/rendernode.qrc b/examples/quick/scenegraph/rendernode/rendernode.qrc index 3674baccd8..049adcf8a6 100644 --- a/examples/quick/scenegraph/rendernode/rendernode.qrc +++ b/examples/quick/scenegraph/rendernode/rendernode.qrc @@ -1,5 +1,7 @@ <RCC> <qresource prefix="/scenegraph/rendernode"> <file>main.qml</file> + <file>shader_vert.cso</file> + <file>shader_frag.cso</file> </qresource> </RCC> diff --git a/examples/quick/scenegraph/rendernode/shader_frag.cso b/examples/quick/scenegraph/rendernode/shader_frag.cso Binary files differnew file mode 100644 index 0000000000..686c6af3fc --- /dev/null +++ b/examples/quick/scenegraph/rendernode/shader_frag.cso diff --git a/examples/quick/scenegraph/rendernode/shader_vert.cso b/examples/quick/scenegraph/rendernode/shader_vert.cso Binary files differnew file mode 100644 index 0000000000..fa13be5160 --- /dev/null +++ b/examples/quick/scenegraph/rendernode/shader_vert.cso diff --git a/examples/quick/scenegraph/rendernode/softwarerenderer.cpp b/examples/quick/scenegraph/rendernode/softwarerenderer.cpp index 06e406874a..d303b9ef13 100644 --- a/examples/quick/scenegraph/rendernode/softwarerenderer.cpp +++ b/examples/quick/scenegraph/rendernode/softwarerenderer.cpp @@ -61,7 +61,7 @@ void SoftwareRenderNode::releaseResources() void SoftwareRenderNode::render(const RenderState *renderState) { QSGRendererInterface *rif = m_item->window()->rendererInterface(); - QPainter *p = static_cast<QPainter *>(rif->getResource(m_item->window(), QSGRendererInterface::Painter)); + QPainter *p = static_cast<QPainter *>(rif->getResource(m_item->window(), QSGRendererInterface::PainterResource)); Q_ASSERT(p); p->setTransform(matrix()->toTransform()); |