Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

264
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!