Perfiles en OpenGL (Core vs. Compatibility)

Desde la versión 3.0 de OpenGL se introduce el deprecation model (modelo de desaprobación fuerte). Su origen se debe a la necesidad de tener un mecanismo para simplificar las futuras versiones del API y poder de forma gradual quitar funciones de la especificación de OpenGL. Así, es posible marcar funcionalidades como deprecated que significa que dicha funcionalidad será removida de las versiones futuras de OpenGL. Un claro ejemplo se puede observar en el modo de rendering inmediato empleando glBegin/glEnd que fue marcado como deprecated en la versión 3.0 y removido en la versión 3.1.

Opengl_logo

Para mantener la compatibilidad hacia versiones anteriores, el concepto de Compatibility Profiles (perfiles de compatibilidad) fue introducido en la versión 3.2 de OpenGL. De esta forma, un programador que desea escribir un código tomando en cuenta una versión específica del OGL (sin funcionalidades viejas de versiones anteriores) debe emplear lo que se denomina como core profile. Igualmente, si el programador desea mantener la compatibilidad hacia versiones anteriores entonces debe emplear compatibility profile.

La selección del perfil core / compatibility depende enteramente del sistema de ventanas empleado. Por ejemplo, empleando GLFW, es posible seleccionar el la versión 4.3 con core profile de la siguiente forma:

glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 4 );
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 );
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow *m_pWindow = glfwCreateWindow(800, 600, "Hello OGL 4.3", NULL, NULL);

Ciertas funcionalidades marcadas como deprecated pueden ser completamente deshabilitadas al emplear el flag del contexto forward-compatibility del sistema de ventanas. Este flag puede ser combinado con el perfil core o compatibility. Es importante notar que existe una pequeña diferencia entre los perfiles y el contexto. Un contexto forward-compatibility indica que todas las funcionalidades marcadas como deprecated han sido removidas, es decir, solo incluye funcionalidades propias de la versión core, pero no aquellas que fueron marcadas como deprecated. Como ejemplo, empleando GLFW, se debe realizar la siguiente instrucción:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

Resumen: Si deseas trabajar con OGL pensando en no usar funcionalidades deprecated, emplea el perfil core 🙂

Anuncios

Acerca de smittynpro

Escribiendo algunas cosas de computación gráfica
Esta entrada fue publicada en Código y etiquetada , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s