From a66a1d392eca54e0ec3fdfe0e45ac707d3896cf9 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 18 Nov 2016 15:24:19 -0800 Subject: [PATCH] hack to avoid crash --- .../src/RenderablePolyVoxEntityItem.cpp | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 81bb5e8b2b..c46a13c5d9 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -551,11 +551,18 @@ void RenderablePolyVoxEntityItem::setZTextureURL(QString zTextureURL) { } } +quint64 start { 0 }; + void RenderablePolyVoxEntityItem::render(RenderArgs* args) { PerformanceTimer perfTimer("RenderablePolyVoxEntityItem::render"); assert(getType() == EntityTypes::PolyVox); Q_ASSERT(args->_batch); + if (start == 0) { + start = usecTimestampNow(); + return; + } + bool voxelDataDirty; bool volDataDirty; withWriteLock([&] { @@ -600,29 +607,34 @@ void RenderablePolyVoxEntityItem::render(RenderArgs* args) { _pipeline = gpu::Pipeline::create(program, state); } - - if (!_vertexFormat) { - auto vf = std::make_shared(); - vf->setAttribute(gpu::Stream::POSITION, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0); - vf->setAttribute(gpu::Stream::NORMAL, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 12); - _vertexFormat = vf; - } + if (!_vertexFormat) { + auto vf = std::make_shared(); + vf->setAttribute(gpu::Stream::POSITION, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0); + vf->setAttribute(gpu::Stream::NORMAL, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 12); + _vertexFormat = vf; + } gpu::Batch& batch = *args->_batch; batch.setPipeline(_pipeline); Transform transform(voxelToWorldMatrix()); batch.setModelTransform(transform); -// batch.setInputFormat(mesh->getVertexFormat()); - batch.setInputFormat(_vertexFormat); + batch.setInputFormat(_vertexFormat); + + // ok + if (usecTimestampNow() - start < 200000) { + return; + } - // batch.setInputStream(0, mesh->getVertexStream()); batch.setInputBuffer(gpu::Stream::POSITION, mesh->getVertexBuffer()._buffer, 0, sizeof(PolyVox::PositionMaterialNormal)); - /* batch.setInputBuffer(gpu::Stream::NORMAL, mesh->getVertexBuffer()._buffer, - sizeof(float) * 3, - sizeof(PolyVox::PositionMaterialNormal));*/ + + + // crash + // if (usecTimestampNow() - start < 200000) { + // return; + // } batch.setIndexBuffer(gpu::UINT32, mesh->getIndexBuffer()._buffer, 0);