Skip to content

Commit

Permalink
- fix model rendering glitch
Browse files Browse the repository at this point in the history
  • Loading branch information
dpjudas committed Apr 9, 2019
1 parent d413581 commit 85b754b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/rendering/vulkan/renderer/vk_renderstate.cpp
Expand Up @@ -476,12 +476,16 @@ void VkRenderState::ApplyMatrices()

void VkRenderState::ApplyVertexBuffers()
{
if (mVertexBuffer != mLastVertexBuffer && mVertexBuffer)
if ((mVertexBuffer != mLastVertexBuffer || mVertexOffsets[0] != mLastVertexOffsets[0] || mVertexOffsets[1] != mLastVertexOffsets[1]) && mVertexBuffer)
{
VkBuffer vertexBuffers[] = { static_cast<VKVertexBuffer*>(mVertexBuffer)->mBuffer->buffer };
VkDeviceSize offsets[] = { 0 };
mCommandBuffer->bindVertexBuffers(0, 1, vertexBuffers, offsets);
auto vkbuf = static_cast<VKVertexBuffer*>(mVertexBuffer);
const auto &format = GetVulkanFrameBuffer()->GetRenderPassManager()->VertexFormats[vkbuf->VertexFormat];
VkBuffer vertexBuffers[2] = { vkbuf->mBuffer->buffer, vkbuf->mBuffer->buffer };
VkDeviceSize offsets[] = { mVertexOffsets[0] * format.Stride, mVertexOffsets[1] * format.Stride };
mCommandBuffer->bindVertexBuffers(0, 2, vertexBuffers, offsets);
mLastVertexBuffer = mVertexBuffer;
mLastVertexOffsets[0] = mVertexOffsets[0];
mLastVertexOffsets[1] = mVertexOffsets[1];
}

if (mIndexBuffer != mLastIndexBuffer && mIndexBuffer)
Expand Down
1 change: 1 addition & 0 deletions src/rendering/vulkan/renderer/vk_renderstate.h
Expand Up @@ -105,6 +105,7 @@ class VkRenderState : public FRenderState

VSMatrix mIdentityMatrix;

int mLastVertexOffsets[2] = { 0, 0 };
IVertexBuffer *mLastVertexBuffer = nullptr;
IIndexBuffer *mLastIndexBuffer = nullptr;

Expand Down

0 comments on commit 85b754b

Please sign in to comment.