我理解GTK,QT或其他图形工具包的用途。但我不明白OpenGL的作用。它只是另一个GUI库还是指更基本的东西?如果是这样,它是什么以及何时应该在日常黑客中使用它?
答案 0 :(得分:29)
OpenGL是一个用于在低级别上绘制图形的库。它主要擅长3D图形。 OpenGL最重要的竞争对手是Direct3D(不是整个DirectX)。
GL只有硬件加速才真正强大。如今,几乎所有台式机或笔记本电脑解决方案都具有GL加速功能,但在某些将显卡集成到芯片组中的系统中,它仍然相当慢。
对于日常黑客攻击,GL可以提供许多不寻常的目的。原因是您可以利用GPU的处理能力进行图形相关任务。对于任何非图形化的东西,也存在像CUDA这样的新语言来访问GPU。
虽然GL的真正优势在于3D场景渲染,但它通常也用于2D操作或合成。原因是图形卡的2D加速架构通常无法达到GL的功率(自由度)或性能。这就是为什么有时GL用于视频输出(主要是缩放)或混合任务,即使这些任务的特定2D加速可用。 Mac OS X是整个桌面(可选)通过GL渲染的一个突出示例,可以在没有高CPU负载的情况下提供吸引人的效果。但它也可以用于例如将消除锯齿的文本字形混合到带纹理的背景上。
一旦执行了图形性能关键任务,您可能希望GPU提供帮助(即使您不在屏幕上绘图也可能),然后OpenGL是一个干净,标准化,跨平台的解决方案您的需求。今天的GUI工具包主要不是为你提供GPU加速绘图,而是将GL渲染包含在他们的小部件中。因此,您可以将它们用于UI绘图,并在适合的地方包含您的性能关键实时图形。在GL中构建一个完整的UI是一件痛苦的事,但也有可用的解决方案(典型的用例是具有游戏内UI的游戏)。
答案 1 :(得分:16)
这是更基本的东西。 OpenGL允许您执行低级绘图(想想“从这里画一条线到这里”而不是“画一个按钮”)。 OpenGL操作通常也是硬件加速的,因此非常高效,OpenGL API允许您轻松使用3D。
在OpenGL和QT或GTK之类的GUI工具包之间进行选择实际上取决于您是否尝试为应用程序绘制UI元素,或者希望非常精细地控制图形的绘制方式。
有时,GUI工具包会使用OpenGL来绘制屏幕上的元素。
答案 2 :(得分:8)
OpenGL是图形API,在其上构建了更复杂的面向用户的图形库。如果您对图形开发感兴趣,特别是3D图形,那么很有必要让它成为熟人。它是一个非常强大的系统,可以完成从绘制线到渲染Quake以处理照片般逼真的大气渲染。
您与OpenGL相关的所有事情的起点是OpenGL.org,其中包含您所需要的所有内容的链接。
如果您更喜欢教科书,而且这对OpenGL来说并不是一个坏主意,那么最终文本是“OpenGL编程指南”,俗称“红皮书”,因为它的封面。您可能希望使用“OpenGL着色语言”(或“橙皮书”)对其进行补充。
关于OpenGL的一个好处是有一个简单的测试工具包--GLUT--它已经在大多数语言中实现了绑定,并且非常容易启动和运行以进行实验并且通常都是乱用。
所以去渲染你的茶壶吧!
答案 3 :(得分:5)
他们通常提供的控件之一是可以使用图形命令(绘制线,绘制圆等)绘制的画布。它们也可能提供OpenGL画布,您可以使用OpenGL命令进行绘制。
OpenGL(简单来说)是一种用于显示3D对象的语言,它非常强大,跨平台且有点复杂(特别是如果你的数学很弱!)但是它比尝试任何这些3D东西要好得多你自己!有时令人沮丧,特别是如果你做错了什么,它只是画了一个空白的屏幕。
为了使事情变得更复杂,还有一些用OpenGL编写的窗口工具包,其中OpenGL在场景中提供了一组按钮,对话框等,有时(幕后)所有GUI元素都被类似的东西使用QT实际上是由OpenGL绘制的!