Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: CoLSoN2 en 15 de Octubre de 2002, 09:12:19 PM

Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: CoLSoN2 en 15 de Octubre de 2002, 09:12:19 PM
                                vereis, tengo un cargador / renderizador de modelos que me tira de perlas. pero todas las pruebas, y los paraemtros de config los tengo fijos, los he hecho en mi pc, y al intentar ejecutarlo en otro ordenador, al cual solo tengo acceso 1 ora a la semana, asi ke no puedo hacer tests ahi, al ejecutar, me kedao flipao de que salian colores amarillos y fucsias parpadeantes a toda ostia, no se xq. alguien ke sepa a ke se debe?

p.d: aora mismo voi a acer una app en c++ builder pa configurarlo to antes dejecutar, no me exeis la bronca xDDD                                
Título: ....
Publicado por: Grugnorr en 15 de Octubre de 2002, 09:42:40 PM
                                Jur jur, pueden ser muuchas cosas, me da a mí ;).

Y pon al menos un archivo de configuración, un simple .txt de donde puedas parsear los settings para hacer pruebas :P.

Supongo que compruebas todos los HRESULTS de retorno de DX, el modo que seleccionas lo soporta la tarjeta?

Limpias el BackBuffer?

Tengo un poco olvidado D3d...  :( , danos más datos  ;)                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 15 de Octubre de 2002, 09:53:38 PM
                                Juas juas juas!! Creia ke yo era el único a kien le pasaba!! Me pasa exactamente lo ke describes.
En mi ordenador y en otros no pasa eso, va bien. Pero al intentar ejecutar el enigne en un ordenador de la Universidad (sospecho con unos drivers bastante maltrechos v.v) pues me pasa eso. Lo peor es ke ese ordenador tiene la misma tarjeta grafica ke yo (una GeForce2 GTS/PRO) y en mi casa no me pasa.

Yo atribuyo esto a lo mal instalados ke estan los drivers de la tarjeta o el propio directx en ese ordenador (no es el unico ke tiene mal instalados los drivers en ese laboratorio) que ademas corre sobre un windows 2000, ke por lo ke he oido no le mola muxo direct3d. Puede ke sea eso lo mismo ek te pasa a ti, puesto ke al probar lo en un ordenador de libre acceso de la universidad, seguramente no tendra bien instalados los drivers o los directx.                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 15 de Octubre de 2002, 11:33:05 PM
                                A mi tb me pasa con uno de mis programas :(

A mi me pasaba con un programa en el que yo creaba el vertex buffer y me encargaba de dibujarlo. Pero ese programa tb es capaz de cargar archivos X y dibujarlos con el interfaz ID3DXMesh, y entonces funciona correctamente... asi que (en mi caso) no parece ser tema de drivers...

Prueba a cambiar los parametros de creacion del vertex buffer, asegurate de que el vertex buffer se rellena con los datos que le indicas...

Si averiguas algo avisa ;)                                
Título: hm
Publicado por: CoLSoN2 en 16 de Octubre de 2002, 05:41:02 PM
                                no utilizo todavia vertex buffers, utilizo DrawPrimitiveUP                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 16 de Octubre de 2002, 06:08:23 PM
                                Estoy empezando a odiar los vertex buffers, index buffers y toa la ostia... sabeis si directx 9 va a continuar cone eso? o ser va a adoptar algo mas parecido a los arrays de opengl?                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 16 de Octubre de 2002, 06:25:50 PM
                                :-MMMM habia olvidado que tb me pasaba con drawprimitiveUP.... :(

no se q podra ser... :(                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: NeLo en 16 de Octubre de 2002, 06:47:30 PM
                                juas!

Vertex & Index buffers rules!!!

Lo siento, pero Direct3D 9 los seguirá teniendo.

Saludos.                                
Título: ....
Publicado por: Grugnorr en 16 de Octubre de 2002, 06:57:22 PM
                                Claro que DX9 sigue con los VB,IB y demás... son parte indispensable del TN&L.... y mucho mejor así.

No sé donde os falla, intentad hacer una traza de todas los códigos que devuelve dx , de lo que pedís y de lo que soporta la tarjeta.( Y mirad la versión de los drivers ;) ).                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 16 de Octubre de 2002, 07:17:28 PM
                                Indispensable porke? OpenGL tambien usa TnL u no usa vertex buffers. Ademas, me parece mas potente la forma en ke se especifican los arrays en opengl, un array separado para los vertices, otro para las coordenadas de textura, otro para las normales, y no todo junto en una estructura.                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: CordayUK en 17 de Octubre de 2002, 07:29:12 PM
                                lo de los corlores fucsia amarillo etcetera puede deberse a varias cosas...

lo mas frecuente es que o bien no has podido hacer un lock al vertex/index buffer o bien estas intentando pintar vertices con un FVF distinto al que el vertex buffer tiene especificado.

por ejemplo creas el VB con un FVF  VERTEX | NORMAL | TEXTURE y los estas llenando y pintando con un VERTEX | NORMAL ...
es decir, el tamano del vertice no es el mismo.

en el panel de control tienes un icono de directx, en la seccion de debug puedes ponerlo a medio/alto. cuando te aparezcan estos colores fucsia y amarillo mira en el output del visual studio porque direct3d te estara dando informacion de lo que pasa...

si en un ordenador te funciona y en otro no, esta claro que una de las tarjetas no tiene una de las caracteristicas que estas intentando usar, por ello no puede crear el Vertex Buffer perfectamente, y al pintar no encaja nada...

salu2                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 17 de Octubre de 2002, 08:53:16 PM
                                En mi caso, los 2 ordenadores donde lo he probado tienen la misma tarjeta (una GeForce2), por eso decia ke en mi caso kreo ke se debe a ke estan mal instalados los drivers de la tarjeta o los directx, porke si no deberia ir bien bajo el mismo hardware.                                
Título: hm
Publicado por: CoLSoN2 en 17 de Octubre de 2002, 09:46:50 PM
                                pero es que ni uso vertex buffers.. lo hago con DrawPrimitiveUP. Luego, lo del debug, en el pc ke me va mal no puedo hacerlo xq no tengo ninguna herramienta de desarrollo instalada. Lo de FVF, tengo 1 solo asi que ese uso en todos lados XD hm, los dos tienen aceleradora (no creo que para renderizar un modelo se necesite mas XD) y.. nose : güat japens?:(                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: CordayUK en 18 de Octubre de 2002, 01:41:18 PM
                                entonces siempre que hagas cualquier operacion con el vertex buffer (create, lock) y al hacer el drawprimituveup especialmente, utiliza el tipico...

if (FAILED(pD3DDevice->DrawPrimitiveUp () ))
//ha habido un error, muestralo!
else
//todo bien

segun el codigo de error que devuelve puedes saber que es lo que pasa, el mismo codigo de error tiene asociada una string que lo describe y es la que se muestra al hacer debug, lo puedes hacer a mano con un messagebox o algo parecido.                                
Título: hm
Publicado por: CoLSoN2 en 19 de Octubre de 2002, 12:23:46 AM
                                ya tengo el failed ese, y me da error, pero como sé el tipo de error que da?                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 19 de Octubre de 2002, 01:13:17 AM
                                CoLSoN2, que llamada te falla ? cual te devuelve failed ?                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 19 de Octubre de 2002, 03:08:15 AM
                                Colson, en vez de usar el failed asi, usalo de la siguiente manera:

HRESULT hres;

hres=FuncionDeDirectX(bla,bla);
if (FAILED(hres))
{
 // ahora segun el valor de hres podremos saber el error exactamente
 if (hres==D3DERR_NOTENOUGHMEMORY)
   MessageBox("no hay memoria suficiente");
 // etc...
}                                
Título: m
Publicado por: CoLSoN2 en 19 de Octubre de 2002, 09:53:20 AM
                                lord trancos en el DrawPrimitiveUP

ok, lo haré así                                
Título: ....
Publicado por: Grugnorr en 20 de Octubre de 2002, 03:49:06 PM
                                Ejem...

Busca esta función:


Returns a string that describes a Microsoft® DirectX® HRESULT value.


TCHAR *DXGetErrorDescription9(HRESULT hr);

(Weno, la de las DX8 que supongo que usas ;) ). Y entérate de qué coño te falla. Estaba en la librería Dxerr9.lib. ).

PD: Hay varias funciones y macros utilitarios en la librería de debug esa, echales un ojo.

Suerte...                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 20 de Octubre de 2002, 07:53:17 PM
                                Y no olvides despues decirnos como lo solucionaste ;)                                
Título: mola^^
Publicado por: CoLSoN2 en 20 de Octubre de 2002, 11:20:30 PM
                                Error al crear el device, hago DXGetErrorDescription, y me dice:
"Call successful, but returned FALSE"
a ke mola? XD                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 20 de Octubre de 2002, 11:57:58 PM
                                :o  Prefiero que una funcion me devuelva un numero que no entiendo a que me devuelva algo como eso xDDD                                
Título: ....
Publicado por: Grugnorr en 21 de Octubre de 2002, 12:55:06 PM
                                :o  :o  :o  :o

Uhmm, cuando puede ser creado con éxito y devolver FALSE?.

El error era en DrawPrimitiveUP(), no?. Compruebas que el device no está Lost?(Me encanta el Spanglish  :D ).

Las llamadas a crear el device sí son correctas, verdad?.

Lo mejor sería que pegaras el código.... alguna chorrada estará pasando  :jaja:                                
Título: hm
Publicado por: CoLSoN2 en 21 de Octubre de 2002, 07:41:29 PM
                                no , e echo algunos cambios en el codigo, y el error ese raro lo ace al intentar crear el device :P                                
Título: code
Publicado por: CoLSoN2 en 21 de Octubre de 2002, 09:00:57 PM
                                el codigo de la funcion, hasta el momento en el que el Device no se crea bien, es:


void W3C_GFX_Graphics::Init(HWND hWnd, bool fullscreen, int fwidth, int fheight, byte fcolordepth, FILTERINGTYPE filtering)

{

m_hWnd = hWnd;

Log("INITIATING GFX ENGINE...");



m_fullscreen = fullscreen;



D3DDISPLAYMODE d3ddm;

if (fullscreen == true)

{

 d3ddm.Width = fwidth;

 d3ddm.Height = fheight;

 d3ddm.RefreshRate = 0; // por defecto

 switch (fcolordepth)

 {

 case 16:

  d3ddm.Format = D3DFMT_R5G6B5;

  break;

 case 32:

  d3ddm.Format = D3DFMT_X8R8G8B8;

  break;

 }

}

else

{

 if (m_error = FAILED(m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))

 {

  Error("ERROR! No se ha podido obtener el modo de mostrado");

  CheckErrors(m_error);

 }

 else

  Log("Display's Mode got");  

}



if (m_error = FAILED(m_pD3D->CheckDeviceType(D3DADAPTER_DEFAULT,

  D3DDEVTYPE_HAL, d3ddm.Format, d3ddm.Format,

  !m_fullscreen)))

{

 Error("ERROR! Modo de color no soportado por el dispositivo");

 CheckErrors(m_error);

}

else

 Log("Device Type Checked");





D3DPRESENT_PARAMETERS d3dpp;



ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));



if (fullscreen == false)

{

 d3dpp.Windowed = true;

 Log("Running on Windowed mode");

}

else

{

 d3dpp.Windowed = false;

 d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;

 d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_ONE;



 Log("Running on Fullscreen mode");

}



d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC;

d3dpp.BackBufferFormat = d3ddm.Format; // mismo color

d3dpp.BackBufferWidth = d3ddm.Width;

d3dpp.BackBufferHeight = d3ddm.Height;

d3dpp.BackBufferCount = 1;

d3dpp.hDeviceWindow = m_hWnd;

d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

d3dpp.EnableAutoDepthStencil = true;

 



// obtenemos el device

if (m_error = FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,

 D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,

 &d3dpp, &m_pDevice)))

{

 Error("ERROR! Creación del Device fallida");

 CheckErrors(m_error);

}

else

 Log("Device Created");



Fullscreen es true, width = 800, height = 600, colordepth = 16. alguien sabe xq no se crea bien? la comprovacion del modo de color dice que no hay error..                                
Título: SOLUCIONADO
Publicado por: CoLSoN2 en 22 de Octubre de 2002, 06:59:58 PM
                                IASTA SOLUSIONAOooOoooOoa!!!

ke como ?
- no era nada de codigo, era que (como pensaba desarrollar, o al menos compilar algo algun dia, ya que eran los PCs del cole) instalé la DX SDK 8.1, y compilaba de coña, pero pasaba esto. Tonces, hoy, tras salir frustrado el dia anterior, iba yo con mi super programa en c++ builder configuralo-todo, para ir probando xq petaba, llego, (lo primero es kel programa este no tiraba xq necesitaba una DLL del builder xD) y sigue sin funcionar, en los dos PCs donde habia instalado el SDK. Le explico que otra gente (vusotru xD) tambien le pasa lo mismo, y me dice que probemos en otros PCs del aula. Le digo ke en vez del SDK, ke tarda mucho, instalar solo el DX "light", el ke viene en todos los juegos vaya. Lo instalamos, y WOP! tiraAaAA!1 ke tiraaAaa!! bwahahaaha!! ok, instalamos esto, incluso en los de la SDK, y ya funciona: me r00lz XD

p.d:me gustaria ke lo probarais y me dijerais si esto os pasaba a vosotros tambien

p.d.d:thx a todos por ayudar =)

p.d.d.d: PUTA MICROSOFT -_-!                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: DraKKaR en 22 de Octubre de 2002, 07:38:05 PM
                                Holas, me temo qu no podre probarlo porque en el ordenador donde me va mal tiene un win2000 y no tengo permisos para instalar el DirectX runtime (supongo ke es este al ke te referias)                                
Título: asi es
Publicado por: CoLSoN2 en 22 de Octubre de 2002, 07:38:55 PM
                                uno de los ke pasaba esto era un win2000, lo e instalado, y c000000l xD                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 23 de Octubre de 2002, 02:24:48 AM
                                Gracias Colson ;)                                
Título: hm
Publicado por: CoLSoN2 en 23 de Octubre de 2002, 03:39:11 PM
                                as probado si era ese tu problema?                                
Título: Parpadeos fucsias y amarillos. Si, de esos que dan epilepsia
Publicado por: Lord Trancos en 23 de Octubre de 2002, 08:16:02 PM
                                Pues nop, pq no tengo acceso a los ordenadores donde tengo entendido que mi programa fallaba; el de Haddd  (aka Dracula) y el de Frodig.