Búferes de vértices (Direct3D 9)
Los búferes de vértices, representados por la interfaz IDirect3DVertexBuffer9 , son búferes de memoria que contienen datos de vértices. Los búferes de vértices pueden contener cualquier tipo de vértice ( transformado o sin transformar, iluminado o sinlit) que se puede representar mediante el uso de los métodos de representación en la interfaz IDirect3DDevice9 . Puede procesar los vértices en un búfer de vértices para realizar operaciones como la transformación, la iluminación o la generación de marcas de recorte. La transformación siempre se realiza.
La flexibilidad de los búferes de vértices hace que sean puntos de ensayo ideales para reutilizar la geometría transformada. Puede crear un único búfer de vértices, transformar, luz y recortar los vértices en ella y representar el modelo en la escena tantas veces como sea necesario sin volver a transformarlo, incluso con cambios de estado de representación intercalados. Esto resulta útil al representar modelos que usan varias texturas: la geometría se transforma solo una vez y, a continuación, las partes de ella se pueden representar según sea necesario, intercaladas con los cambios de textura necesarios. Los cambios de estado de representación realizados después de procesar los vértices surten efecto la próxima vez que se procesen los vértices.
Descripción
Un búfer de vértices se describe en términos de sus funcionalidades: si solo puede existir en la memoria del sistema, si solo se usa para las operaciones de escritura, y el tipo y el número de vértices que puede contener. Todos estos rasgos se mantienen en una estructura D3DVERTEXBUFFER_DESC .
El miembro Format se establece en D3DFMT_VERTEXDATA para indicar que se trata de un búfer de vértices. El tipo identifica el tipo de recurso del búfer de vértices. El miembro de estructura Usage contiene marcas de funcionalidad generales. La marca D3DUSAGE_SOFTWAREPROCESSING indica que el búfer de vértices se va a usar con el procesamiento de vértices de software. La presencia de la marca de D3DUSAGE_WRITEONLY en Uso indica que la memoria del búfer de vértices solo se usa para las operaciones de escritura. Esto libera al controlador para colocar los datos de vértice en la mejor ubicación de memoria para permitir el procesamiento y la representación rápidos. Si no se usa la marca D3DUSAGE_WRITEONLY, es menos probable que el controlador coloque los datos en una ubicación ineficaz para las operaciones de lectura. Esto sacrifica cierta velocidad de procesamiento y representación. Si no se especifica esta marca, se supone que las aplicaciones realizan operaciones de lectura y escritura en los datos del búfer de vértices.
Pool especifica la clase de memoria que se asigna para el búfer de vértices. La marca D3DPOOL_SYSTEMMEM indica que el sistema creó el búfer de vértices en la memoria del sistema.
El miembro Size almacena el tamaño, en bytes, de los datos del búfer de vértices. El miembro FVF contiene una combinación de D3DFVF que identifica el tipo de vértices que contiene el búfer.
Grupo de memoria y uso
Puede crear búferes de vértices con el método IDirect3DDevice9::CreateVertexBuffer , que toma el grupo (clase de memoria) y los parámetros de uso. IDirect3DDevice9::CreateVertexBuffer también se puede crear con un código FVF especificado para su uso en el procesamiento de vértices de función fija o como salida de vértices de proceso. Para más información, consulte Búferes de vértices de FVF (Direct3D 9).
La marca de D3DUSAGE_SOFTWAREPROCESSING se puede establecer cuando el procesamiento de vértices de software o modo mixto (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING) está habilitado para ese dispositivo. D3DUSAGE_SOFTWAREPROCESSING debe establecerse para que los búferes se usen con el procesamiento de vértices de software en modo mixto, pero no debe establecerse para obtener el mejor rendimiento posible al usar el procesamiento de vértices de hardware en modo mixto. (D3DCREATE_HARDWARE_VERTEXPROCESSING). Sin embargo, establecer D3DUSAGE_SOFTWAREPROCESSING es la única opción cuando se va a usar un solo búfer con el procesamiento de vértices de hardware y software. D3DUSAGE_SOFTWAREPROCESSING se permite para dispositivos mixtos, así como para dispositivos de software.
Es posible forzar los búferes de vértices e índices en la memoria del sistema especificando D3DPOOL_SYSTEMMEM, incluso cuando el procesamiento de vértices se realiza en hardware. Esta es una manera de evitar grandes cantidades de memoria bloqueada por páginas cuando un controlador coloca estos búferes en memoria AGP.
En esta sección se presentan los conceptos necesarios para comprender y usar búferes de vértices en una aplicación direct3D. La información se divide en las secciones siguientes.
- Crear un búfer de vértices (Direct3D 9)
- Obtener acceso al contenido de un búfer de vértices (Direct3D 9)
- Representación desde un búfer de vértices (Direct3D 9)
- Búferes de vértices de FVF (Direct3D 9)
- Procesamiento de vértices de función fija (Direct3D 9)
- Procesamiento de vértices programables (Direct3D 9)
- Tipos de dispositivo y requisitos de procesamiento de vértices (Direct3D 9)
Temas relacionados