用于二维图形的现代OpenGL

用于二维图形的现代OpenGL,opengl,2d,Opengl,2d,由于Opengl的硬件加速功能,我想将其用于2d图形。您是建议我使用现代Opengl还是使用固定管道?整个着色器 对我来说,写作似乎开销太大了。我只想画一些2d原语。现代OpenGL更好。不要害怕着色器。没有它们,除了使用一些混合绘制图像之外,你什么都做不了。。。你不能走得太远。。。 使用着色器,您几乎可以做任何事情(例如,Photoshop之类的效果)。即使对于琐碎的2d图形,也可以使用可编程管道而不是固定功能管道。最后,可编程管道为您提供了更多表达图形的自由。您决定如何对管道进行编程取决于您

由于Opengl的硬件加速功能,我想将其用于2d图形。您是建议我使用现代Opengl还是使用固定管道?整个着色器
对我来说,写作似乎开销太大了。我只想画一些2d原语。

现代OpenGL更好。不要害怕着色器。没有它们,除了使用一些混合绘制图像之外,你什么都做不了。。。你不能走得太远。。。
使用着色器,您几乎可以做任何事情(例如,Photoshop之类的效果)。

即使对于琐碎的2d图形,也可以使用可编程管道而不是固定功能管道。最后,可编程管道为您提供了更多表达图形的自由。您决定如何对管道进行编程取决于您,并由您的图形需求驱动。可能,您只需要一个着色器。没有书面规则要求您需要数百个着色器才能成为“现代opengl”

在这方面,如果现代opengl真的那么努力,这是有争议的。它是一个着色器、一个顶点/索引缓冲区和一些纹理。与固定函数流水线相比,它是否真的改变了那么多,以至于你甚至不得不考虑坚持固定函数流水线?
您应该更喜欢可编程管道的一个更令人信服的原因是固定功能管道已被弃用。换言之,等待撤职。从概念上讲,IHV可以随时决定放弃对它的支持。

您最好使用SDL之类的库。他们中有很多人在幕后使用opengl,因此有硬件加速绘图,这正是我不想做的。我想独立于这样的图书馆。然而,如果2d图形仅仅是图像,也就是说,你在寻找一个bitblt的等价物呢?我做了一些比较,但没有任何地方能达到DirectX的速度。我仍然怀疑我是否做错了什么(比如使用“旧的”OpenGL),或者DirectX(Direct2D)真的更快。性能是一个很难解决的问题,尤其是在硬件加速的世界里,对于大多数人来说,你根本不知道硬件在做什么,或者更确切地说是说驱动程序在做什么。有相当多的路径容易降低性能。对此,您最好阅读行业专业人士在演示/演讲等中给出的建议,例如“OpenGL中接近零驱动程序开销”gdc 2014。请记住,DirectX有广泛使用性能关键型应用程序(即游戏)的历史,这很可能是因为它实际上速度更快。