Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Preguntas De Novato Sobre Ddraw

Iniciado por Pogacha, 19 de Enero de 2005, 04:23:32 PM

« anterior - próximo »

Pogacha

 Bueno, estoy actualmente cambiando el motor 2d a render por software, pero no soy muy conocedor de DDraw.

Primera pregunta:
*  ¿Seria muy desventajoso no usar los ddraw surfaces para los sprites y usar mi propia estructura de imagenes?   (A la hora de dibujar pido el buffer con Lock() y lo bliteo con mis funciones y luego lo UnLockeo)

Segunda pregunta:
*  ¿Hay que darle importancia a los formato devuelto por getpixelformat() (no se si esta bien escrito), o para cada colordepth hay una sola conbinacion? (me interesan solo 16, 24 y 32 bits).

Saludos

Sacrifai

 Yo en DDraw no he echo nunca nada. Sin embargo he usado SDL y los bpp eran muy importantes. Para cada uno usaba distintos metodos, similares, pero distintos.

Pogacha

 Si las funciones cambian, pero me interesa el orden de los canales de colores, como por ejemplo
16 bits = rrrrrggggggbbbbb
24 bits = rrrrrrrrggggggggbbbbbbbbb
32 bits = rrrrrrrrggggggggbbbbbbbbbaaaaaaaa

Pues he visto distintas configuraciones pero quizas se hallan unificado y solo existan estas ahora?

Sacrifai

 Es el orden que visto siempre, no se donde habras visto otros ordenes. Y estoy casi seguro de que DX usa ese orden. Por cierto, el tema de blitear con tus propias funciones, no entiendo el porqué. En teoría las que trae DDraw deben estar muy optimizadas ¿no?

Pogacha

 El tema es que tendria que adaptar todas las funciones de carga de ficheros a ddraw-surface, aparte puedo hacer efectos y cosas así, y no confio en dx.
Saludos

sés

 Yo no supondría ningún orden para los bits de color... como mucho para los modos de 32bpp, de 16bpp no me fiaría (24bpp directamente lo ignoro :P).

En mi librería BGL hay funciones para eso, por si te sirven. Son prácticamente iguales a las de SDL (tampoco es que haya muchas más formas de hacerlo ^_^). Para la forma que tengo de trabajar (uso "paletas", similar al modo de 256 colores de toda la vida), es lo mejor; los sprites ocupan poco y es bastante rápido. Además te permite hacer algunos efectillos con los colores fácilmente.

Por cierto, BGL la estoy haciendo justo para lo que quieres hacer: hacer las cosas por software, usando tus propias funciones. Aun está verde, faltan algunas cosas y otras están incompletas, pero puede que quieras probar.

OFFTOPIC: Ahora estoy haciendo un programa con BGL par ir viendo (con un caso real) qué falta y cómo hacerlo, y estoy añadiendo y mejorando cosas. Si alguien quiere usarla para algo, puede que le interese la última versión. Si no, no la subiré hasta que no esté más completita.
Soy indeciso... ¿o no?

Sacrifai

 Siento irme un poco al off-topic, pero me gustaría saber que ventajas hay de hacerlo por software o por hardware. Recuerdo que una temporada que estube con el Iirlicht probré el render por software y me iba fatal, pero en 3d por supuesto.

Pogacha

 
Citarme gustaría saber que ventajas hay de hacerlo por software o por hardware
Solo usare software para un engine 2d, para que ande en muchas maquinas, en 3d practicamente abandone el render por software y parece que nunca mas lo usare, render por hardware = muy acelerado pero altos requerimientos = poca venta shareware, render por software = lento y trabajoso, pocos requerimientos = mas posibilidades de venta share.

Baje por 5ta vez el BGL  .... y si...  todo estaba ahí, entonces ... con 16 bits ¿cómo armas las rutinas de blendeo?.
No tengo problemas con colorkeys ni la de 50/50 pero si la del alpha blending, tendria que hacer 3 productos en ves de 2 y todo con variables generales, seria muy lento.

Saludos.

sés

Cita de: "Pogacha"entonces ... con 16 bits ¿cómo armas las rutinas de blendeo?.
No tengo problemas con colorkeys ni la de 50/50 pero si la del alpha blending, tendria que hacer 3 productos en ves de 2 y todo con variables generales, seria muy lento.
Desde luego BGL no hace (ni hará) nada parecido, por eso es básica :P

Eres tú quien quiere hacerlo por software, ¿no? Pues te tocará sufrir y currártelo "a mano" ^_^
Soy indeciso... ¿o no?

Pogacha

 Entonces BGL vendria a ser como un SDL?

Trancos

 El uso de los métodos Lock y Unlock debe evitarse ya que genera latencia, especialmente si intentas bloquear una superficie que está siendo usada por el sistema en ese preciso instante ( pej. en el momento en que está siendo bliteada ). Además, DDraw emplea la aceleración por hardware donde la haya, por lo que no es muy recomendable hacer las operaciones de raster por software. DDraw realiza por software aquello que la tarjeta no le proporciona, y lo hace de una forma más optimizada de lo que podamos conseguir con Lock y Unlock. El uso de Lock y Unlock está expresamente contraindicado por su impacto en el rendimiento y sólo debería emplearse para casos muy especiales.

Y no contento con esto, he de decirte que DDraw está cada día peor soportada, y está en vías de desaparecer. En cualquier caso, si aún deseas trabajar sobre DDraw, en vez de romperte la cabeza con la API te recomiendo que utilices un buen wrapper como por ejemplo NukeDX, que no solamente encapsula de forma excelente toda la funcionalidad de DDraw sino que añade prestaciones que DDraw no soporta por defecto. El manejo del Dirty Recting es muy sencillo, además renderiza fuentes True Type con antialias, y hace bastantes virguerías por software, consiguiendo efectos de translucidez muy optimizados. También encapsula DInput y algo de DShow.

sés

Cita de: "Pogacha"Entonces BGL vendria a ser como un SDL?
BGL solo tiene lo necesario para olvidarte del SO. Te pone el modo de video y te da la información que necesitas para dibujar (puntero a memoria de video, información de RGB...) y recoger los eventos básicos (teclado, ratón...). Luego cada uno puede utilizar sus propias funciones por encima.

Hay mucha gente que prácticamente solo usa SDL o DirectX para hacer lock/unlock de la memoria de video y poco más. Esto es lo que da BGL en apenas unas Kb.
Dijiste que querías hacer el lock/unlock de video y "blitear" con tus funciones (o eso entendí), te sobra el 99% de SDL o DirectX.
Soy indeciso... ¿o no?

Pogacha

 Huevox:
Ese NukeDX tiene todo lo que necesito, donde consigo la ultima version?
Es el mas recomendable o hay otro?


Saludos.

Sacrifai







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.