如何解决D3D11 DrawInstanced传输整个实例缓冲区
大家下午好
我尝试绘制实例化的地形。实例缓冲区是动态的,可用于通过视锥平头剔除部分地图。
“可见”部分将被写入动态实例缓冲区。 效果很好,但是...当我使用Visual Studio图形调试工具进行检查时,我看到实例的最大值已经写入(不是我在DrawInstanced中使用的实例计数)。
有人知道如何解决该问题吗?
这是开奖代码:
void Terrain_Mesh::RenderInstanced(Microsoft::WRL::ComPtr<ID3D11DeviceContext> d3dContext,uint16 instance_count)
{
uint32 strides[2] = { sizeof(Terrain_Vertex),sizeof(Instance_Vertex) };
uint32 offsets[2] = { 0,0 };
ID3D11Buffer* bufferPointers[2] = { m_vertex_buffer.Get(),m_instance_buffer.Get() };
d3dContext->IASetVertexBuffers(0,2,bufferPointers,strides,offsets);
d3dContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST);
d3dContext->DrawInstanced(QUAD,instance_count,0);
}
这是在第一次绘制时编写的Instance Buffer的代码段: (应该已经写入了5940个实例,但是正如您所看到的那样,它最多可以写入10000个实例。)
感谢您的帮助, 查理·布朗
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。