Entiendo el propósito de GTK, QT u otros juegos de herramientas gráficos. Pero no entiendo el rol de OpenGL. ¿Es solo otra biblioteca GUI o se refiere a algo más fundamental? Si es así, ¿qué es y cuándo debo usarlo en el pirateo día a día?¿Cuáles son las diferencias entre las bibliotecas OpenGL, GTK y QT?
Respuesta
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).
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.
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!
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!
- 1. ¿Cuáles son las diferencias entre Gtk + y Qt?
- 2. ¿Cuáles son las diferencias entre $ {} y # {}?
- 3. ¿Cuáles son las diferencias entre LinFu.DynamicProxy y Castle.DynamicProxy?
- 4. ¿Cuáles son las diferencias y similitudes entre MVC y MVVM?
- 5. ¿Cuáles son las diferencias entre std, tr1 y boost (como espacios de nombres y/o bibliotecas)?
- 6. ¿Cuáles son las diferencias entre PHP y Java?
- 7. ¿Cuáles son las diferencias entre osql, isql y sqlcmd?
- 8. ¿Cuáles son las diferencias entre "=" y "<-" en R?
- 9. ¿Cuáles son las diferencias entre Flash Professional y Flash Builder?
- 10. ¿Cuáles son las diferencias entre LLVM y bytecode java?
- 11. ¿Cuáles son las diferencias entre usar `rails server` y` rackup`?
- 12. ¿Cuáles son las diferencias entre RedrawWindow y UpdateWindow en Win32?
- 13. ¿cuáles son las diferencias exactas entre jsch ChannelExec y ChannelShell?
- 14. ¿Cuáles son las diferencias entre JSP y Facelets?
- 15. ¿Cuáles son las diferencias entre ConcurrentQueue y BlockingCollection en .Net?
- 16. ¿Cuáles son las diferencias fundamentales entre OSGi y Java EE?
- 17. ¿Cuáles son las diferencias entre TFS, SVN y GIT?
- 18. ¿Cuáles son las principales diferencias entre EnhancedPatternLayout y PatternLayout?
- 19. ¿Cuáles son las diferencias entre INSERT y UPDATE en MySQL?
- 20. ¿Cuáles son las diferencias entre NSURLConnection y ASI-HTTP-Request?
- 21. ¿Cuáles son las principales diferencias entre fwrite y write?
- 22. ¿Cuáles son las diferencias entre JSP, PHP, HTML5 y javascript?
- 23. ¿Cuáles son las diferencias prácticas entre formularios especiales y macros?
- 24. ¿Cuáles son las diferencias entre los modelos CSS y Latex?
- 25. ¿Cuáles son las diferencias entre MOQ y AutoFixture?
- 26. ¿Cuáles son las diferencias entre Vanilla Perl y Strawberry Perl?
- 27. ¿Cuáles son las diferencias entre el objeto JSON y JavaScript?
- 28. ¿Cuáles son las diferencias reales entre Zend Framework y Django?
- 29. ¿Cuáles son las diferencias entre free, dealloc, release y autorelease?
- 30. ¿Cuáles son las diferencias actuales entre jQuery y Prototype?
¿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
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