 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Vie 02 Jul, 2004 6:19 pm Asunto: DirectX - Empezando con el |
|
|
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.
¿Podeis ayudarme?. Gracias a todos y un saludo. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 02 Jul, 2004 8:29 pm Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Mie 07 Jul, 2004 5:43 pm Asunto: |
|
|
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).
Y estas las tengo instaladas, y me da dicho error. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 08 Jul, 2004 1:05 am Asunto: |
|
|
Las Bajo y te digo..
Saludos. _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 08 Jul, 2004 1:11 am Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
dcelso_ Invitado
|
Publicado: Jue 08 Jul, 2004 7:09 pm Asunto: respuesta |
|
|
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 |
|
 |
gsllamas Cdt

Registrado: 26 Jun 2004Mensajes: 5Ubicación: Ensenada, B.C. Mexico
|
Publicado: Jue 08 Jul, 2004 8:42 pm Asunto: |
|
|
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 |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Jue 08 Jul, 2004 11:45 pm Asunto: |
|
|
Hola a todos.
Dcelso: precisamente por tu pregunta:
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 ).
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 |
|
 |
dcelso_ Invitado
|
Publicado: Vie 09 Jul, 2004 4:42 am Asunto: el codigo verde |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|