2009-03-07 23 views

Respuesta

26

OpenGL es una biblioteca para dibujar gráficos en un nivel bajo. Se destaca principalmente en gráficos 3D. El competidor más importante para OpenGL es Direct3D (no en todo el DirectX).

GL es realmente muy potente si tiene hardware acelerado. Hoy en día, casi todas las soluciones de computadoras de escritorio o portátiles tienen aceleración GL, pero en algunos sistemas donde la tarjeta gráfica está integrada en el conjunto de chips, todavía es bastante lenta.

Para la piratería día a día, GL puede servir para muchos propósitos inusuales. La razón es que puede aprovechar la potencia de procesamiento de la GPU para tareas relacionadas con gráficos. Para cualquier cosa que no sea gráfica, también existen nuevos lenguajes como CUDA para acceder a la GPU.

Mientras que las fortalezas reales de GL se encuentran en la representación de escenas en 3D, a menudo también se utiliza para la manipulación 2D o la composición. La razón es que las arquitecturas de aceleración 2D de las tarjetas gráficas a menudo no alcanzan la potencia (libertad) o el rendimiento de GL. Es por eso que a veces el GL se utiliza para tareas de salida de video (principalmente escalado) o de mezcla, incluso si hubiera disponibilidad de aceleración 2D específica para estas tareas. Mac OS X es un ejemplo destacado de un escritorio completo (opcionalmente) que se procesa a través de GL para permitir efectos atractivos sin una alta carga de CPU. Pero también se puede usar, por ejemplo, para mezclar glifos de texto antialias en un fondo con textura.

Tan pronto como realice una tarea gráfica de rendimiento crítico, es probable que desee que la GPU lo ayude (incluso si no dibuja en la pantalla) y luego OpenGL es la respuesta limpia, estandarizada y multiplataforma a tus necesidades Los kits de herramientas GUI de hoy en día no ofrecen el dibujo acelerado por GPU, sino la inclusión de la conversión GL en sus widgets. Por lo tanto, puede usarlos para el dibujo de la interfaz de usuario e incluir sus gráficos críticos en tiempo real cuando le convenga. Crear una UI completa dentro de GL es un problema, pero también hay soluciones para eso disponible (los casos de uso típicos son juegos con UI en el juego).

+0

¿Por qué la aceleración 2D es generalmente más lenta? ¿No tendría sentido que las cosas fueran más rápido con solo 2 ejes? – mk12

+1

Primero, la mayoría de las operaciones adicionales en 3D, como las operaciones de matriz más complicadas, se implementan básicamente en hardware, por lo tanto, son 'gratis' en comparación con operaciones 2D más simples. El dibujo en sí mismo se realiza en 2D para ambos casos (ver algoritmo de Scanline). En segundo lugar, la aceleración 3D es generalmente más rápida porque los proveedores de GPU ponen mucho más esfuerzo en optimizar los controladores para GL y DirectX en lugar de la aceleración de hardware 2D; especialmente para plataformas que no sean Windows. La mayoría de los puntos de referencia de la GPU son puntos de referencia de juegos en 3D. Ahí es donde tiene lugar la competencia en el mercado. – ypnos

15

Es algo más fundamental. OpenGL le permite realizar un dibujo de bajo nivel (piense en "dibujar una línea desde aquí hasta aquí" en lugar de "dibujar un botón"). Las operaciones de OpenGL también suelen ser aceleradas por hardware y, por lo tanto, muy eficientes, y la API de OpenGL le permite trabajar fácilmente con 3D.

Elegir entre OpenGL y un conjunto de herramientas GUI como QT o GTK realmente depende de si está tratando de dibujar elementos UI para su aplicación o si desea un control muy fino sobre cómo se dibujan sus gráficos.

A veces, los kits de herramientas GUI emplean OpenGL debajo de las coberturas para dibujar sus elementos en pantalla.

6

OpenGL es API gráfica sobre la que se crean bibliotecas de gráficos más complejas orientadas al usuario. Si está interesado en el desarrollo de gráficos, y en particular en gráficos 3D, entonces vale la pena conocerlo. Es un sistema extraordinariamente poderoso que puede hacer de todo, desde trazar una línea a través del renderizado de Quake para manejar la representación atmosférica fotorrealista.

Su punto de partida para todo lo relacionado con OpenGL es OpenGL.org, que tiene enlaces a todo lo que necesita.

Si prefiere un libro de texto, y eso no es una mala idea con OpenGL, entonces el texto definitivo es 'La guía de programación OpenGL', coloquialmente conocido como 'El Libro Rojo' por su portada.Es posible que desee complementar esto con 'OpenGL Shading Language' (o The Orange Book) que hace lo que dice.

Una de las cosas buenas de OpenGL es que hay un kit de herramientas de prueba simple - GLUT - que se ha implementado en la mayoría de los lenguajes con enlaces y es extraordinariamente fácil de poner en marcha para experimentar y en general piratear.

¡Así que ve a renderizar tu tetera!

4

GTK, QT, MFC, wxwidget, etc. son juegos de herramientas para ventanas: proporcionan controles como cuadros de diálogo, widgets, botones, etc. para crear aplicaciones gui.

Uno de los controles que generalmente proporcionan es un lienzo que puede dibujar con comandos de gráficos (dibujar, dibujar un círculo, etc.). Probablemente también suministren un lienzo OpenGL que pueda utilizar con los comandos de OpenGL.

OpenGL (en términos simples) es un lenguaje para mostrar objetos 3D, es muy potente, multiplataforma y algo complicado (¡especialmente si tus matemáticas son débiles!) PERO es mucho mejor que tratar de hacer algo de esto en 3D ¡tú mismo! Puede ser frustrante a veces especialmente si haces algo mal y simplemente dibuja una pantalla en blanco.

Para hacer las cosas un poco más complejas también hay toolkits de ventanas escritos en OpenGL donde OpenGL proporciona un conjunto de botones, diálogos, etc. en la escena Y hay momentos (detrás de escena) todos los elementos de la GUI utilizados por algo como QT en realidad están siendo dibujados por OpenGL!

Cuestiones relacionadas