Ver la versión completa : [Programación] [Duda en C] ¿Qué librería usar? Tratamiento de imágenes
kennyspirit
18/10/2009, 13:36
No sabía dónde ponerlo por aquello de ser multiplataforma el fin de todo ésto (y como lo ponga en gp32-programación puedo ser obviado) xD
Pese a no tener tiempo para todo esto blablabla, tener que reinstalar SDKs y más blablabla tengo una curiosidad que me corroe sobre tratamiento de imágenes:
Quisiera básicamente una librería (mejor optimizada que SDL para estos quehaceres claro) que me permita coger una imagen y deformarla según sus 4 esquinas para pasar de tener un cuadrado a un polígono cualquiera de 4 lados
Y también necesitaría una/s que me sirva para blitear rectas, haga rotaciones, zoom y demás, porque la de SDL era muy muy lenta y come-recursos (y tengo la esperanza de poder evitar eso xD).
Vamos, que quiero alejarme de la SDL y tratar las imágenes desde más bajo nivel en C (ansi C, nada de C++). ¿Qué librerías puedo usar/adaptar/estudiar para entender mejor el proceso de bliteo?
Gracias mil por adelantado. Cuando saque el tiempo de debajo de las piedras prometo intentar una cosilla con la info que saque :brindis:
Ñuño Martínez
18/10/2009, 13:58
En una mala puedes probar Allegro. Utilizando su muestreador de polígonos 3D poniendo a todas las esquinas con el mismo eje-Z debería funcionar. Está bastante optimizado. Eso sí, hay que enlazar toda la biblioteca y es un pelín grande así que si sólo vas a utilizarla para eso pues puede ser demasiado. También puedes intentar bucear en su código fuente a ver cómo lo hace e intentar reproducir el proceso. Y ojo, que las versiones 4.9.x no incluyen esta función (o no deberían) ya que a partir de esa utilizan OpenGL.
Quizá como último recurso, si no encuentras nada mejor.
Si yo estuviera en tu situación la haría yo mismo, se aprende bastante haciendo todo por tu cuenta.
Ademas tampoco es tan complicado lo que necesitas.
Por cierto, creo que seria mejor hacerlo en C++ por tener todo mas ordenado en clases, y si ni usas nada virtual te ira igual de rapido que en C.
kennyspirit
18/10/2009, 14:32
Allegro no me sive porque no es portable, pero para mirar el source la tendré en cuenta en última instancia. Gracias igualmente.
En principio quiero una que pueda ver su código para trastearla y adaptarla un mínimo, pero que ya esté bien optimizada porque conocimientos de programación tengo bien pocos y autodidactas... pariría un caracol y tardaría un huevo seguramente.
C++ simplemente es que no tengo ni papa y como virtualizando va enlenteciéndose lo había descartado para la chorrada que quiero
edito:
dejando a parte las deformaciones de imagen, tengo interés especial por saber cómo se le manda a la pantalla que se pinte tal o cual pixel para formar rectas, dibujar mapas de bits... que siempre me lo ha dado todo hecho la SDL_image
gracias a los que han contestado por ahora :brindis:
En la página de SDL hay muchas librerías (http://www.libsdl.org/libraries.php) y alguna se puede ajustar a lo que necesitas de deformar imágenes. Tienes la SDL_gfx o la SDL_draw con su código fuente, si quieres saber cómo se pintan rectas y círculos en la memoria de la pantalla.
Con la SDL también puedes acceder a bajo nivel al buffer de vídeo (http://www.libsdl.org/cgi/docwiki.cgi/SDL_Surface) y activar los pixels que desees para pintar. Básicamente es obtener la superficie, pintar los pixels que quieras, y actualizar la pantalla.
kennyspirit
18/10/2009, 19:16
la SDL_gfx es precisamente el motivo por el cual estoy huyendo de blitear con SDL... el rotozoom es la cosa más lenta que he probado y tenía algún que otro bug en las otras funciones.
Quisiera alejarme de lo de crear surfaces, pintar en ellas, repintarlas... bloquear, poner pixel, desbloquear... etc.
Hay juegos antiquísimos de cuando no existía la SDL hechos en C (en los de assembler está claro que va fluído jaja) que tienen rotaciones y dibujos de rectas en tiempo real sobre procesadores muy parcos y eso es lo que quiero. Algo muy muy básico, rollo, pinta el píxel 100,320 de la pantalla de tal color, ponme este gráfico cargado aquí... lo de trazar líneas supongo que lo acabaría sacando si puedo poner un píxel en pantalla donde yo quiera... vamos supongo
La SDL_draw me la anoto para lo de trazar líneas porque comentan que es rápida, pero lo que más necesito que son los zooms y rotaciones se comen un huevo de cpu y matan mi idea prácticamente basada en eso...
También tomo nota de lo de trabajar con el buffer de la SDL.
Gracias hardyx!
¿Algo para tratar gráficos, portable, muy muy ligero y que no sea SDL? Aunque sea arcaico.
Te recomiendo ImageMagick, no se si la conoces, pero es una suite de programas (en linea de comandos) para tratar con imágenes, y realmente hace DE TODO, es impresionante, y lo mejor es que todo está implementado en una libreria en C con bindings a un montón de lenguajes de programación (hace poco la usé para un proyecto en ruby, dibujando gráficos sobre imágenes con un sistema vectorial...). Bueno, permite hacer de todo, transformaciones, rotaciones, efectos, dibujar sobre las imágenes... además puedes trabajar con cualquier otra libreria para visualizar, ya que tienes un par de funciones para crear una imagen de imagemagick a partir de un array de pixels (http://www.imagemagick.org/api/constitute.php) y luego sacar el array de pixels de una imagen de imagemagick a través de un callback propio (http://www.imagemagick.org/api/stream.php).
Aqui tienes ejemplos http://www.imagemagick.org/script/magick-core.php, y la API: http://www.imagemagick.org/api/MagickCore/index.html
Otra opción es usar la Imlib2 de las EFL del proyecto E17, es una libreria muy optimizada y al parecer muy rápida por ello. http://docs.enlightenment.org/api/imlib2/html/
Ahi tienes ejemplos y un enlace a la API.
Un saludo.
kennyspirit
21/10/2009, 23:06
Te recomiendo ImageMagick, no se si la conoces, pero es una suite de programas (en linea de comandos) para tratar con imágenes, y realmente hace DE TODO, es impresionante, y lo mejor es que todo está implementado en una libreria en C con bindings a un montón de lenguajes de programación (hace poco la usé para un proyecto en ruby, dibujando gráficos sobre imágenes con un sistema vectorial...). Bueno, permite hacer de todo, transformaciones, rotaciones, efectos, dibujar sobre las imágenes... además puedes trabajar con cualquier otra libreria para visualizar, ya que tienes un par de funciones para crear una imagen de imagemagick a partir de un array de pixels (http://www.imagemagick.org/api/constitute.php) y luego sacar el array de pixels de una imagen de imagemagick a través de un callback propio (http://www.imagemagick.org/api/stream.php).
Aqui tienes ejemplos http://www.imagemagick.org/script/magick-core.php, y la API: http://www.imagemagick.org/api/MagickCore/index.html
Otra opción es usar la Imlib2 de las EFL del proyecto E17, es una libreria muy optimizada y al parecer muy rápida por ello. http://docs.enlightenment.org/api/imlib2/html/
Ahi tienes ejemplos y un enlace a la API.
Un saludo.
gracias xzakox! tomo nota de todo ello. Estoy reconsiderando lo de Opengl, pero bueno, por ahora voy a dejar el proyectillo en papel mientras arreglo los asuntillos de la Uni antes de codear nada.
Le pregunté a un profesor de "programación", a ver que me decía y ni idea, que sólo había oido hablar de opengl pero si no que pinte con las libs de xwin...
bueno que muchas gracias a todos. Si a alguien se le ocurre alguna mas se agradecerá, pero si algún mod quiere cerrarlo o algo, no problem!
Un abrazo a todos :brindis:
saucjedi
22/10/2009, 08:27
Allegro no me sive porque no es portable
¿Que Allegro no es QUE? Mucho antes de que existieran las SDL. Otra cosa es que no sea portable a la máquina que tú quieres :p
Lo bueno de SDL ha sido la sencillez de su API y que se hizo desde cero para ser portable entre Windows y Linux. De ahí, a lo más alto.
kennyspirit
22/10/2009, 21:57
¿Que Allegro no es QUE? Mucho antes de que existieran las SDL. Otra cosa es que no sea portable a la máquina que tú quieres :p
Lo bueno de SDL ha sido la sencillez de su API y que se hizo desde cero para ser portable entre Windows y Linux. De ahí, a lo más alto.
a ver, casi todo lo opensource es portable y casi todo lo que además es reconocido es casi inmediatamente portado, pero me refería a que para PSP no se portó porque habían SDL y en gp32 tampoco lo vi... supongo que será menos ligero y claro, como a mi me van los cacharretes de poca potencia suelto generalizaciones alegremente xD
Que si, que SDL mola, si no saco nada de las imagemagick probaré la sdl_glx para darle una oportunidad de nuevo y si no a opengl, que no se yo si la gp32 se lo comerá o qué xD
antes de darle a enviar, he visto que ya se ha portado allegro a psp xD mi info mental está atrasada unos 3 años vale? xD pero eso no quita que quiera algo super ligero sin enlazar una tanda de librerías enormes jaja Perdón por hablar con poca propiedad de lo desconocido para mi :brindis:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.