Logo

¡Bienvenido a Stratos!

Acceder

Foros



Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - vincent

#61
Programación gráfica / Exportador Con Maxscript
27 de Marzo de 2005, 06:00:38 PM
 Muy buenas,

estoy haciendo un exportador en maxscript (3DMax 7). Hasta ahora exporto las coordenadas de los vértices y las coordenadas de textura, pero no sé como exportar las coordenadas que resultan de hacer un render to texture para sacar unos lightmaps. Alguien me podria decir que función utilizar?

Gracias!

VinCenT
#62
General Programadores / Modo Debug I Administrador De Tareas
11 de Marzo de 2005, 01:46:41 PM
 Muy buenas,

estoy comprobando temas de memoria de una forma un tanto cutre, pero que no veo pq no me tendria que funcionar.

Estoy poniendo un breakpoint en mi programa, lo ejecuto en modo debug y le echo un ojo a la memoria que ocupa el proceso en el administrador de tareas. Pues bien, cada vez que lo ejecuto me da un valor diferente, no muy diferente pero lo justo para no fiarme mucho.

El tema es que estoy mirando si libero correctamente toda la memoria de un objeto y me da valores un poco diferentes antes de la creación y después de la destrucción, con lo que no sé si es culpa mia o culpa del administrador de tareas.

Conoceis algún programa/método que realice buenas medidas de la memoria ocupada?

Merci!

VinCenT
#63
General / Videos Del Unrealengine3
10 de Marzo de 2005, 04:43:56 PM
 Videos
#64
Programación gráfica / Shadow Maps
07 de Marzo de 2005, 06:42:35 PM
 Muy buenas,

estoy intentando implementar unos shadow maps. Por ahora solo quiero grabar una textura con el shadow map para saber si lo hace bien.

Me estoy basando en un tutorial que linkeo pogacha en otro post (está en directx 8 ) y en el ejemplo que hay en la ayuda de directx. Por desgracia este ejemplo utiliza ps_2_0, cosa que yo no puedo hacer, pero para renderizar el shadow map no los utiliza, así que me tendria que bastar.

Os pasteo los pasos principales que hago, que creo que són correctos


// Inicialización


//Check for depth texture support
hr=d3d->CheckDeviceFormat( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
       D3DUSAGE_RENDERTARGET, D3DRTYPE_TEXTURE, D3DFMT_X8R8G8B8);
if(FAILED(hr))
{
 MessageBox(NULL, "Depth texture unsupported", NULL, NULL);
 return false;
}
//Create depth texture
hr=d3dDevice->CreateTexture(m_iShadowMapSize, m_iShadowMapSize, 1, D3DUSAGE_RENDERTARGET,
       D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &m_pShadowMapDepthTexture, NULL);
if(FAILED(hr))
{
 MessageBox(NULL, "Unable to create depth texture", NULL, NULL);
 return false;
}

 
//Get the top level of the shadow map depth texture
hr = d3dDevice->CreateDepthStencilSurface( m_iShadowMapSize, m_iShadowMapSize, D3DFMT_D24S8, D3DMULTISAMPLE_NONE, 0, TRUE, &m_pShadowMapDepthSurface, NULL);



// Dibujado



LPDIRECT3DSURFACE9 pOldRT = NULL;
   g_pd3dDevice->GetRenderTarget( 0, &pOldRT );
   LPDIRECT3DSURFACE9 pShadowSurf;
   if( SUCCEEDED( g_ShadowMapLight.getMapDepthTexture()->GetSurfaceLevel( 0, &pShadowSurf ) ) )
   {
       g_pd3dDevice->SetRenderTarget( 0, pShadowSurf );
       pShadowSurf->Release();
   }
   LPDIRECT3DSURFACE9 pOldDS = NULL;
   if( SUCCEEDED( g_pd3dDevice->GetDepthStencilSurface( &pOldDS ) ) )
       g_pd3dDevice->SetDepthStencilSurface( g_ShadowMapLight.getMapDepthSurface());

   {
 g_pd3dDevice->BeginScene();
  renderScene();
 g_pd3dDevice->EndScene();

   }

   if( pOldDS )
   {
       g_pd3dDevice->SetDepthStencilSurface( pOldDS );
       pOldDS->Release();
   }
   g_pd3dDevice->SetRenderTarget( 0, pOldRT );
pOldRT->Release();




// Guardado de textura a fichero


D3DXSaveTextureToFile( "./DepthMap.jpg", D3DXIFF_JPG, g_ShadowMapLight.getMapDepthTexture(), NULL);


El resultado de todo esto, es un churro de textura. Alguien me podria decir que hago mal.

Muchas gracias.

VinCenT
   
#65
Programación gráfica / Cubemaps En Hlsl
01 de Marzo de 2005, 11:19:41 AM
 Muy buenas,

sigo yo investigando el tema de los shaders con hlsl. Estoy siguiendo un maravilloso tutorial publicado en gamasutra ("Implementing lighting models with HLSL", del amigo Wolfgang Engel.

Resulta que en el código de la iluminación especular, utiliza la función normalize en el pixel shader. Dada la versión de pixel shader que ejecuta mi máquina (una geforce 4 Ti) no puedo utilizar dicha función, pues la versión és inferior a la 2.0.

He leido por allí que para solventar esto hay que utilizar cubemaps (de echo, comentan que es más rápido aunque da algunos fallos). El problema es que no sé como utilizar los cubemaps en la aplicación (el código del shader si). Que textura es exactamente un cubemap? Como le indico a DirectX que quiero utilizar ese cubemap? Como otra textura normal y corriente? O es un set de funciones diferente?

Gracias!

VinCenT
#66
Programación gráfica / Problema Con Vertex Shader
22 de Febrero de 2005, 12:31:33 PM
 Hola muy buenas,

estoy haciendo pruebas con vertex shaders y tengo un expediente X.

Intento utilizar este chorra shader:

matrix ViewProjMatrix;
matrix ViewMatrix;
vector AmbientMtrl;
vector DiffuseMtrl;
vector LightDirection;

vector DiffuseLightIntensity = {0.0f, 0.0f, 1.0f, 1.0f};
vector AmbientLightIntensity = {0.0f, 0.0f, 0.2f, 1.0f};
vector ColorDiffuse = {0.0f, 1.0f, 1.0f, 1.0f};

struct VS_INPUT
{
vector position : POSITION;
vector normal : NORMAL;
};

struct VS_OUTPUT
{
vector position : POSITION;
vector diffuse : COLOR;
};

VS_OUTPUT Main(VS_INPUT input)
{
VS_OUTPUT output = (VS_OUTPUT)0;

output.position = mul(input.position, ViewProjMatrix);
output.diffuse = ColorDiffuse;

return output;
}


Me lo compila bien. No da ningún error. Creo el vertex shader, hago el setDefaults de la contant table y intento coger los handlers a las variables globales (en el codigo no las uso para simplificar):

ViewProjMatrixHandle = DiffuseConstTable->GetConstantByName(0, "ViewProjMatrix");
ViewMatrixHandle = DiffuseConstTable->GetConstantByName(0, "ViewMatrix");
AmbientMtrlHandle = DiffuseConstTable->GetConstantByName(0, "AmbientMtrl");
DiffuseMtrlHandle = DiffuseConstTable->GetConstantByName(0, "DiffuseMtrl");
LightDirHandle = DiffuseConstTable->GetConstantByName(0, "LightDirection");


El problema que tengo es que sólo me coge el manipulador de la primera y no de las otras. Alguien sabe pq puede ser esto?

Muchas gracias!!

VinCenT
#67
General Programadores / Problemas Con Directinput
17 de Febrero de 2005, 05:59:44 PM
 Muy buenas,

estoy intentando controlar el mouse de mi motor con DirectInput. Para hacerlo utilizo este código (que es el que pone en todos los tutoriales...)


if(FAILED(m_pDirectInputObject->CreateDevice(GUID_SysMouse,&m_pDirectInputMouseDevice,NULL)))
{
MessageBox(NULL,"CreateDevice() failed!","InitMouse()",MB_OK);
return false;
}

if(FAILED(m_pDirectInputMouseDevice->SetDataFormat(&c_dfDIMouse)))
{
MessageBox(NULL,"SetDataFormat() failed!","InitMouse()",MB_OK);
return false;
}

if(FAILED(m_pDirectInputMouseDevice->SetCooperativeLevel(m_Hwnd,DISCL_FOREGROUND | DISCL_EXCLUSIVE)))
{
MessageBox(NULL,"SetCooperativeLevel() failed!","InitMouse()",MB_OK);
return false;
}


if(FAILED(m_pDirectInputMouseDevice->Acquire()))
{
MessageBox(NULL,"Acquire() failed!","InitMouse()",MB_OK);
return false;
}


Todo va bien hasta la llamada a la función Acquire() que me da error.

Alguien ve qué está mal?

Gracias!

VinCenT
#68
General Programadores / Problemas De Memoria
15 de Diciembre de 2004, 07:29:52 PM
 Muy buenas a todos,

estoy intentando tunear un poco mi motor, arreglando cosillas antes de poner nada nuevo, no vaya a ser que después sea algo imposible...

Resulta que tanto en debug como en release, si le doy a F5, el programa se me ejecuta sin problemas. Perfecto. Si le doy a Ctrl + F5 tanto en debug como en release el programa me peta.

He intentado utilizar un programilla llamado Memory Validator ( yo solo he podido conseguir la versión de prueva, si alguien tiene la completa ya dirá algo...  ;) ) y me pone en unos quantos sitios ( entre ellos archivos de directx ) que tengo memoria sin inicializar, aunque no sé de que memoria está hablando pq yo lo inicializo todo...  :(

alguien sabe que me puede estar pasando? Conoceis algun otro programa como el Memory Validator que vaya bien y se pueda conseguir?

Merci!

VinCenT
#69
Programación gráfica / Mipmaps En Directx
14 de Diciembre de 2004, 03:15:41 PM
 Buenas,

estoy intentando que directx me autogenere los mipmaps de una textura él solito. He comprobado que lo puede hacer con el siguiente trozo de código g_pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          D3DFMT_X8R8G8B8,
                                          D3DUSAGE_AUTOGENMIPMAP,
                                          D3DRTYPE_TEXTURE,
                                          D3DFMT_A8R8G8B8 ) );


y me ha dicho que le parece tope de bien que quiera que los genere él.

El problema viene a la hora de crear la textura que me da error. Utilizo lo siguiente:

hr = D3DXCreateTextureFromFileEx(g_pd3dDevice, // Device
             file_name,        // nom de la textura
             D3DX_DEFAULT,       // width
             D3DX_DEFAULT,       // height
             D3DX_DEFAULT,       // mip levels -> create a complete chain
              D3DUSAGE_AUTOGENMIPMAP,     // usage
             D3DFMT_FROM_FILE,      // format
             D3DPOOL_DEFAULT,      // pool
             D3DX_DEFAULT,       // filter
             D3DX_DEFAULT,       // mip filter
             0,          // color key
             NULL,         // src info
             NULL,         // palette
             &tex ));



y me da error.

El debugger de Directx me dice:

Direct3D9: (ERROR) :Cannot update from a multi-level non-autogenerated mipmap to an autogenerated one.

Alguien me podria decir cómo lo tengo que hacer?

Gracias!
#70
Programación gráfica / Creación De Espejos
10 de Diciembre de 2004, 02:53:00 PM
 Hola muy buenas,

estoy intentando implementar espejos en mi motor basado en portal rendering. En principio la idea es sencilla: proyecto el punto de vista respecto el plano del espejo i renderizo desde allí.

Esto da un error obvio que es que la escena en el espejo no queda recortada como deberia

Yo creo que esto se arregla poniendo el near plane de la camara reflejada conicidiendo con el plano del espejo. Me equivoco?

Si no me equivoco, alguien sabe como hacerlo en DirectX? He visto una función llamada SetClipPlane pero no sé exactamente que plano es el near ni como especificarlo.

Gracias!
#71
General Programadores / No minimizar una ventana MFC
01 de Enero de 1970, 01:00:00 AM
                                Buenas!

Estoy haciendo una aplicación con MFCs (en las que soy un principiante) y necesito que una ventana no se pueda minimizar. Como lo puedo hacer?

Gracias!                                





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.
Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.