为什么 Direct3D11 的输入汇编程序只绘制 1 个对象?
Why is Direct3D11's Input Assembler only drawing 1 object?
我一直在使用顶点着色器和像素着色器、顶点缓冲区、索引缓冲区、实例缓冲区和常量缓冲区编写 Direct3D11 代码。有一次我让一切正常,但我当时没有提交我的代码,我正在尝试其他东西。
我最近在将实例数据传输到顶点着色器时遇到了问题。
使用Visual Studio Graphics Debugger,这很棒,我已经发现即使我称之为:
D3DDeviceContext->DrawIndexedInstanced(12U, 8U, 0U, 0U, 0U);
顶点着色器中的实例数据浮点数都是 0.0f...
事情是这样的:它以前工作过,没有索引缓冲区。现在,使用索引缓冲区时,不会复制任何实例数据???
你知道是什么原因造成的吗?
我终于弄清楚了问题所在,我将在这里告诉它。感谢MooseBoys指出原因!
我的问题在这里:
unsigned int strides[] = { sizeof(Vertex), sizeof(Instance) };
unsigned int offsets[] = { 0U, 0U };
D3DDeviceContext->IASetVertexBuffers(0U, 2U, &VertexBuffer, strides, offsets);
我应该这样做:
unsigned int strides[] = { sizeof(Vertex), sizeof(Instance) };
unsigned int offsets[] = { 0U, 0U };
ID3D11Buffer* VertexBuffers[] = { VertexBuffer, InstanceBuffer };
D3DDeviceContext->IASetVertexBuffers(0U, 2U, VertexBuffers, strides, offsets);
经验教训:彻底查看代码中断的任何行的函数文档......
相关文章:
- 无法使用VAO和EBO(openGL)绘制多个对象
- 绘制一个对象,比较模具缓冲区的两个不同值
- 在 Vulkan 中绘制多个对象
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- Opencv,在图像中的对象周围绘制一个框
- 将自定义可绘制对象存储在数组中会导致绘制时出现分割错误
- 使用OpenGL绘制更多对象时,性能会降低
- 如何在调用函数时将对象绘制到 sfml 窗口上
- SFML 2.4.2 在绘制 sf::Text 对象之前获取本地边界
- 如何确定我跟踪的对象球是否越过我绘制的线
- SFML 对象在重新初始化其父类时不会绘制
- SFML在另一个对象上方绘制对象
- 尝试使用对象作为输入来绘制QT创建者
- 如何使用多个VAO和VBO在OpenGL中绘制多个对象
- 为什么我的三角形对象没有被绘制?
- 为什么我的 OpenGL 对象相对于最后一个绘制的对象绘制
- 如何使用Qt在运行时从一个对象绘制到另一个对象的线条(或箭头)
- OpenGL 不会为不在命名空间中的对象绘制多边形
- 为同一类的两个对象绘制不同的图像
- 多对象绘制(OpenGL)