Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

272
Vistas
¿Es posible que las funciones 'obsoletas' de OpenGL no sean compatibles?

Estoy probando con glDrawPixels para migrar mi sencillo juego 2D de píxeles de la API de Windows a OpenGL con GLFW. Funciona bien con FPS por encima de 100, además de multiplataforma.

Solo una cosa que me molesta un poco es que estoy usando una característica obsoleta. No veo ningún problema ahora, pero ¿es posible que esto sea un problema en el futuro? ¿Se pueden eliminar repentinamente glDrawPixels ? Todo lo que necesito es una alternativa multiplataforma a CreateWindow y BitBlt de winapi.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Me gustaría ampliar el artículo sobre el desuso en el wiki de OpenGL que ya se proporcionó en los comentarios.

La situación actual es que podemos discernir 3 "sabores" de contextos OpenGL en plataformas de escritorio:

  1. "Legado" GL. Esto significa el GL de los viejos tiempos, antes de que hubiera un esquema de obsolescencia y antes de que hubiera contextos o perfiles específicamente versionados.
  2. GL "Moderno" en el perfil central.
  3. GL "Moderno" en el perfil de compatibilidad.

El primer caso, GL "heredado", se limita a GL 2.1 y versiones anteriores de manera multiplataforma. Todos los principales sistemas operativos de escritorio (Windows, Linux, OSX) tienen soporte para esto en todas las principales marcas de GPU (Intel, NVidia, AMD). Y es poco probable que esto desaparezca por mucho tiempo, ya que todo el software "antiguo" que ni siquiera es consciente de la existencia de GL moderno se basa en él.

Lo que describo como GL "moderno" significa GL 3.2 y posteriores. Y ahí se han inventado los perfiles . El quid es que solo se requiere soporte para el perfil principal , el perfil de compatibilidad es opcional. En los perfiles principales, las funciones obsoletas en realidad se eliminan , por lo que su código no funcionará en un perfil principal. En los perfiles de compatibilidad, las funciones en desuso todavía están disponibles.

Por lo tanto, la única forma de combinar funciones heredadas antiguas (como canalización de función fija, modo inmediato o su llamada glDrawPixels ) con funciones GL modernas es un perfil de compatibilidad. Sin embargo, en la práctica, el soporte de compatibilidad generalmente no está disponible. MacOSX generalmente no admite perfiles de compatibilidad, y tampoco los controladores Linux de código abierto basados en Mesa. Entonces, realmente no se puede hacer un desarrollo multiplataforma con un perfil de compatibilidad.

Tenga en cuenta que de alguna manera me salté GL 3.0 y 3.1. Son algo intermedio y recomiendo nunca tratar de usarlos. OSX no los admite en absoluto. Y, de hecho, cualquier GPU del mundo real que admita GL 3.0 también admite al menos GL 3.2 de todos modos.

Te veo dos opciones:

  1. Si la función establecida en GL 2.1 es suficiente para su caso de uso, simplemente puede apegarse a GL heredada. El soporte para esto no desaparecerá por mucho tiempo.
  2. Cambie a GL moderno sin usar funciones obsoletas. glDrawPixels nunca ha sido eficiente. Probablemente sea mucho mejor usar un cuádruple texturizado (o tal vez incluso glBlitFramebuffer ) para enviar imágenes a la pantalla.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda