Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





HAL. Aceleracion por Hardware

Iniciado por bnl, 29 de Octubre de 2002, 11:36:49 PM

« anterior - próximo »

bnl

                                Hola
Estoy haciendo una aplicacion bastante sencillita con DirectX 8.1.  (Direct Graphics) Habia conseguido gracias a los consejos de miembros del foro mas de 100 fps y las cosas me estaban quedando bastante bien (para estar empezando  :) ) El problema es que cuando lo llevo a un ordenador mas antiguo el programa da un error. Creo q es debido a que no tiene aceleradora grafica. Lo he solucionado cambiando esta linea

 Set D3DDevice = D3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DWindow)



por esta otra



Set D3DDevice = D3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hWnd,                                       D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DWindow)



El problema es que ahora los fps q consigo en ese ordenador antiguo es de 1fps  :llorando:  
En ese ordenador consegui mas de 100 fps usando DirectX 7.0.
¿que podria hacer para aumentar los fps?
¿Es imposible mostrar graficos en un ordenador sin aceleradora grafica a una velocidad decente?
[/quote]                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Haddd

                                Si no tiene aceleradora no puedes utilizar el HAL. Eso no lo puedes impedir.                                

bnl

                                Si, no lo utilizo. Pero es q entonces los fps pasan de 170 a 3 (en mi ordenador q si tiene aceleradora) y 1 en el otro q no la tiene. Y son fps ridiculos ¿no puedo hacer nada?
 Mi aplicacion es muy sencillita y casi no deberia consumir recursos.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Lord Trancos

                                No, no puedes hacer nada :(

A partir de DirectX 8 ya no existe rasterizacion "rapida" por software, solo esta el "Reference Rasterizer" que es eso que usas ahora. Ese "rasterizer" como su nombre indica es de referencia (no esta hecho pensando en velocidad sino en todo lo contrario; ""calidad visual"", es decir, no han usado trucos para acelerar el rendering, solo han usado las formulas matematicas tal cual,..), solo muestra lo que deberia de aparecer en una tarjeta 3D compatible con DirectX. Digamos que esta solo para hacer pruebas, como por ejemplo probar cosas q tu hardware no soporta.

En DirectGraphics si no hay tarjeta 3D, no hay juego. Si no te vale, tendras que volver a DirectDraw :(                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

bnl

                                Buaaaaaaaaaaa
Pues menuda faena. Ya tenia muchas cosillas hechas.

A mi modo de ver los de Microsoft la han cagado. No es logico que para ejecutar una aplicacion sencillita en 2d necesites tarjeta 3d.

Tendre que volver a DirectDraw  :( ya que quiero que el juego pueda ejecutarse casi en cualquier ordenador y no obligar a tener un ordenador a la ultima.

No hay alternativa?
Y usando sprites?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Lord Trancos

                                Aunque creas que estas trabajando en 2D, realmente estas trabajando en 3D. Y como ya te dije NO, no hay salida :(

Me temo q tendras q usar DirectDraw....                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

bnl

                                Si, sabia q estaba trabajando con 3d (aunq para hacer graficos 2d)
Pos' na volvere a Direct Draw.

Muchas gracias a contestar al post.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Loover

                                Pocas personas que les guste jugar al ordenador no tienen tarjeta aceleradora... vamos, yo no conozco a nadie.
Puedes pillar una medio decente (una voodoo 3) por 5000 pelas o menos de segunda mano.
No dejes Direct 3d!
:D                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

bnl

                                Yo si tengo una buena tarjeta y el motorcillo q estoy haciendo me va genial, el problema es en el ordenador de un colega q esta colaborando conmigo haciendo los graficos y el argumento q no tiene tarjeta 3D. Y me gustaria que el fuera viendo los progresos q se van produciendo. Vive lejos asi q no existe la posibilidad de q los viera en mi casa.

¿q ventajas tiene trabajar con direct 3D para hacer graficos en 2D?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Lord Trancos

                                Basicamente efectos de transparencia, tinte, rotaciones.... por hardware (osea rapidos y faciles).

En DirectDraw aparte del colorkey y el "zoom"... poco mas te va ha hacer el solito...                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

_Grey

                                Por casualidad no se tratara de una voodoo o una de esas tarjetas que no tienen 2D y hay que usarlas conjuntamente??.... por que se arreglaria cambiando el primer parametro.                                

bnl

                                No se que tarjeta es, pero es bastante vieja.

¿a q te refieres con cambiando el primer parametro?

¿Se pueden combinar direct Draw con Direct Graphics? Si es asi podria dibujar la mayoria de las partes con direct Draw y usar Direct Graphics solo par aquellas partes en las q el Direct Draw no sirva.  Quiza luego sea un poco follon ¿no?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Lord Trancos

                                Creo q _Grey se referia a cambiar D3DADAPTER_DEFAULT.

Algunas tarjetas 3D viejas eran solo tarjetas 3D (no tenian soporte 2D), por lo tanto era necesario tener ademas de esa tarjeta una tarjeta 2D. Si ese fuera el caso (2 tarjetas; una 3D y otra 2D), D3DADAPTER_DEFAULT haria referencia a la tarjeta 2D. Por esto _Grey comentaba que si tu amigo tiene una tarjeta SOLO 3D, tendrias que cambiar ese parametro para que funcionara.

En cuanto a lo de mezclar DirectGraphics y DirectDraw.... Q YO SEPA no se puede.                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

_Grey

                                Pues eso, lo que dice Lord Trancos.

con GetAdapterCount() podras mirar cuantos "adaptadores"(targetas) tienes en el sistema,con GetAdapterIdentifier() la informacion del adaptador, GetAdapterModeCount() la cantidad de modos graficos de esa targeta,EnumAdapterModes() te enumerara los modos graficos, existen otras pero para empezar ya tienes que mirar...

como me imagino que esto es un toston podrias cambiar el "D3DADAPTER_DEFAULT" por un "1", si tu colega tiene esa comfiguracion de 2 targetas, lo mas probable es que la primera(0) sea la 2D y la segunda(1) la 3D..... y igual funciona directamente, pero si el problema es este, te tendras que currar una ventanita de SETUP para controlar la configuracion.

chao.                                

bnl

                                Muchas gracias a ambos  :D . Probare lo q decis.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






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.