![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
#1
|
||||
|
||||
![]() Este hilo tiene como objetivo enseñar a ejecutar directx en tu aplicacion y decidi postearlo porque este tema, integrado, no lo encontre por internet, fui armando mis conocimientos por pedazos de informacion que fui recolectando a lo largo de 3 meses
Para empezar vamos a a realizar los siguientes pasos: 1) Instalar JDK DirectX, el mio es "Microsoft DirectX SDK (March 2008)" ya esta la de noviembre LINK. Por ejemplo yo lo instale en "C:\Program Files\CodeGear\Microsoft DirectX SDK (March 2008)" al lado del "RAD Studio" 2) Una vez instalado vamos a tener que tomar los .lib que tienen en la carpeta "C:\Program Files\CodeGear\Microsoft DirectX SDK (March 2008)\Lib\x86" (claro, si la arquitectura de la pc que utilizan es x86) y llevar a todos los .lib a una carpeta en la unidad c, en mi caso los deje en una carpeta "c:\translib", y ahora nos vamos a "C:\Program Files\CodeGear\RAD Studio\5.0\bin" y buscamos el ejecutable "coff2omf.exe" y lo llevamos en la carpeta donde dejamos los .lib (translib), coff to omf hace lo que el mismo nombre lo dice, y el comando para transformar a omf un .lib de Visual Studio es "coff2omf d3d9.lib d3d9.~lib" (alt+126) para el caso de d3d9.lib, luego llevamos el d3d9.~lib a la carpeta de nuestro proyecto, la renombramos a d3d9.lib. Solo nos queda Agregar el lib a nuestro proyecto, para eso vamos a usar (EN LA IDE CODEGEAR) el Proyect Manager (View->Structure, en la barra) y sobre el proyecto botonDerecho->Add, y elegimos el archivo .lib que vamos a ocupar, tal como muestra en la figura1, los .lib dependen de que archivos de cabecera se incluyen 3) Ya tenemos nuestro .lib, ahora nos falta agregar los archivos de cabecera, para eso vamos a tener que copiar todos los .h de la carpeta "C:\Program Files\CodeGear\Microsoft DirectX SDK (March 2008)\Include" y dejarlos en "C:\Program Files\CodeGear\RAD Studio\5.0\include". O simplemente agregar al path del proyecto la primer direccion y asi nos ahorramos copiar 4) Con todo lo anterior ya podemos meter en nuestro proyecto por ejemplo el "#include "d3dx9.h"", pero tenemos un problema mas, las funciones que utiliza el visual studio como el coseno y la raiz cuadrada que retornan flotante tienen otro nombre, asique unas lineas antes de meter el "#include "d3dx9.h"" vamos a tener que poner "#define cosf cos" y "#define sqrtf sqrt", este paso es casi solo demostrativo, ya que van a tener que definir funciones segun vayan apareciendo los problemas (obviamente funciones con la misma abstraccion pero con distinto identificador), pero con lo anterior ya es suficiente para el ejemplo que voy a poner --- empezamos a utilizar la SDK de DirectX ---- 5) Luego los pasos para seleccionar un dispositivo (ver antes tipos de dispositivos), inicializar directx, elegir resolucion, color, etc. están bien explicadas en la SDK de Directx, les recomiendo que lean bien y practiquen todo desde el principio. (DirectX Documentation for C++) 6) hecho lo anterior, si seguimos con el orden de la SDK vamos a llegar a la parte de mallas (un objeto grafico 3D), tambien la SDK explica que es una malla, como leerla en memoria, que puntero hace referencia a su buffer, como se toma la textura, etc. 7) Lo interesante de todo esto, cuando usamos el "DirectX Sample Browser", los ejemplos estan en visual c++, por lo tanto nos jode un poco. Vamos a tener que adaptar el codigo de ejemplo a nuestro compilador. Aca entra en juego el conocimiento del lenguaje y de la ide de cada compilador, por ejemplo: Código:
//----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device LPD3DXMESH g_pMesh = NULL; // Our mesh object in sysmem D3DMATERIAL9* g_pMeshMaterials = NULL; // Materials for our mesh LPDIRECT3DTEXTURE9* g_pMeshTextures = NULL; // Textures for our mesh DWORD g_dwNumMaterials = 0L; // Number of mesh materials las definiciones en las funciones en visual studio c++ Código:
HRESULT InitD3D( HWND hWnd ) { // Create the D3D object. if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; ... ... Código:
HRESULT TForm1::InitD3D( HWND hWnd ) // :: implementamos la funcion { // Create the D3D object. if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; ... ... Errores comunes *visual studio mete una L antes de un string, solucion, sacar esa L ejemplo: Código:
... MessageBox(NULL, L"Could not find tiger.x", L"Meshes.exe", MB_OK); ... Código:
... MessageBox(NULL, "Could not find tiger.x", "Meshes.exe", MB_OK); ... ejemplo: Código:
... } else Render(); } ... Código:
... } else Form1->Render(); } ... StringCchCopyA(,,) StringCchCatA(,,) solo nos queda ir a la ayuda de codegear y ver si tenemos un archivo de cabecera que las contenga, para este caso se debe incluir "#include "strsafe.h"", lo mismo nos va a pasar con "timegettime()" que pide "#include "Mmsystem.h"" Bueno, este post me llevo mas de una hora hacerlo espero que les sirva y tambien espero no haberme olvidado nada, hay mas cosas que se deben tener en cuenta a la hora de pasar de VSc++ a CODEGEAR C++. Si aprenden algo nuevo en directx o estuve equivocado en algo, no duden en avisarme (ka4-9@hotmail.com) ----------------SECCION DESCARGA------------------ CAPTURA EJECUTABLE DESCARGAR EJECUTABLE (la descarga del ejecutable contiene D3DX9_37.dll, la verdad yo ya la tengo instalada pero en las pc que probe lo necesitaban) DESCARGA DE CODIGO DE FUENTE Última edición por grandmasterdari fecha: 01-12-2008 a las 19:04:48. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
DirectX | fide | Gráficos | 1 | 12-12-2007 02:39:28 |
DirectX v10 for WinXP | Deiv | Windows | 5 | 02-11-2007 16:14:11 |
DirectX 10 | jhonny | Noticias | 0 | 24-04-2007 00:12:35 |
DirectX | Aztaroth | Varios | 0 | 10-06-2005 23:39:27 |
DirectX y Delphi 6 | zuriel_zrf | Gráficos | 1 | 14-02-2004 19:27:55 |
![]() |
|