fbpx
Wikipedia

Direct3D

Direct3D es parte de DirectX (conjunto de bibliotecas para multimedia), propiedad de Microsoft. Consiste en una API para la programación de gráficos 3D. Está disponible tanto en los sistemas Windows de 32 y 64 bits, como para sus consolas Xbox Xbox 360 Y Xbox One.

El objetivo de esta API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas, polígonos y texturas, en cualquier aplicación que despliegue gráficos en 3D, así como efectuar de forma transparente transformaciones geométricas sobre dichas entidades. Direct3D provee también una interfaz transparente con el hardware de aceleración gráfica.

Se usa principalmente en aplicaciones donde el rendimiento es fundamental, como los videojuegos, aprovechando el hardware de aceleración gráfica disponible en la tarjeta gráfica.

El principal competidor de Direct3D es OpenGL, desarrollado por Silicon Graphics Inc.

Arquitectura

 
Capa de Abstracción.

Direct3D es uno de los múltiples componentes que contiene la API DirectX de Windows. Se le podría situar al nivel del GDI de Windows, presentando un nivel de abstracción entre una aplicación de gráficos 3D y los drivers de la tarjeta gráfica (véase gráfico adjunto). Con arquitectura basada en el COM de Microsoft, la mayor ventaja que presenta Direct3D frente al GDI es que Direct3D se comunica directamente con los drivers de pantalla, consiguiendo mejores resultados en la representación de los gráficos por pantalla que aquel.

Direct3D está compuesto por dos grandes API. El modo retenido y el modo inmediato. El modo inmediato da soporte a todas las primitivas de procesamiento 3D que permiten las tarjetas gráficas (luces, materiales, transformaciones, control de profundidad, etc). El modo retenido, construido sobre el anterior, presenta una abstracción de nivel superior ofreciendo funcionalidades preconstruidas de gráficos como jerarquías o animaciones. El modo retenido ofrece muy poca libertad a los desarrolladores, siendo el modo inmediato el que más se usa.

El modo inmediato de Direct3D trabaja fundamentalmente con los llamados dispositivos (devices). Son los encargados de realizar la renderización de la escena. El dispositivo ofrece una interfaz que permite diferentes opciones de renderización. Por ejemplo un dispositivo mono permite la renderización en blanco y negro mientras que un dispositivo RGB permite el uso de colores. Podemos clasificar los dispositivos en tres clases principales:

  • Dispositivo HAL (hardware abstract layer): permite aceleración hardware. Se trata del dispositivo más rápido.
 
Dispositivo.
  • Dispositivo de referencia: es necesaria la instalación previa del SDK de Direct3D para poder usar este tipo de dispositivo. Permite la simulación software de un tipo de renderización y resulta muy útil cuando el hardware todavía no tiene incorporadas nuevas características de renderización. Un caso muy concreto del dispositivo de referencia es el Null reference device cuya función es presentar la pantalla en negro. Se usa por defecto cuando se intenta usar un dispositivo de referencia y no se encuentra el SDK.
  • Dispositivos de conexión software (pluggable software device): permite opciones de rasterización software. Previamente se ha tenido que obtener el dispositivo mediante el método RegisterSoftwareDevice. Este tipo de dispositivos no fueron usados hasta DirectX 9.0.[1]

Cada dispositivo tiene asociada una o más cadenas de intercambio (swap chains). Dichas cadenas están compuestas por varios buffers de superficies, considerando a una superficie como un conjunto de píxeles más todos los atributos asociados a cada uno de ellos como la profundidad, el color, la transparencia (canal alfa), etc.

Además, los dispositivos tienen asociados también una colección de recursos (resources) o datos concretos necesarios para realizar la renderización. Cada uno de estos recursos tiene los siguientes atributos:

  • Tipo (type): define el tipo de recurso del que se trata: superficie, volumen, textura, textura de cubo, textura de volumen, textura de superficie, buffer de vértices o buffer de índices.
  • Almacén (pool):[2]​ describe dónde se almacena el recurso durante la ejecución. Default indica que se almacena junto con el dispositivo; managed que se guarda en la memoria del sistema y se copia en el dispositivo cuando éste lo necesita; system memory que se encuentra exclusivamente en la memoria del sistema, al igual que scratch, ignorando este último las restricciones de la tarjeta gráfica.
  • Formato (format): describe el formato en que se almacena el recurso en memoria. La información más importante es respecto al almacenamiento de los píxeles en memoria. Un ejemplo de valor de format es D3DFMT_R8G8B8 que indica que una profundidad de color de 24 bits (los 8 de más peso para el rojo, los 8 de en medio para el verde y los 8 de menos peso para el azul).
  • Uso (usage): mediante una lista de flags, indica cómo se va a usar el recurso. También permite distinguir los recursos estáticos, aquellos que una vez cargados solo interesa su valor, de los recursos dinámicos, cuyo valor se modifica repetidamente.

Pipeline

 
Proceso en la pipeline de gráficos.

En la figura adjunta se presenta una versión simplificada[3]​ de la pipeline de Direct3D.

Las diferentes etapas del proceso de renderización son:[4]

  1. Input Assembler: aporta los datos de entrada (líneas, puntos y triángulos).
  2. Vertex Shader: se encarga de las operaciones de vértices (iluminación, texturas, transformaciones). Trata los vértices individualmente.
  3. Geometry Shader: realiza operaciones con entidades primitivas (líneas, triángulos o vértices). A partir de una primitiva, el geometry shader puede descartarla, o devolver una o más primitivas nuevas.
  4. Stream Output: almacena la salida de la etapa anterior en memoria. Resulta útil para realimentar la pipeline con datos ya calculados.
  5. Rasterizer: convierte la imagen 3D en píxeles.
  6. Pixel Shader: operaciones con los píxeles.
  7. Output Merger: se encarga de combinar la salida del pixel shader con otros tipos de datos, como los patrones de profundidad, para construir el resultado final.


Direct3D permite la reconfiguración de todas las etapas, aumentando considerablemente la flexibilidad de esta pipeline.

Ejemplo

Ejemplo de cómo dibujar un triángulo en Direct3D:

/* Definición de un polígono de 3 vértices */ D3DLVERTEX v[3]; /* Establecer un vértice */ v[0]=D3DLVERTEX( D3DVECTOR(0.f, 5.f, 10.f), 0x00FF0000, 0, 0, 0 ); /* Establecer un vértice */ v[1]=D3DLVERTEX( D3DVECTOR(0.f, 5.f, 10.f), 0x0000FF00, 0, 0, 0 ); /* Establecer un vértice */ v[2]=D3DLVERTEX( D3DVECTOR(0.f, 5.f, 10.f), 0x000000FF, 0, 0, 0 ); /* Llamada a función para dibujar el triángulo */ pDevice->DrawPrimitive( D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, v, 3, 0 ); 

Modos de presentación

Direct3D permite dos modos de presentación en pantalla:

  • Pantalla completa o exclusive mode: gracias a que Direct3D tiene conexión directa con el driver de la pantalla, el dispositivo Direct3D hace uso exclusivo de la pantalla. Ninguna otra aplicación podrá hacer uso de la pantalla mientras se encuentre en este modo.
  • En ventana o windowed mode: el resultado se muestra dentro de una ventana de Windows. Direct3D tiene que colaborar con el GDI para finalizar dicha representación. Aunque este modo resulta más lento que el anterior, al no bloquear la pantalla y permitir el uso de otras aplicaciones, resulta muy cómodo en la depuración de errores.

Historia

En 1992, Servan Keondjian fundó RenderMorphics, una compañía que desarrollaba una API de gráficos 3D llamada Reality Lab. Esta API se usaba en programas de CAD y representación de imágenes médicas. En febrero de 1995, Microsoft compró RenderMorphics, incorporando a Keondjian a la compañía para implementar un motor gráfico para Windows 95. El resultado fue la primera versión de Direct3D, incluida en DirectX 2.0 y DirectX 3.0.

Inicialmente, Direct3D se implementó sobre dos API: la API retained mode y la API inmediate mode. El modo retenido era una API de escenarios gráficos basada en el COM (Computer Object Model) de Microsoft, que tuvo escasa acogida. Los desarrolladores de juegos solicitaron un control más directo sobre las actividades del hardware del permitido en el Retained Mode. Solamente el juego Lego Island se basó en dicha API, por lo que Microsoft abandonó la evolución de dicho modo después de DirectX 3.0, quedando intacto desde entonces.

La primera versión del modo inmediato de Direct3D consistía en un modelo de programación basado en un buffer de ejecución. Microsoft confiaba en que dicho buffer fuera soportado directamente por los vendedores de hardware pretendiendo que se almacenaran en memoria y fueran parseados por hardware, con el objetivo de realizar renderización 3D. Dichos buffers resultaron ser muy difíciles de programar, frenando la adopción de la nueva API y generando una corriente de opinión que solicitaba la adopción de OpenGL como la oficial para renderización 3D en Microsoft. Microsoft decidió seguir mejorando Direct3D, no solo para ser competitivos con OpenGL, sino también para competir de forma más efectiva contra otras API privativas como Glide de 3dfx. Se encargó a un equipo de Redmond hacerse cargo del desarrollo del modo inmediato de Direct3D, mientras el equipo de RenderMorphics continuaba el trabajo sobre el modo retenido, abandonado no mucho después como ya se ha dicho.

A continuación se muestra una relación de las diferentes versiones de Direct3D con las mejoras más importantes que aportaron:

  • Direct3D 5.0 introdujo el conjunto de primitivas DrawPrimitive que eliminaba la necesidad de construir buffers de ejecución por parte de las aplicaciones.
  • Direct3D 6.0 introdujo numerosas características para la abstracción del hardware (como multitexturas[5]​ y buffers de patrones), optimizó el uso de las pipelines de geometría para x87, SSE y 3DNow!, y la gestión opcional de texturas para simplificar la programación.
  • Direct3D 7.0 introdujo el formato de texturas .dds[6]​ y soporte para la aceleración hardware de transformaciones y luces. También añadió la posibilidad de almacenar buffers de vértices en memoria hardware. Los buffers hardware de vértices supusieron la primera mejora sustancial con respecto a OpenGL en la historia de DirectX. También se aumentó el soporte para multitexturas. Aunque Direct3D 7.0 era muy potente, era tan complicado de programar que necesitaba un nuevo modelo de programación para mostrar las capacidades de shading que proporcionaba el hardware.
  • Direct3D 8.0 introdujo programabilidad en forma de vertex y pixel shaders, permitiendo a los desarrolladores escribir código sin preocuparse del hardware. Programar shaders sencillos equivalían a tareas sencillas, y shaders más complejos se usaban para tareas más complejas. El driver de pantalla compilaba estos shaders en instrucciones comprensibles por el hardware. Direct3D 8.0 también eliminó la API DirectDraw,[7]​ absorbiéndola. Se resolvieron muchos problemas de usabilidad. Además, se incluyeron características muy potentes como niebla (fog), bump mapping y texture mapping.
  • Direct3D 9.0 añadió una nueva versión del High Level Shader Language (HLSL, lenguaje de programación de shaders),[8]​ soporte para HDR, renderización de múltiples objetos e indexación del buffer de vértices.
  • Direct3D 10 consigue un aumento considerable en el rendimiento eliminando el llamado object overhead, que consiste en realizar llamadas entre la API y el driver usando la CPU. Dichas llamadas empezaban a producir un cuello de botella debido al incremento en la complejidad de las escenas y se han incluido medidas como los stateblocks de los shaders para poder referenciar grupos de variables del shader a través de un único ID en vez de enviar una a una entre otras cosas. Direct3D 10 incorpora además soporte del shader model 4, lo que significa que se puede hacer uso de los shaders de geometría (geometry shaders). Asimismo incorpora una nueva función de Stream Out; esta nueva función permite guardar en un buffer información de salida de los geometry shaders permitiendo operaciones de varias pasadas en el shader de geometría, lo que podría traducirse de cara al usuario en simulaciones física completas en la GPU ya es posible realimentar el shader pipeline desde el vertex shader. Se ha incluido virtualización de la memoria gráfica y el programador tiene un mayor control sobre en que clase de memoria quiere alojar sus recursos. A través de los geometry shaders es posible generar geometría en la propia GPU por ejemplo para convertir una sucesión de puntos en polígonos orientados a cámara para un efecto de partículas, anteriormente se realizaba en el procesador y ahora también calcula la GPU. Otro punto importante es la supresión del fixed pipeline de DirectX 10, lo cual supone un serio problema para los programadores novatos, y un aumento considerable de la complejidad de la API, poniendo como ejemplo la necesidad de crear un objeto especializado llamado input layout por cada combinación de vertex format y vertex shader que vayamos a usar (cosa que en Direct3D 9.0 era automática), lo cual supone un pequeño aumento de rendimiento a costa de requerirse un uso más dificultoso de la API. El principal problema de DirectX 10 es que sólo funciona con el sistema operativo Windows Vista, mientras que DirectX 9.0 trabaja con toda la familia de Windows a partir de Windows 98, debido a esto se rumorea que microsoft planea o bien soportarlo en XP o bien sacar una versión especial de DirectX 9 que implemente algunas características. El SDK de DirectX 10 está disponible desde febrero de 2007.[9]

Véase también

Referencias

  1. . Archivado desde el original el 18 de abril de 2008. 
  2. . Archivado desde el original el 9 de mayo de 2008. 
  3. «Pipeline gráfica de Direct3D 9.0». 
  4. «Etapas de la pipeline de Direct3D 10». 
  5. «Direct3D 6.0 introduce las multitexturas». 
  6. «Direct3D 7.0 crea el formato Microsoft DirectDraw Surface (.dds)». 
  7. . Archivado desde el original el 4 de junio de 2007. 
  8. . Archivado desde el original el 27 de agosto de 2010. 
  9. «SDK de DirectX 10 disponible desde febrero de 2007». 

Enlaces externos

  •   Datos: Q939208

direct3d, parte, directx, conjunto, bibliotecas, para, multimedia, propiedad, microsoft, consiste, para, programación, gráficos, está, disponible, tanto, sistemas, windows, bits, como, para, consolas, xbox, xbox, xbox, objetivo, esta, facilitar, manejo, trazad. Direct3D es parte de DirectX conjunto de bibliotecas para multimedia propiedad de Microsoft Consiste en una API para la programacion de graficos 3D Esta disponible tanto en los sistemas Windows de 32 y 64 bits como para sus consolas Xbox Xbox 360 Y Xbox One El objetivo de esta API es facilitar el manejo y trazado de entidades graficas elementales como lineas poligonos y texturas en cualquier aplicacion que despliegue graficos en 3D asi como efectuar de forma transparente transformaciones geometricas sobre dichas entidades Direct3D provee tambien una interfaz transparente con el hardware de aceleracion grafica Se usa principalmente en aplicaciones donde el rendimiento es fundamental como los videojuegos aprovechando el hardware de aceleracion grafica disponible en la tarjeta grafica El principal competidor de Direct3D es OpenGL desarrollado por Silicon Graphics Inc Indice 1 Arquitectura 2 Pipeline 3 Ejemplo 4 Modos de presentacion 5 Historia 6 Vease tambien 7 Referencias 8 Enlaces externosArquitectura Editar Capa de Abstraccion Direct3D es uno de los multiples componentes que contiene la API DirectX de Windows Se le podria situar al nivel del GDI de Windows presentando un nivel de abstraccion entre una aplicacion de graficos 3D y los drivers de la tarjeta grafica vease grafico adjunto Con arquitectura basada en el COM de Microsoft la mayor ventaja que presenta Direct3D frente al GDI es que Direct3D se comunica directamente con los drivers de pantalla consiguiendo mejores resultados en la representacion de los graficos por pantalla que aquel Direct3D esta compuesto por dos grandes API El modo retenido y el modo inmediato El modo inmediato da soporte a todas las primitivas de procesamiento 3D que permiten las tarjetas graficas luces materiales transformaciones control de profundidad etc El modo retenido construido sobre el anterior presenta una abstraccion de nivel superior ofreciendo funcionalidades preconstruidas de graficos como jerarquias o animaciones El modo retenido ofrece muy poca libertad a los desarrolladores siendo el modo inmediato el que mas se usa El modo inmediato de Direct3D trabaja fundamentalmente con los llamados dispositivos devices Son los encargados de realizar la renderizacion de la escena El dispositivo ofrece una interfaz que permite diferentes opciones de renderizacion Por ejemplo un dispositivo mono permite la renderizacion en blanco y negro mientras que un dispositivo RGB permite el uso de colores Podemos clasificar los dispositivos en tres clases principales Dispositivo HAL hardware abstract layer permite aceleracion hardware Se trata del dispositivo mas rapido Dispositivo Dispositivo de referencia es necesaria la instalacion previa del SDK de Direct3D para poder usar este tipo de dispositivo Permite la simulacion software de un tipo de renderizacion y resulta muy util cuando el hardware todavia no tiene incorporadas nuevas caracteristicas de renderizacion Un caso muy concreto del dispositivo de referencia es el Null reference device cuya funcion es presentar la pantalla en negro Se usa por defecto cuando se intenta usar un dispositivo de referencia y no se encuentra el SDK Dispositivos de conexion software pluggable software device permite opciones de rasterizacion software Previamente se ha tenido que obtener el dispositivo mediante el metodo RegisterSoftwareDevice Este tipo de dispositivos no fueron usados hasta DirectX 9 0 1 Cada dispositivo tiene asociada una o mas cadenas de intercambio swap chains Dichas cadenas estan compuestas por varios buffers de superficies considerando a una superficie como un conjunto de pixeles mas todos los atributos asociados a cada uno de ellos como la profundidad el color la transparencia canal alfa etc Ademas los dispositivos tienen asociados tambien una coleccion de recursos resources o datos concretos necesarios para realizar la renderizacion Cada uno de estos recursos tiene los siguientes atributos Tipo type define el tipo de recurso del que se trata superficie volumen textura textura de cubo textura de volumen textura de superficie buffer de vertices o buffer de indices Almacen pool 2 describe donde se almacena el recurso durante la ejecucion Default indica que se almacena junto con el dispositivo managed que se guarda en la memoria del sistema y se copia en el dispositivo cuando este lo necesita system memory que se encuentra exclusivamente en la memoria del sistema al igual que scratch ignorando este ultimo las restricciones de la tarjeta grafica Formato format describe el formato en que se almacena el recurso en memoria La informacion mas importante es respecto al almacenamiento de los pixeles en memoria Un ejemplo de valor de format es D3DFMT R8G8B8 que indica que una profundidad de color de 24 bits los 8 de mas peso para el rojo los 8 de en medio para el verde y los 8 de menos peso para el azul Uso usage mediante una lista de flags indica como se va a usar el recurso Tambien permite distinguir los recursos estaticos aquellos que una vez cargados solo interesa su valor de los recursos dinamicos cuyo valor se modifica repetidamente Pipeline Editar Proceso en la pipeline de graficos En la figura adjunta se presenta una version simplificada 3 de la pipeline de Direct3D Las diferentes etapas del proceso de renderizacion son 4 Input Assembler aporta los datos de entrada lineas puntos y triangulos Vertex Shader se encarga de las operaciones de vertices iluminacion texturas transformaciones Trata los vertices individualmente Geometry Shader realiza operaciones con entidades primitivas lineas triangulos o vertices A partir de una primitiva el geometry shader puede descartarla o devolver una o mas primitivas nuevas Stream Output almacena la salida de la etapa anterior en memoria Resulta util para realimentar la pipeline con datos ya calculados Rasterizer convierte la imagen 3D en pixeles Pixel Shader operaciones con los pixeles Output Merger se encarga de combinar la salida del pixel shader con otros tipos de datos como los patrones de profundidad para construir el resultado final Direct3D permite la reconfiguracion de todas las etapas aumentando considerablemente la flexibilidad de esta pipeline Ejemplo EditarEjemplo de como dibujar un triangulo en Direct3D Definicion de un poligono de 3 vertices D3DLVERTEX v 3 Establecer un vertice v 0 D3DLVERTEX D3DVECTOR 0 f 5 f 10 f 0x00FF0000 0 0 0 Establecer un vertice v 1 D3DLVERTEX D3DVECTOR 0 f 5 f 10 f 0x0000FF00 0 0 0 Establecer un vertice v 2 D3DLVERTEX D3DVECTOR 0 f 5 f 10 f 0x000000FF 0 0 0 Llamada a funcion para dibujar el triangulo pDevice gt DrawPrimitive D3DPT TRIANGLELIST D3DFVF LVERTEX v 3 0 Modos de presentacion EditarDirect3D permite dos modos de presentacion en pantalla Pantalla completa o exclusive mode gracias a que Direct3D tiene conexion directa con el driver de la pantalla el dispositivo Direct3D hace uso exclusivo de la pantalla Ninguna otra aplicacion podra hacer uso de la pantalla mientras se encuentre en este modo En ventana o windowed mode el resultado se muestra dentro de una ventana de Windows Direct3D tiene que colaborar con el GDI para finalizar dicha representacion Aunque este modo resulta mas lento que el anterior al no bloquear la pantalla y permitir el uso de otras aplicaciones resulta muy comodo en la depuracion de errores Historia EditarEn 1992 Servan Keondjian fundo RenderMorphics una compania que desarrollaba una API de graficos 3D llamada Reality Lab Esta API se usaba en programas de CAD y representacion de imagenes medicas En febrero de 1995 Microsoft compro RenderMorphics incorporando a Keondjian a la compania para implementar un motor grafico para Windows 95 El resultado fue la primera version de Direct3D incluida en DirectX 2 0 y DirectX 3 0 Inicialmente Direct3D se implemento sobre dos API la API retained mode y la API inmediate mode El modo retenido era una API de escenarios graficos basada en el COM Computer Object Model de Microsoft que tuvo escasa acogida Los desarrolladores de juegos solicitaron un control mas directo sobre las actividades del hardware del permitido en el Retained Mode Solamente el juego Lego Island se baso en dicha API por lo que Microsoft abandono la evolucion de dicho modo despues de DirectX 3 0 quedando intacto desde entonces La primera version del modo inmediato de Direct3D consistia en un modelo de programacion basado en un buffer de ejecucion Microsoft confiaba en que dicho buffer fuera soportado directamente por los vendedores de hardware pretendiendo que se almacenaran en memoria y fueran parseados por hardware con el objetivo de realizar renderizacion 3D Dichos buffers resultaron ser muy dificiles de programar frenando la adopcion de la nueva API y generando una corriente de opinion que solicitaba la adopcion de OpenGL como la oficial para renderizacion 3D en Microsoft Microsoft decidio seguir mejorando Direct3D no solo para ser competitivos con OpenGL sino tambien para competir de forma mas efectiva contra otras API privativas como Glide de 3dfx Se encargo a un equipo de Redmond hacerse cargo del desarrollo del modo inmediato de Direct3D mientras el equipo de RenderMorphics continuaba el trabajo sobre el modo retenido abandonado no mucho despues como ya se ha dicho A continuacion se muestra una relacion de las diferentes versiones de Direct3D con las mejoras mas importantes que aportaron Direct3D 5 0 introdujo el conjunto de primitivas DrawPrimitive que eliminaba la necesidad de construir buffers de ejecucion por parte de las aplicaciones Direct3D 6 0 introdujo numerosas caracteristicas para la abstraccion del hardware como multitexturas 5 y buffers de patrones optimizo el uso de las pipelines de geometria para x87 SSE y 3DNow y la gestion opcional de texturas para simplificar la programacion Direct3D 7 0 introdujo el formato de texturas dds 6 y soporte para la aceleracion hardware de transformaciones y luces Tambien anadio la posibilidad de almacenar buffers de vertices en memoria hardware Los buffers hardware de vertices supusieron la primera mejora sustancial con respecto a OpenGL en la historia de DirectX Tambien se aumento el soporte para multitexturas Aunque Direct3D 7 0 era muy potente era tan complicado de programar que necesitaba un nuevo modelo de programacion para mostrar las capacidades de shading que proporcionaba el hardware Direct3D 8 0 introdujo programabilidad en forma de vertex y pixel shaders permitiendo a los desarrolladores escribir codigo sin preocuparse del hardware Programar shaders sencillos equivalian a tareas sencillas y shaders mas complejos se usaban para tareas mas complejas El driver de pantalla compilaba estos shaders en instrucciones comprensibles por el hardware Direct3D 8 0 tambien elimino la API DirectDraw 7 absorbiendola Se resolvieron muchos problemas de usabilidad Ademas se incluyeron caracteristicas muy potentes como niebla fog bump mapping y texture mapping Direct3D 9 0 anadio una nueva version del High Level Shader Language HLSL lenguaje de programacion de shaders 8 soporte para HDR renderizacion de multiples objetos e indexacion del buffer de vertices Direct3D 10 consigue un aumento considerable en el rendimiento eliminando el llamado object overhead que consiste en realizar llamadas entre la API y el driver usando la CPU Dichas llamadas empezaban a producir un cuello de botella debido al incremento en la complejidad de las escenas y se han incluido medidas como los stateblocks de los shaders para poder referenciar grupos de variables del shader a traves de un unico ID en vez de enviar una a una entre otras cosas Direct3D 10 incorpora ademas soporte del shader model 4 lo que significa que se puede hacer uso de los shaders de geometria geometry shaders Asimismo incorpora una nueva funcion de Stream Out esta nueva funcion permite guardar en un buffer informacion de salida de los geometry shaders permitiendo operaciones de varias pasadas en el shader de geometria lo que podria traducirse de cara al usuario en simulaciones fisica completas en la GPU ya es posible realimentar el shader pipeline desde el vertex shader Se ha incluido virtualizacion de la memoria grafica y el programador tiene un mayor control sobre en que clase de memoria quiere alojar sus recursos A traves de los geometry shaders es posible generar geometria en la propia GPU por ejemplo para convertir una sucesion de puntos en poligonos orientados a camara para un efecto de particulas anteriormente se realizaba en el procesador y ahora tambien calcula la GPU Otro punto importante es la supresion del fixed pipeline de DirectX 10 lo cual supone un serio problema para los programadores novatos y un aumento considerable de la complejidad de la API poniendo como ejemplo la necesidad de crear un objeto especializado llamado input layout por cada combinacion de vertex format y vertex shader que vayamos a usar cosa que en Direct3D 9 0 era automatica lo cual supone un pequeno aumento de rendimiento a costa de requerirse un uso mas dificultoso de la API El principal problema de DirectX 10 es que solo funciona con el sistema operativo Windows Vista mientras que DirectX 9 0 trabaja con toda la familia de Windows a partir de Windows 98 debido a esto se rumorea que microsoft planea o bien soportarlo en XP o bien sacar una version especial de DirectX 9 que implemente algunas caracteristicas El SDK de DirectX 10 esta disponible desde febrero de 2007 9 Vease tambien EditarHLSL Lenguaje de programacion de shaders DirectX Coleccion de API donde se integra Direct3D OpenGL Principal competidor de Direct3D Graficos 3D por computadora Shader Comparacion entre Direct3D y OpenGLReferencias Editar Software de Rasterizazion para el SDK de DirectX 9 0 Archivado desde el original el 18 de abril de 2008 Recursos de Direct3D Almacen de memoria Archivado desde el original el 9 de mayo de 2008 Pipeline grafica de Direct3D 9 0 Etapas de la pipeline de Direct3D 10 Direct3D 6 0 introduce las multitexturas Direct3D 7 0 crea el formato Microsoft DirectDraw Surface dds Direct3D absorbe a DirectDraw Archivado desde el original el 4 de junio de 2007 Revision de HLSL en Direct3D 9 0 Archivado desde el original el 27 de agosto de 2010 SDK de DirectX 10 disponible desde febrero de 2007 Enlaces externos EditarPagina oficial de DirectX Wiki sobre DirectX10 en ingles Datos Q939208Obtenido de https es wikipedia org w index php title Direct3D amp oldid 127057651, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos