es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la mejor manera de cambiar el paso de vértice entre llamadas de dibujo en Vulkan?

Estoy tratando de crear soporte para Vulkan en mi GameEngine DX12, sin embargo, me he encontrado con un problema y no estoy seguro de cómo resolverlo.

Tengo dos tipos de mallas: una malla regular que contiene la posición de los vértices, coordenadas de textura, normales… y la otra que la extiende y también incluye datos de contacto del armazón como ids de huesos y pesos.

En DirectX 12 existe el comando de gpu ID3D12GraphicsCommandList::IASetVertexBuffers que también te permite cambiar dinámicamente la longitud del búfer de vértices antes de cada comando de dibujo de la malla. Sin embargo, en mi entendimiento de Vulkan, deberías definir explícitamente la longitud del vértice al momento de crear la tubería (pipeline), o agregar un elemento de estado dinámico apropiado VK_DYNAMIC_STATE_VERTEX_INPUT_EXT para cambiar dinámicamente toda la capa de entrada de vértices.

Por lo tanto, ¿existe alguna manera de cambiar dinámicamente solo la longitud del vértice sin cambiar toda la entrada de vértices? ¿Quizás la forma correcta es crear un estado de tubería para cada tipo de malla?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hasta donde tengo entendido, no es posible cambiar la longitud de los vértices de forma dinámica en Vulkan sin afectar la entrada de todos los vértices. El diseño del canal de procesamiento se define al crear el canal de procesamiento y no puede cambiarse posteriormente. Por lo tanto, crear un estado del canal de procesamiento para cada tipo de malla con diferentes longitudes de vértices es una solución adecuada para este problema. Alternativamente, se puede utilizar el comando vkCmdBindVertexBuffers para establecer en forma separada los enlaces de los búferes de vértices para cada llamada de dibujo, pero aún así requiere definir el formato de entrada de vértices y su longitud al crear el canal de procesamiento.

Comments are closed.