Compartir a través de


Coordenadas de textura generadas automáticamente (Direct3D 9)

El sistema puede usar la posición transformada del espacio de la cámara o la normal de un vértice como coordenadas de textura, o bien puede calcular los tres vectores de elementos usados para abordar un mapa de entorno cúbico. Al igual que las coordenadas de textura que se especifican explícitamente en un vértice, puede usar coordenadas de textura generadas automáticamente como entrada para las transformaciones de coordenadas de textura.

Las coordenadas de textura generadas automáticamente pueden reducir significativamente el ancho de banda necesario para los datos de geometría eliminando la necesidad de coordenadas de textura explícitas en el formato de vértice. En muchos casos, las coordenadas de textura que genera el sistema se pueden usar con transformaciones para producir efectos especiales. Por supuesto, se trata de una característica de propósito especial y usará coordenadas de textura explícitas para muchas ocasiones.

Configuración de coordenadas de textura generadas automáticamente

En C++, el D3DTSS_TEXCOORDINDEX estado de fase de textura (del tipo enumerado D3DTEXTURESTAGESTATETYPE ) controla cómo el sistema genera coordenadas de textura.

Normalmente, este estado indica al sistema que use un conjunto determinado de coordenadas de textura codificadas en el formato de vértice. Al incluir las marcas D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION o D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR en el valor que asigna a este estado, el comportamiento del sistema es bastante diferente. Si hay alguna de estas marcas, la fase de textura omite las coordenadas de textura dentro del formato de vértice en favor de las coordenadas que genera el sistema. Los significados de cada marca se muestran en la lista siguiente.

  • D3DTSS_TCI_CAMERASPACENORMAL

    Use el vértice normal, transformado en el espacio de la cámara, como coordenadas de textura de entrada.

  • D3DTSS_TCI_CAMERASPACEPOSITION

    Use la posición del vértice, transformada en el espacio de la cámara, como coordenadas de textura de entrada.

  • D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR

    Use el vector de reflexión, transformado en el espacio de la cámara, como coordenadas de textura de entrada. El vector de reflexión se calcula a partir de la posición del vértice de entrada y el vector normal.

Las marcas de índice de coordenadas de textura son mutuamente excluyentes. En este ejemplo se usa:

  • Posición del vértice (en el espacio de la cámara) como coordenadas de textura de entrada para esta fase de textura
  • Modo de ajuste establecido en el estado de representación de D3DRENDERSTATE_WRAP1
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 
                                   D3DTSS_TCI_CAMERASPACEPOSITION | 1);

Las coordenadas de textura generadas automáticamente son más útiles como valores de entrada para una transformación de coordenadas de textura o para eliminar la necesidad de que la aplicación calcule vectores de tres elementos para mapas de entorno cúbicos.

La asignación de esferas usa un mapa de textura precalpuesto (en el momento del modelo) que contiene todo el entorno, tal como lo refleja una esfera de cromo. Direct3D tiene una característica de generación de coordenadas de textura mediante el estado de representación D3DTSS_TCI_CAMERASPACENORMAL, que toma la normal del vértice en el espacio de la cámara y la coloca a través de una transformación de textura para generar coordenadas de textura.

Procesamiento de coordenadas de textura

Transformaciones de coordenadas de textura (Direct3D 9)

Asignación de entorno cúbica (Direct3D 9)