SoloCodigo

Programación Específica => Programación de Videojuegos => DirectX => Mensaje iniciado por: pachesantiago en Viernes 9 de Abril de 2010, 02:23

Título: Problemas con mi engine
Publicado por: pachesantiago en Viernes 9 de Abril de 2010, 02:23
miren,soy nuevo en el foro,estoy programando algo que se podria considerar como un engine,mas bien es un wraper de dx.
El "engine" se compila en un .lib,y despues tengo un exe con el que pruebo las funciones.
Programe unas ciertas funciones que a mi entender estan bien,pero cuando las pruebo no funcionan,por ejemplo,la funcion del triangulo o la de la esfera compilan pero no mustran nada en la pantalla,la unica que funciono fue la de texto.
Y otra cosa,despues de un cierto tiempo,crashea.
Explico mejor.El consumo de memoria arranca en 20%,que es lo normal en 7,y empieza a subir.
Cuando llega a 65 % el programa crashea,alguna idea?

PD:Adjunte el codigo.
Título: Re: Problemas con mi engine
Publicado por: pachesantiago en Domingo 11 de Abril de 2010, 02:41
corregi los errores de que colapsaba,solo falta corregir el de que no aparezcan las cosas,alguna idea??
PD:el codigo de la descarga tiene errores
Título: Re: Problemas con mi engine
Publicado por: pachesantiago en Lunes 12 de Abril de 2010, 19:01
ninguna idea de nadie?? :huh:  :huh:  :huh:  :huh:
Título: Re: Problemas con mi engine
Publicado por: pachesantiago en Martes 13 de Abril de 2010, 22:57
EDIT: Disculpen,fue una estupides lo que escribi :ouch:  :ouch:  :ouch:
Título: Re: Problemas con mi engine
Publicado por: satmon en Viernes 4 de Junio de 2010, 20:16
lo que pasa es que la mayoria de la gente programa es con opengl y no muchos conocen a profundidad a directx pero yo se mas o menos algo y el hecho de que no se visualize tu escena puede deberce a que no inicializaste el valor PresentationInterval ni FullScreen_RefreshRateInHz de la estructura D3DPRESENT_PARAMETERS en la funcion
Código: C++
  1. void Device9::InitD3D( HWND hWnd,DevParam Parametros )
  2.  
 es posible que sea por esso, prueva con esto:

d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;

si eso no funciona entonces checkea bien tu codigo recuerda que directx9 es diferente a directx8 y prueva desactivando el alpha blending, ponido un color de fondo claro para ver si el defecto es la iluminacion, tanbien checkea que llenas te todas las matrices: WORLD, VIEW y PROJECTION, si el problema persiste asegurate que no cometiste algun error estupido en los algoritmos que es muy comun
Título: Re: Problemas con mi engine
Publicado por: pachesantiago en Lunes 7 de Junio de 2010, 02:06
gracias por la respuesta,esos valores no los cambie.
cuand pueda lo pruebo. El engine avanzó pila,tiene un modulo completo, el de log, y empeze el de sonido (Imersive Sound System o ISS)
Título: Re: Problemas con mi engine
Publicado por: pachesantiago en Domingo 13 de Junio de 2010, 14:23
probe eso pero no resulto, mi codigo de inicio quedo asi:
Código: C++
  1. //-----------------------------------------------------------------------------
  2. // Name: InitD3D()
  3. // Desc: Initializes Direct3D
  4. //-----------------------------------------------------------------------------
  5. void Device9::InitD3D( HWND hWnd,DevParam Parametros )
  6. {
  7.        
  8.     // Create the D3D object, which is needed to create the D3DDevice.
  9.     if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
  10.     {      
  11.         ::MessageBox(hWnd,L"Error creando el objeto 3D/Error creating 3D object",L"Error Critico/Critical Error",MB_OK | MB_ICONERROR);
  12.         return;
  13.     }
  14.     // Set up the structure used to create the D3DDevice
  15.     D3DPRESENT_PARAMETERS d3dpp;
  16.     ZeroMemory( &d3dpp, sizeof( d3dpp ) );
  17.  
  18.     d3dpp.Windowed = Parametros.Windowed;
  19.     d3dpp.SwapEffect = Parametros.SwapEfect;
  20.     d3dpp.BackBufferHeight = X3D.resX;
  21.     d3dpp.BackBufferWidth = X3D.resY;
  22.     d3dpp.BackBufferCount = 1;
  23.     d3dpp.Flags = NULL;
  24.     d3dpp.EnableAutoDepthStencil = true;
  25.     d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
  26.     d3dpp.BackBufferFormat = Parametros.BackBuferFormat;
  27.     d3dpp.MultiSampleType = Parametros.MultisampleType;
  28.     d3dpp.MultiSampleQuality = Parametros.MultiSampleQuality;
  29.     d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
  30.     d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
  31.  
  32.     // Create the Direct3D device
  33.     if (Parametros.RenderType == Error)
  34.     {
  35.         ::MessageBox(hWnd,TEXT("Imposible crear el dispocitivo/Can´t create device"),TEXT("Error Critico/Critical Error"),MB_OK | MB_ICONERROR);
  36.         ZeroMemory( &d3dpp, sizeof( d3dpp ) );
  37.         g_pD3D = NULL;
  38.         Device = NULL;
  39.         return;
  40.     }
  41.     if (Parametros.RenderType == Hardware)
  42.     {
  43.         if( FAILED( g_pD3D->CreateDevice( Parametros.Adapter,Parametros.RasterizationType, hWnd,
  44.                                       D3DCREATE_HARDWARE_VERTEXPROCESSING,
  45.                                       &d3dpp, &Device ) ) )
  46.             {
  47.                 ::MessageBox(NULL,TEXT("Error creando el Dispocitivo por Hardware/Error creating the Hardware Device"),TEXT("Error Critico/Critical Error"),MB_OK | MB_ICONERROR);
  48.             }
  49.     }
  50.     if (Parametros.RenderType == Software)
  51.     {
  52.         if( FAILED( g_pD3D->CreateDevice( Parametros.Adapter,Parametros.RasterizationType, hWnd,
  53.                                       D3DCREATE_SOFTWARE_VERTEXPROCESSING,
  54.                                       &d3dpp, &Device ) ) )
  55.             {
  56.                 ::MessageBox(NULL,TEXT("Error creando el Dispocitivo por Software/Error creating the Software Device"),TEXT("Error Critico/Critical Error"),MB_OK | MB_ICONERROR);
  57.                 return;
  58.             }
  59.     }
  60.  
  61.     if (Parametros.RenderType == Mixed)
  62.     {
  63.         if( FAILED( g_pD3D->CreateDevice( Parametros.Adapter,Parametros.RasterizationType, hWnd,
  64.                                       D3DCREATE_MIXED_VERTEXPROCESSING,
  65.                                       &d3dpp, &Device ) ) )
  66.             {
  67.                 ::MessageBox(NULL,TEXT("Error creando el Dispocitivo por Mescla/Error creating the Mixed Device"),TEXT("Error Critico/Critical Error"),MB_OK | MB_ICONERROR);
  68.                 return;
  69.             }
  70.     }
  71.  
  72.     return;
  73. }
  74.  
  75.