• Sábado 20 de Abril de 2024, 02:52

Autor Tema:  Dudas Al Acceder A Nivel De Pixel En Opengl  (Leído 4406 veces)

paulados

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Dudas Al Acceder A Nivel De Pixel En Opengl
« en: Martes 14 de Marzo de 2006, 18:35 »
0
Hola a todos,
me llamo Paula, soy nueva y estoy teniendo problemillas con OpenGL. Resulta que de momento tengo un programa que lo que hace es:
1.- Pinta una textura (una imagen tga) en pantalla
2.- Al pulsar yo una tecla, lee los pixeles en pantalla y le sumo a todas las componente un valor constante (tan sólo era una prueba para ver como se accedían a los pixeles para hacer un procesamiento que tengo que hacer al nivel de pixel).

Pero me he encontrado con una serie de problemas:
1.- Cuando compilo el código sin poner la instrucción de readPixels el ratón parpadea más rápido cuando está sobre la pantalla (supongo que se actualiza más rápido) y lo que es más, al poner el readPixels y compilar el programa se pone tonto y tarda en reaccionar incluso cuando pulso las teclas, de forma que cuando pulso escape para finalizar tarda como que unos 4 - 5 segundos en reaccionar y salir.
2.- Aparte de eso, tengo una tecla que al pulsarla lo que hace es leer los pixeles de la imagen y escribirlos tal cual, sin hacer ninguna modificación, y al hacerlo, aparte de lo colgadillo que se queda por un rato, la imagen se ve más "apagada", vamos, o se ve como es realmente :o
3.- Y por último, pero no por ello lo peor, quisiera, cuando leo, leer solo la parte del buffer donde he pegado una textura, y no toda la imagen, pero no tengo ni idea de como pasar de las coordenadas del glTranslatef a pixeles en imagen.

Bueno, creo que ya está bien de problemas  ;)

Si alguien tiene alguna idea de que es lo que ocurre, porqué ocurre o como solucionarlo soy todo orejas.

Un saludito y muchas gracias por adelantado,
Paula.

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #1 en: Jueves 16 de Marzo de 2006, 01:20 »
0
Hola,

Tal vez tengas algún error en el código, pero eso sería cuestión de poder verlo. De todas formas te pongo el link a una aplicación que emplea esas funciones para aplicar una serie de filtros simples a una escena 3D:
OpenGL Demo 1 with Realtime/FX.

Un saludo,

Ruben3d

paulados

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #2 en: Jueves 16 de Marzo de 2006, 19:26 »
0
Vale, muchas gracias, le echaré un vistazo y si acaso ya daré la lata más adelante  :P

Lo malo es que el código ese está hecho en visual y yo uso builder, así que tendré que hacer alguna conversión.

Gracias nuevamente,
Paula.

paulados

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #3 en: Miércoles 22 de Marzo de 2006, 19:24 »
0
Hola a todos,

vuelvo a dar la lata con la forma de acceder a los pizeles en OpenGL. Muchas gracias Ruben por el ejemplo que me pasaste. Estuve haciendo pruebas, y resulta que el acceder a nivel de pixeles con OpenGL ralentiza enormemente la aplicación (vamos, que el sistema tardaba un par de segundos en reaccionar a las pulsaciones de teclado).

Así que me puse a buscar por la web y resulta que hay por ahí más gente con ese problema. Dicen que la solución es 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 a todos por adelantado,

Paulados.

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #4 en: Viernes 31 de Marzo de 2006, 00:43 »
0
Hola,

Esa función que mencionas no está en gl.h sino que es una extensión. Las extensiones están definidas en glext.h, cuya última versión puede descargarse de la web de SGI, y permiten usar funcionalidades ampliadas que se implementaron en los drivers tras la especificación de la versión que tengas (la que acompaña a Windows es OpenGL 1.1, ya un tanto antigua).

Algunos links que te ayudarán:

Información básica sobre extensiones y cómo cargarlas:
http://www.opengl.org/resources/faq/technical/extensions.htm

Especificación de la extensión que quieres emplear, GL_EXT_pixel_buffer_object,  con algunos ejemplos al final:
http://www.nvidia.com/dev_content/nvopengl...ffer_object.txt

Un saludo,

Ruben3d

paulados

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #5 en: Viernes 31 de Marzo de 2006, 13:03 »
0
Pos muchas gracias Ruben,

Le he estado echando un vistazo y tengo un problemilla con las extensiones. Estoy programando con Builder y resulta que incluyo la cabecera glext.h, pero a la hora del linkado, el apañao de builder me dice que no puede enlazar con la "EXTERNAL REFERENCE". Como se soluciona eso para que compile y linke bien?

muchas gracias nuevamente,
Paulados.

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #6 en: Viernes 31 de Marzo de 2006, 23:18 »
0
lei sobre el mensaje acera del acceso a nivel de pixels usando opengl en una imagen,
alguien sabe como hacer lo mismo pero con Directx, yo lo necesito pero para una aplicacion  de procesamiento de imagenes


gracias .

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #7 en: Lunes 10 de Abril de 2006, 00:55 »
0
Cita de: "paulados"
Estoy programando con Builder y resulta que incluyo la cabecera glext.h, pero a la hora del linkado, el apañao de builder me dice que no puede enlazar con la "EXTERNAL REFERENCE". Como se soluciona eso para que compile y linke bien?
Es normal. Esas funciones no están definidas en las librerías que usa Builder o cualquier otro linkador. Has de declarar un puntero a ellas y obtenerlas con la función adecuada, que te retornará un puntero a la función (todo en tiempo de ejecución, no en tiempo de compilación/enlazado). Cómo hacerlo lo tienes en el primer link que te pasé:

Cita de: "Ruben3d"
Información básica sobre extensiones y cómo cargarlas:
http://www.opengl.org/resources/faq/technical/extensions.htm

Un saludo,

Ruben3d

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #8 en: Lunes 10 de Abril de 2006, 00:56 »
0
Cita de: "allisap"
alguien sabe como hacer lo mismo pero con Directx
Deberías realizar esa pregunta en el foro de DirectX y, a modo de ampliación/aclaración, enlazar esta discusión.

Un saludo,

Ruben3d

paulados

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Dudas Al Acceder A Nivel De Pixel En Opengl
« Respuesta #9 en: Lunes 10 de Abril de 2006, 11:10 »
0
Muchas gracias Ruben, creo que ya más o menos me ha quedado todo claro (tendré que repasar alguna cosilla de C porque lo de acceder a las funciones por su dirección no era mi fuerte, aunque recuerdo lo bastante como para entenderlo de momento)

Pues eso, muchas gracias,
Paulados.