d3d11 del aprendizaje de IASetVertexBuffers y IASetIndexBuffer

D3d11 Iasetvertexbuffers Learning

Antes, nunca entendí por qué IASetVertexBuffers puede configurar múltiples búfer de vértices, e IASetIndexBuffer solo puede configurar un búfer de índice, ¿cómo podemos corresponder para obtenerlo?

Estos dos días para hacer algo, desde un archivo 3ds leer varios objetos renderizados, creo que este vértice se puede almacenar para cada objeto en la matriz en un búfer, luego el búfer se configura en matriz de vértices con la caché IASetVertexBuffers, cada ranura establecida un búfer de vértice. Después de configurar los resultados, el búfer de índice no sabía cómo configurarlo, porque IASetIndexBuffer solo puede configurar una matriz de índice correspondiente.

Así comenzó un largo viaje para buscar información. Originalmente, entiendo que IASetVertexBuffers en Buffers desde el principio es incorrecto, esto no significa datos de vértice de Buffers para cada objeto, sino para cada componente de una estructura de vértice como una entrada de búfer en cada ranura, y todos los búferes juntos solo representan un dato de vértice completo de un objeto. P.ej:



Estructura del vértice del objeto:



|_+_|

Creando InputLayout para la estructura del vértice:

|_+_|

Donde el cuarto parámetro representa la ranura de entrada, mostrando la posición de la ranura y dos entradas de color.

A continuación, cree una matriz siguiente de búfer: ID3D11Buffer * buf [2] cada componente de color y la posición del objeto en la matriz de búfer, y proporcionó los pasos [2] y los desplazamientos [2], y finalmente la llamada a dos funciones de búfer con la representación IASetVertexBuffers to: md3dDevicContext-> IASetVertexBuffers (0,2, buf, strides, offsets) donde el primer parámetro representa una ranura de inicio y el segundo parámetro indica el número de vértices de la matriz. Sin requerir ningún cambio en el búfer de índice.