我是opengl的新手,并使用C#,opentk进行开发。我的应用程序非常轻(仅2d图形),我计划在硬件渲染不可用时使用软件渲染。
(我的应用程序非常简单(简单的2d图形)截至目前。我选择了opengl而不是GDI + / WPF,因为我将来可以将它扩展到3D。)
答案 0 :(得分:2)
OpenGL是一个系统库。您不应该将其与您的应用程序一起分发。特别是在Unix / Linux系统上,应该使用发行版的包管理器进行安装。
由于Windows中包含opengl32.dll,如果您在应用程序中选择的像素格式未由图形驱动程序进行硬件加速,则会自动回退到软件渲染。
答案 1 :(得分:0)
我也试图利用OpenTk,但本身创建了一个依赖项 - 特别是作为一个新手 - 并没有真正做任何事情,只是混淆学习OpenGL与学习别人对框架的解释。
OpenGL是 - 正如另一个回答者所建议的 - 一个系统库。有了它,它是一个C DLL中包含的函数,您可以通过API导入它。
OpenTK为您导入这些函数,这是它添加的唯一真正的好处,但是这样做,许多类型被重新解释,因为根据OpenTK的作者调用函数。
这会创建一个额外的学习曲线 - 因为您将要找到的大部分互联网参考都将是OpenGL - 因此您不仅要努力理解OpenGL - 这并不容易 - 但您也是将要处理OpenTK对OpenGL标准的解释。
现在请记住,许多开源项目(如OpenTK)在他们获得足够的用户群时才会转换为盈利模式。所以,让我们说你学习并依赖OpenTK,当他们切换到盈利模式并且你利用现金时,你就是SOL(不要运气)。或者你必须付出代价。
我做的是 - 我为OpenTK的OpenGL映射获取了API映射的源代码,并根据我的口味重命名了所有内容。这是一些工作,但它值得劳动,它帮助我了解OpenGL。
至于分发。除了应该已经在系统上的OpenGL DLL之外,我完全没有依赖的外部依赖。
OpenGl所需的所有DLL都将在您正在处理的任何Windows操作系统上预先安装。我不能代表其他操作系统的风格,但我怀疑情况可能如此。
最后一点:OpenGL处理'软件和硬件渲染之间的'切换'。因此,像MESA和OpenTK这样的库在高潜力成本中增加了很少的价值。
这些费用是多少?
投资自己。 OpenGL文档非常庞大,有时令人困惑,我的建议是避免因为一个简单的原因而避免膝盖反射诱惑“采取简单”的方式而不是杠杆其他模型。
我知道你正在将它用于2d应用程序。即使你正在使用正交视图,事实上你正在学习OpenGL,并考虑到3D图案。因此,在自己教学之前给自己一些礼物,因为理解3d并没有“简单的道路” - 因此没有真正的价值增加你倾向于使用的外部依赖。
要记住一件事:建模。 IF /当您切换到3D建模时,在opengl中通过手动编码创建顶点是一个婊子。我使用Blender创建我的obj模型并将其读入我自己的c#应用程序中,该应用程序读入3d模型并让我从那里操作它们。
我一直在使用C ++,它确实更快,但是一旦我将API转换为c#代码并开始利用垃圾收集模型管理自己的内存,它就变得比学习别人的库容易得多。
不要使用redistributeables。并利用OpenTK中的代码进行修改,但不包括OpenTK作为可重新分发的代码。
这是我的建议。