Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Extensiones

Iniciado por oakshield, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

oakshield

                                ¿Alguien podria aclararme que son las extensiones de openGL y como puedo implementarlas? Esq toy un poco perdio... :lengua:


                               

Ithaqua

                                Las extensiones de OpenGL son funcionalidades añadidas que no pertenecen al API base de OpenGL pero que cada fabricante de chips añade a los drivers.
Cada driver implementa entonces toda la funcionalidad standard de OpenGL, y un número determinado de extensiones según las capacidades adicionales de la tarjeta.
Si una extensión consigue hacerse popular, suele ir ascendiendo hasta incluso poder llegar a formar parte del standard OpenGL en una versión posterior (como por ejemplo la multitextura).

Para saber si una extensión esta presente, se utiliza la función glGetString() con el parámetro GL_EXTENSIONS. Esto retorna una cadena con todas las extensiones que estan presentes en el driver.
Por ejemplo para ver si se puede usar la extensión de multitextura, se buscaría dentro de esa cadena la subcadena "ARB_multitexture".
Si es encontrada, puede usarse sin problemas.

Según la extensión, se usará de una forma u otra. Aunque yo distinguiría 2 grandes tipos:

1- Las que añaden solamente nuevas constantes para usar en funciones ya existentes.
2- Las que además dan acceso a usar nuevas funciones.

El primer caso sería por ejemplo el del filtrado anisotrópico. Si hemos encontrado EXT_texture_filter_anisotropic dentro de la cadena de extensiones, podremos configurar el nivel máximo de anisotropía (GL_TEXTURE_MAX_ANISOTROPY_EXT) con la función existente glTexParameterf.
En el segundo tipo, solemos echar mano a la función wglGetProcAddress() para obtener un puntero a la(s) nueva(s) funcion(es). Por ejemplo en la multitextura, una de las muchas funciones que nos ofrece se obtendría con:
glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB");
Lo que nos devolvería un puntero a una de las funciones propias de la extensión.

Para saber que constantes o que funciones ofrece una extensión, hay que consultar la documentación específica de la misma.

Yo actualmente uso una pequeña librería que viene incluida en el nVIDIA OpenGL SDK que automatiza el tedioso proceso de verificar/configurar extensiones. La recomiendo a todo aquel que busque algo parecido.

Creo que no hay mucho mas que añadir, espero haberte resuelto la duda.

Saludos.

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

oakshield

                                La verdad esq si q me has aclarado las cosas, gracias.
Ya he visto algunas de las extensiones que soporta mi version, ahora voy ha ver si encuentro la documentacion sobre las funciones que estas implementan.

Gracias de nuevo.                                

Emotion

                                Hola oakshield,

Las extensiones de OpenGL son como ha dicho Ithaqua, funciones añadidas por los fabricantes de hardware, aunque no solo graficos, sino de cualquier tipo.

Actualmente, hay muchos fabricantes que han conseguido promocionar extensiones para OpenGL. Por ejemplo las extensiones mas utilizadas o conocidas son las siguientes:

NV_xxx      NVIDIA corporation
ATI_xxx     ATI corporation
KTX_xxx     KINETIX (solo aportaron 1 extension, creo)
IBM_xxx     IBM (algunas sobre texture mapping)
INTEL_xxx   INTEL (lo lei el otro dia pero no he visto ninguna aun)
ARB_xxx     ARB (extensiones standard. este es el comite oficial de revision de OpenGL)
SGI_xxx     SGI corporation
SGIS_xxx    extensiones SGI (no recuerdo que mas)
SGIX_xxx    extensiones SGI experimentales (de ahi lo de la X)
WIN_xxx     extensiones aportadas por Microsoft

y creo que me faltan un par de extensiones...

Saludos
_________________
Julio Meca
ALPHA SOFTWARE

[ Este Mensaje fue editado por: Emotion el 2002-04-15 09:39 ]

[ Este Mensaje fue editado por: Emotion el 2002-04-15 09:40 ]                                
G3: Get the Power!






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.