Open GL - Como Acceder a los píxeles de una imagen con OpenG

 
Vista:

Como Acceder a los píxeles de una imagen con OpenG

Publicado por paulados (4 intervenciones) el 13/03/2006 18:46:26
Hola a todos,
Me llamo Paula y no se prácticamente nada con OpenGL.
El caso es que tengo que hacer un proyecto con OpenGL, y tengo un problema, y es que necesito poder acceder a los valores de los píxeles de una imagen en OpenGL a la que le he pegado unas texturas para poder tratarlos manualmente y no se como.

Se acepta cualquier idea, ya que yo no tengo ninguna :(

Gracias por adelantado,
Paula.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como Acceder a los píxeles de una imagen con Op

Publicado por Marci (4 intervenciones) el 19/03/2006 21:35:55
No entiendo muy bien lo que quieres hacer. Si a lo que te refieres es a leer pixeles de la pantalla puedes usar la funcion glReadPixels, si no trata de explicarnos mejor el problema para que podamos ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Acceder a los píxeles de una imagen con Op

Publicado por paulados (4 intervenciones) el 22/03/2006 18:59:40
Hola!!!

Pues sí, menos mal que haces por entenderme, porque yo normalmente me explico fatal (el don de la palabra no es mi don) :P
Sí, me estaba refiriendo a como leer los pixeles de la pantalla con OpenGL. Estuve buscando por internet sobre la función y encontré ejemplos por ahi, los probé y sí funcionan, pero hay un problema: El acceso a los pixeles es increiblemente lento y ralentiza la ejecución del programa de forma que incluso tarda un par de segundos en reaccionar a las pulsadiones del teclado.

Así que buscando para intentar solucionar este problema me encontré con que la solución que da la gente está en la función gl_ext_pixel_buffer_object, hecha para solucionar este problema porque la lectura se hace más rápida (no se cuanto más, pero bueno).

El caso es que tengo algunas dudas:
1) No se si esto es algo estandar de OpenGL (no creo porque no está en la gl.h) y si no lo es de donde puedo descargarme los .h, .lib y .dll para poder probarlo.

2) Si es posible (aunque ya es mucho pedir) si alguien encuentra algún programa de ejemplo por ahi que use esto, lo agradecería inmensamente, porque llevo rato buscando y solo me salen cosas relacionadas con juegos, pero ningún código ni nada.

Por cierto, toda esta historia de acceder a nivel de pixel viene porque quiero hacer un programa que haga el efecto de las ondas del agua vista desde arriba, y encontré hace algo de tiempo en esta web:

http://freespace.virgin.net/hugo.elias/graphics/x_water.htm

una forma de hacerlo, que está bastante chula, pero que requiere que se acceda a pixeles. Y uso OpenGL porque además del efecto agua tengo que hacer otras cosas que si no las hago con OpenGL me da algo :P Así que si alguien supiese como hacer fácilmente el efecto de las ondas del agua vistas desde arriba (es decir, cuando cae algo y se forman las ondas que se propagan por el agua) pues también lo agradecería :P

Muchas gracias por adelantado,

Paulados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Acceder a los píxeles de una imagen con Op

Publicado por Marci (4 intervenciones) el 23/03/2006 01:32:26
ARB_pixel_buffer_object es una extension de OpenGL Las extensiones aprobadas por OpenGL comienzan por ARB, las de nvidia por NV, las de ati por ATI pero trabajar con ellas es un poco más complicado porque no funcionan como las funciones normales, si no que tienes que comprobar si la extension que quiere usar esta soportada por la tarjeta grafica y despues conseguir un puntero a esa extension mediante wglGetProcAddress.

Te pongo dos enlaces para simular agua:
http://graphics.cs.lth.se/theses/projects/projgrid/
http://personal.auna.com/aagonzalez1/Downloads/Ondas.zip
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Acceder a los píxeles de una imagen con Op

Publicado por paulados (4 intervenciones) el 24/03/2006 12:15:56
Hola Marci,
ante todo muchisimas gracias por responder.
La verdad es que en lo referente a las extensiones de OpenGL me estaba haciendo ya un lío, porque cuando buscaba encontraba cosas de Nvidia, otras extensiones implementadas por Intel (que es el enlace que se encuentra en la web Oficial de OpenGL, el llamado OpenGL SDK http://oss.sgi.com/projects/ogl-sample/sdk.html ), y en fin, que me estaba haciendo un lío.

Respecto a esto, la implementación de Intel del OpenGL SDK es totalmente libre de usar, inclusive en programas comerciales (es que con suerte, si le gusta al jefe, pueda vender el programita que estoy haciendo)? Y aparte de eso, como se usa el sdk de intel? Yo incluí en mi proyecto los archivos glprocs.h y .c, pero aparte de esto están el glext.h y wglext.h que no se para que sirven, porque si los añado en linkado me dice que no puede encontrar la implementación de las definiciones (¿y ande estarán?).

Por otro lado, querría preguntarte si sabes donde se pueden encontrar ejemplos de código de las extensiones, porque de OpenGL normal suele haber a patadas, pero con las extensiones no he encontrado mucho (y menos que usen las funciones de pixeles).

Respecto a los enlaces que me pasaste, muchas gracias, me han venido de escandalo, sobre todo http://personal.auna.com/aagonzalez1/Downloads/Ondas.zip
El problema es que me va lento, no se si es que necesita muchos recursos o es que mi ordenador es pequeño (pentium III a 1GHz con 512 RAM y tarjeta desconocida, vamos, no me acuerdo :P ). Al arrancar saca un mensaje de "LockArray EXTensions No Accesibles". No se ni que es ni siquiera si será la razón de que vaya lento. ¿En caso de que no se halle una extensión de OpenGL se emula por software? Si es así supongo que podría ser la razón :?

Bueno, siento dar la lata, pero si tienes tiempo y ganas (o cualquiera que sepa) de responder a algunas de las cientos de preguntas que hago :P (si es que soy muy pero que muy pesadissima) pues lo agradecería mucho.

Saludos,
Paulados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Acceder a los píxeles de una imagen con Op

Publicado por Marci (1 intervención) el 26/03/2006 18:41:13
Pues como decia Jack el destripador, vayamos por partes:

- Cualquier implementacion de OpenGL tiene que ser libre, ademas solo estas usando archivos de cabecera.

- El glext.h es el único que necesitas para trabajar con las extensiones.

-¿y ande estarán? :-) No hay librerias que contengan las extensiones. Estan en los drivers de la tarjeta y tienes que enlazarlas en tiempo de ejecucion.

-¿En caso de que no se halle una extensión de OpenGL se emula por software? Nopi

Estoy escribiendo un articulo en el wiki de mi pagina sobre las extensiones donde explico como usarlas. A ver si lo pongo esta noche. Si tiene mas dudas pues me las dejas en el foro de mi pagina que asi le doy vidilla al pobre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar