DX11 index buffer offset is in bytes.

TRAC #22332 Signed-off-by: Daniel Koch Signed-off-by: Shannon Woods Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1657 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 9f7ede67
...@@ -219,6 +219,7 @@ GLenum IndexDataManager::prepareIndexData(GLenum type, GLsizei count, gl::Buffer ...@@ -219,6 +219,7 @@ GLenum IndexDataManager::prepareIndexData(GLenum type, GLsizei count, gl::Buffer
translated->indexBuffer = indexBuffer->getIndexBuffer(); translated->indexBuffer = indexBuffer->getIndexBuffer();
translated->serial = indexBuffer->getSerial(); translated->serial = indexBuffer->getSerial();
translated->startIndex = streamOffset / indexTypeSize(destinationIndexType); translated->startIndex = streamOffset / indexTypeSize(destinationIndexType);
translated->startOffset = streamOffset;
if (buffer) if (buffer)
{ {
......
...@@ -33,6 +33,7 @@ struct TranslatedIndexData ...@@ -33,6 +33,7 @@ struct TranslatedIndexData
UINT minIndex; UINT minIndex;
UINT maxIndex; UINT maxIndex;
UINT startIndex; UINT startIndex;
UINT startOffset; // In bytes
IndexBuffer *indexBuffer; IndexBuffer *indexBuffer;
unsigned int serial; unsigned int serial;
......
...@@ -654,7 +654,7 @@ GLenum Renderer11::applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementAr ...@@ -654,7 +654,7 @@ GLenum Renderer11::applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementAr
{ {
IndexBuffer11* indexBuffer = IndexBuffer11::makeIndexBuffer11(indexInfo->indexBuffer); IndexBuffer11* indexBuffer = IndexBuffer11::makeIndexBuffer11(indexInfo->indexBuffer);
mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), indexInfo->startIndex); mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), indexInfo->startOffset);
mAppliedIBSerial = indexInfo->serial; mAppliedIBSerial = indexInfo->serial;
} }
} }
...@@ -717,7 +717,6 @@ void Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, ...@@ -717,7 +717,6 @@ void Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices,
return error(GL_OUT_OF_MEMORY); return error(GL_OUT_OF_MEMORY);
} }
UINT startIndex = static_cast<UINT>(offset) / 4;
unsigned int *data = reinterpret_cast<unsigned int*>(mappedMemory); unsigned int *data = reinterpret_cast<unsigned int*>(mappedMemory);
switch (type) switch (type)
...@@ -763,7 +762,7 @@ void Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, ...@@ -763,7 +762,7 @@ void Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices,
{ {
IndexBuffer11 *indexBuffer = IndexBuffer11::makeIndexBuffer11(mLineLoopIB->getIndexBuffer()); IndexBuffer11 *indexBuffer = IndexBuffer11::makeIndexBuffer11(mLineLoopIB->getIndexBuffer());
mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), startIndex); mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), offset);
mAppliedIBSerial = mLineLoopIB->getSerial(); mAppliedIBSerial = mLineLoopIB->getSerial();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment