Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

DirectX - Empezando con el

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: DirectX - Empezando con el Responder citando

Hola a todos.

Estoy empezando con las DirectX. Y tengo problemas:

He empezado instalando el sdk:
(www.microsoft.com ). “DirectX 9.0 SDK Update - (Summer 2003)” el fichero es “dx90updatesdk.exe” y ocupa 186.516 kb.

Luego las librerias para el C++Builder:
http://clootie.narod.ru/delphi/DX90/CBuilder_DX90_libs.zip

Y por ultimo las DLL's:
http://clootie.narod.ru/delphi/DX90/Clootie_DX90_dlls.zip

Ahora empiezo por un ejemplo que he encontrado en (www.codigoverde.com). Como es el primero, este programa no hace nada, vamos crea la ventana pero no hace nada mas.

En el fichero de cabecera:
Código:

#pragma once

#pragma comment(lib,"dxguid.lib")
#pragma comment(lib,"d3d9.lib")

#include <windows.h>
#include <D3D9.h>

LPDIRECT3D9 g_pD3D;
LPDIRECT3DDEVICE9 g_pd3dDevice;

LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
void IniciarD3D(HWND hWnd);
void CerrarD3D();


Y en el cpp:
Código:

//---------------------------------------------------------------------------
#include <windows.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   WNDCLASSEX wc;
   ZeroMemory(&wc, sizeof(WNDCLASSEX));
   wc.cbSize = sizeof( WNDCLASSEX );
   wc.lpfnWndProc = MsgProc;
   wc.lpszClassName = "D3DWindow";

   RegisterClassEx( &wc );

   HWND hWnd = CreateWindow(   "D3DWindow",
                        "Space Invaders",
                        WS_OVERLAPPEDWINDOW,
                        40, 40, 650, 500,
                        GetDesktopWindow(),
                        NULL, hInstance, NULL );

   IniciarD3D( hWnd );

   ShowWindow( hWnd , SW_SHOWDEFAULT );

   MSG  msg;
   msg.message = WM_NULL;

   while( WM_QUIT != msg.message )
   {
      if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
      {
         DispatchMessage( &msg );
      }
      else
      {
         // aquí va el código de nuestro juego
      }
   }

   CerrarD3D();

    return 0;
}
//---------------------------------------------------------------------------
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
   switch( msg )
   {
      case WM_DESTROY:
         PostQuitMessage( 0 );
         return 0;
   }

   return DefWindowProc( hWnd, msg, wParam, lParam );
}
//---------------------------------------------------------------------------
void IniciarD3D( HWND hWnd )
{
   g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );

   D3DPRESENT_PARAMETERS d3dpp;
   ZeroMemory( &d3dpp, sizeof( d3dpp ) );

   d3dpp.Windowed   = TRUE;
   d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;

   g_pD3D->CreateDevice(   D3DADAPTER_DEFAULT,
                     D3DDEVTYPE_HAL,
                     hWnd,
                     D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                     &d3dpp,
                     &g_pd3dDevice );
}
//---------------------------------------------------------------------------
void CerrarD3D()
{
   g_pd3dDevice->Release();
   g_pd3dDevice = NULL;

   g_pD3D->Release();
   g_pD3D = NULL;
}
//---------------------------------------------------------------------------


Lo compilo y me da el siguiente error:

[Linker Error] 'D:\DX90SDK\LIB\D3D9.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Y este error me suena a chino, vamos no se ni lo que me dice. Shocked

¿Podeis ayudarme?. Gracias a todos y un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Lo que pasa, que las libreriras de Visual C de Microsoft, no son al 100% compatibles con el formato de programacion con Borland... deberias Utilizar el codigo fuente.. para regenerarlas, si es asi, puedes enviar el link para bajar los codigos fuentes..

saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola Cesar.

Si, las librerias que vienen con el DirectX SDK son para visual C++. Por ello se deben instalar las propias para el C++Builder. (segun creo, porque no me va).

Cita:

Luego las librerias para el C++Builder:
http://clootie.narod.ru/delphi/DX90/CBuilder_DX90_libs.zip

Y por ultimo las DLL's:
http://clootie.narod.ru/delphi/DX90/Clootie_DX90_dlls.zip


Y estas las tengo instaladas, y me da dicho error.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Las Bajo y te digo..
Saludos.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Te comento el codigo anterior, se parece mas a la programcion de Borland C 3.1 , que la de Visual c, o la de Builder, creo que hay que convertirlo, ya que lo ejecute, dentro del Borland c 3.1 y funciona perfectamemente. ahora mismo lo paso a builder y te lo envio..


saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: respuesta Responder citando

Pues no se exactamente que es lo que te pasa, lo que si puedo decirte es que yo tube un problema parecido al instalar las directx sdk en builder, pero al final lo solucioné con mucha paciencia y ya tengo un esqueleto de builder para directx. en este link puedes encontrar los pasos que seguí y un tutorial cojonudo de directx

https://cppbuilder.es/viewtopic.php?t=8038&highlight=&sid=fab1917015d5b5ff0b9d1cfcb59776ad
Volver arriba
Mensaje    Asunto: Responder citando

Hola kalux,

Aqui se encuentra una liga donde hay buenos tutoriales y codigo

http://www.morrowland.no/apron/tut_d3d.php

en algun momento me intereso y confieso que se me hizo muy complicado, ademas de que si se quiere distribuir la aplicacion hay que asegurarse de que la PC tenga DirectX y lo que implica los cambios en las versiones.

Asi que como solo tenia que hacer una pequena aplicacion opte por OpenGL
ya que para distribuir la aplicacion solo tuve que agregar unas cuantas DLL y funciona.

Y en esta liga hay un excelente material que te lleva de la mano

http://nehe.gamedev.net/

De cada leccion, ademas de explicarla hay codigo de Builder, Delphi y otros.

No es la respuesta que busca, pero es una opcion.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola a todos.

Dcelso: precisamente por tu pregunta:
Cita:

https://cppbuilder.es/viewtopic.php?t=8038&highlight=&sid=fab1917015d5b5ff0b9d1cfcb59776ad

me intereso introducirme con las DirectX. Segui tus consejos y me instale las librerias y dlls. Ademas consulte la pagina de codigo verde y es entonces cuando el seguir los ejemplos, me surge el problema.

gsllamas:
Mi interes es unicamente aprender. No tengo que realizar ninguna aplicacion. (De momento). Sobre el OpenGl, me parece que evoluciona mas rapidamente DirectX, aunque no se cual es mejor. Ademas sobre directX tambien tenemos el sonido, etc. Me parece mas completo, por ello prefiero aprender algo sobre directX.
Tengo que ver el enlace que me aconsejas, aunque a simple vista parecen muy buenos (aunque estan en ingles Crying or Very sad ).

dcelso_: si has seguido los ejemplos de la pagina de codigoverde ¿Has podido ejecutar los ejemplos? o tienes algun ejemplo que te funcione para el C++Builder, puedes ponerlo o pasarmelo?.

Cesar: ¿A ver como va?. Respecto al codigo, es de un programa en visual c. Aunque deberia funcionar (o eso creo) en el Builder.


A quien pueda ayudarme: ¿Alguien tiene algun ejemplo de prueba para el Builder?. Porque paginas con ejemplos en la red hay un monton pero todas para el visual c.

Bueno un saludo y gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: el codigo verde Responder citando

En cuanto pueda te posteo el código esqueleto de directx, ahora mismo no lo tengo a mano en este ordenador.
Una cosa que tienes que tener en cuenta es que el código verde está preparado para visual c.net asi que directamente no va en builder, otra cosa es que ahí no se usa ningún tipo de librería orientada a objetos sino directamente APIs de windows para crear ventana.
En Builder se podría tambien conseguir esto, pero perderías las ventajas de la VCL. Mi esqueleto es para hacer funcionar las diretx sobre un formulario por tanto hay que meter las funciones de iniciación y declaración del código verde en el oncreate del form1 y las de destrucción y liberación de memoria en el onclose.
Luego en el evento ilde se metería el código de renderización. Asi obtienes elmismo juego del codigo verde pero en ventana.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.