Programación Específica > Programación de Videojuegos
¿qué Librería Gráfica Utilizar?
Ruben3d:
Hola a todos.
Me gustaría saber qué librería gráfica debería utilizar bajo Windows para poder pintar píxeles de la forma más eficiente.
Me explicaré un poco más. Me gustaría que la librería me permitiera crear un primary buffer y un backbuffer, en el que pintar. Y permitirme intercambiar los contenidos para evitar el parpadeo.
Además, me gustaría que soportara al menos 16 bits de color y un direccionamiento lineal para el backbuffer, lo que me permitiría pintar los píxeles más o menos así:
--- Código: Text --- PintarPixel(x,y, color){ backbuffer[x+y*anchuraPantalla] = color; // backbuffer es un puntero al backbuffer}
He estado buscando por internet y algunas de las librerías que creo que permiten esto son (corregidme si me equivoco):
* DirectDraw</li>
* OpenGL (API 3D, he hecho pruebas y es muy ineficiente para esto, lo descarto)</li>
* SDL</li>
* Allegro </li>
* GDI (¿permite backbuffer?)</li>¿Alguien me podría decir con cuál de estas librerías se podría implementar esto de la manera más sencilla y eficiente posible?
Muchas gracias.
Ruben3d
JuanK:
todas te sirven y todas permiten backbuffer.
el ejemplo de gdi que coloque hoy en el foro de c++ usa double buffer.
directx es implicitamente gdi, ya que se monta partiendo de este,
allegro, salvo que lo uses en djgpp o en un entorno dos o linux... tambien resulta usar directx. :smartass:
Ruben3d:
Hola!
Gracias por la respuesta. Después de haberla leido me quedan algunas dudas:
- Si DirectX usa GDI, y Allegro usa DirectX, ¿la librería más eficiente es GDI?
- En el código que has puesto en el foro de C++ parace que el contexto del dispositivo (hdc) hace de PrimaryBuffer, y creas un BackBuffer que copias al Primary llamado (hdcmem) usando BitBlt(). ¿Es esto así?
- ¿Puedo pintar píxeles en hdcmem de la manera que he expuesto en el primer post?
- ¿Quedaría algo más claro el código si se usara DirectDraw, aunque esté basado en GDI?
Espero que no sean demasiadas preguntas :(
Muchas gracias.
Ruben3d
JuanK:
1-- si en teoria, aunque allegro realmente no usa nada en gdi, se hizo una version que utiliza directx, con el fin de crear compatibilidad con la programacion para win32, en todo caso si usas muchas cosas en gdi para hacer lo que hace una funcion en directX .. el resultadio no sera mejor ya que las librerias ahn sido desarrololadas de la forma mas optimizada posible lo cual seguramente es mejor de lo que cualquirea de nosotros lograria
2-si
3- no exactamente de esa forma, pero deben haber funciones capaces de soportarlo y ademas funciones que copien de un backbuffer normal (char *) a un contexto de memoria.
4-si quedaria mas claro , pero en ese caso usa c++ y no c, es mas emjor c#.. es lo mas claro que conozco en cuanto programacion., si usas lenguaje c, mejor usa allegro.
Ruben3d:
Estoy usando C++, así que creo que me decantaré por DirectDraw. Me pondré a investigar sobre cómo usarlo para conseguir lo que quiero.
Muchas gracias por tus respuestas! :gracias:
Un saludo.
Ruben3d
Navegación
[#] Página Siguiente
Ir a la versión completa