Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cargar Una Imagen En Una Surface Ya Creada

Iniciado por KACHORRO, 17 de Septiembre de 2005, 08:53:10 PM

« anterior - próximo »

KACHORRO

 >> Primero yo te recomendaría empezar a hacerlo en la ultima versión de Direct3D ahora que estás a tiempo, si no, creo que puedes tener problemas al usar tu juego en una tarjeta gráfica diferente

¿puedo pasar a direct3d sin neceisdad de hacer muchos cambios? No estoy muy puesto y ya me costó bastante hacer la libreria con directdraw... y no sé, creo que directdraw desapareció en las ultimas versiones de directx y se llamaba direct graphics o algo asi... ponedme al dia por favor


>>Crea las surfaces (y por lo tanto cada archivo) de un tamaño igual de ancho que de alto y que sea potencia de 2 para que sean mas rápidas, por ejemplo 1024x1024 está bien. El mapa tendría que ser múltiplo de 1024 para facilitar su división con lo que deberías convertirlo a 8192 x 10240

Siempre se aprende algo nuevo :-) Tomo nota, esto no es problema

>>Si fuera posible sustituye el formato de color del mapa por una paleta de 8 bits de color, podrás usar un máximo de 256 colores diferentes pero cada uno de ellos podrá ser de 32 bits o los que quieras, quedará prácticamente igual ocupando una tercera parte.
También tomo nota.

>>De momento prueba a ver como va con archivos de 1024x1024 por que puedes ganar mucha velocidad.
Bueno, la velocidad no era problema, el problema eran los cortes al leer de disco.

>>De lo de ahorrar tanta memoria no creo que sea buena idea, creo que no le va a hacer mucha gracia al que se haya gastado un pastón en su P4 con 1Gb ver como el juego esta cargando cada vez que avanza un poco,
Es que voy a abusar (y a lo bestia) con los objetos 3D que hay en el juego, y no quiero que se la coma el puñetero suelo que es lo unico que no sirve nada mas que para decorar.

>>Por lo tanto, mi alternativa es:
>>Crear un número adecuado de surfaces en la memoria de sistema (10, 20, 30... 50...) dependiendo de la memoria de sistema del ordenador de está forma además quedaría disponible toda la memoria de video.
>>Cargar del disco a las surfaces las más usadas al comienzo del juego, progresivamente deberán irse cargando grupos de archivos a medida que se avanza pero solo será necesario una vez (al menos cada cierto tiempo).

Y aqui es donde tengo el problema, porque quiero cargar de disco, pero se produce un parón. Con una hebra se solucionaria el problema (he probado el juego con el winamp de fondo y así no da tirones, o sea, en segundo plano se puede acceder al disco sin que te pare lo demás).
Peroooo.... NO TENGO NI IDEA DE PROGRAMAR CON HEBRAS EN VISUAL C ¿algún tutorial o libreria que simplifique la tarea?

Muchas gracias por tanta ayuda a todos !!!

Ray

 ...Si ddraw te funciona bien y es estable en cualquier ordenador quizás no te convenga cambiarlo, pero tampoco perderías mucho (aparte de unas horas, o días) en convertirlo a Dx9 y poder ir probándo con que versión se comporta mejor,  también piensa si te conviene tener la posibilidad de añadir 3D fácilmente en un futuro.

Si, ahora es DirectxGraphics, aunque el objeto principal es IDirect3D9, y con el hay que crear IDirect3DDevice9 que lo podrás usar para sustituir a DDraw. Entonces para que te hagas una idea:

Se crea Direct3D:
lpD3D=Direct3DCreate9(D3D_SDK_VERSION);

Se crea el Device:
lpD3D->CreateDevice( 0, D3DDEVTYPE_HAL, hWnd,     D3DCREATE_SOFTWARE_VERTEXPROCESSING,  &d3dParams,  &lpDevice );

y donde antes había un:
lpDDraw->CreateSurface(&ddsd, &lpSurface, NULL );

Ahora habrá un:
lpDevice->CreateOffScreenPlain(1024, 1024, D3DFMT_X8R8G8B8,       D3DPOOL_SYSTEMMEM, &lpSurface, NULL);

Tambien deberás sustituir las funciones de copia de surfaces, obtención memoria de vídeo, capabilidades del dispositivo, etc..

¿dije capabilidades? :blink:

Mientras lo piensas ya puedes ir descargando el DirectX 9 SDK, porque ocupa un huevo, consulta los métodos de IDirect3DDevice9 y de IDirect3DSurface9 desde el directx9_c.chm que incluye, son bastante intuitivos. Y si tienes alguna duda pues ya sabes... stratos.

En lo de los hilos no te puedo ayudar, y creo que no es buena idea trabajar con ellos si no se es un experto costurero.

y sigo insistiendo en cargar por zonas bien escogidas mejor que por recuadros 2x2, no veo nada malo en usar 32 Mb de ram o más para ello.  Por muchos objetos que pongas te seguirá sobrando mucha memoria.

Un saludo y suerte con ello.  






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.