Questions tagged «opengl»

开放式图形库-用于2D和3D计算机图形的API


3
为什么硬件加速的矢量图形没有被删除?
我正在开发一个涉及以60fps实时处理矢量路径的应用程序,而关于该主题的信息很少,我感到非常惊讶。最初,我尝试使用CoreGraphics来实现我的想法,但是对于我的目的而言,它的表现并不理想。然后,我发现有一个用于硬件加速矢量图形的Khronos标准称为OpenVG,并且值得庆幸的是,一个善良的人写了一个名为MonkVG的OpenGL ES半实现。 但是,尽管事实上OpenVG是一个非常实用的API,但Khronos似乎还是放弃了它。根据Wikipedia的说法,自2011年以来,工作组“决定……不召开任何常规会议以进一步实现标准化”。据我所知,该文档仅包含一个参考卡。而且,互联网上几乎没有OpenVG的任何示例。我可以在眨眼之间找到数百个OpenGL教程,但是OpenVG似乎明显缺失。 您可能会认为,在当今分辨率迅速提高的世界中,硬件加速矢量将更为重要,而且似乎许多公司正在实现自己的方式。例如,Qt和Flash具有用于硬件加速矢量的方案,并且许多Adobe的工具都可以选择硬件加速。但是,当标准已经存在时,车轮似乎正在被彻底改造! 关于OpenVG,我是否缺少某些东西,使其不适合实际使用?还是仅仅是因为标准没有及时赶上而现在注定要变得晦涩难懂?您认为将来是否存在用于硬件加速矢量图形的标准化API的空间,还是使用基于栅格的传统技术会更容易?还是矢量在进入之前就只是在走出去?

14
为什么DirectX使用左手坐标系?
我考虑过在Stack Overflow上发帖,但是这个问题使我感到主观,因为我认为微软在此问题上的选择没有合理的技术解释。但是这个问题困扰了我很久了,这个问题在我的一个项目中不断出现,而我却从未真正尝试过解释这个问题: OpenGL使用右手坐标系,其中世界坐标系的+ Z部分向观察者延伸。 DirectX使用左手系统,其中世界坐标的+ Z部分延伸到屏幕中,远离查看器。 我从未使用过Glide API,所以我不知道它是如何工作的,但是据我所知,它也使用了左手系统。 是否有技术原因?如果不是,那么坐标系的特定惯用性在概念上是否有优势?为什么一个选择另一个?
52 math  directx  opengl 

7
用C语言编写性能?[关闭]
我知道我经常听到C通常比C ++具有性能优势。在我意识到MSVC似乎甚至不支持C的最新标准之前,我并没有真正想到它,但据我所知,最新的版本支持C99。 我打算编写一个包含一些代码的库以在OpenGL中呈现,以便我可以重用它。我打算用C语言编写该库,因为在图形方面,任何性能的提高都是值得欢迎的。 但这真的值得吗?使用该库的代码很可能是用C ++编写的,而我通常更喜欢用C ++编写代码。 但是,如果产生的性能差异很小,我可能会选择C。 可能还需要注意的是,这个库将是我可以在Windows / OS X / Linux上使用的库,并且我很可能会原生编译所有内容(Windows的MSVC,OS X的Clang或GCC以及Linux的GCC。 。或可能是英特尔的所有编译器)。 我环顾四周,并找到了一些基准测试等,但是我所看到的所有内容都是针对GCC而不是MSVC和Clang的。此外,基准测试未提及所用语言的标准。有人对此有任何想法吗? 编辑:经过几年的经验,我只是想分享我对这个问题的观点。我最终用C ++编写了一个问这个问题的项目。我大约在同一时间在C中启动了另一个项目,因为我们希望获得尽可能少的性能,并且需要该项目在C中可链接。几个月前,我到达了真正需要地图和高级界面的地步字符串操作。我知道C ++标准库中的这种功能,并最终得出结论:标准库中的那些结构可能会比在合理的时间内可以在C中实现的映射和字符串更好并且更稳定。通过向C ++代码编写C接口,可以很容易地满足在C中可链接的要求,该接口可以通过不透明类型快速完成。用C ++重写库似乎比用C编写库快得多,而且不容易出现错误,尤其是内存泄漏。我还能够使用标准库线程库,该库比使用特定于平台的实现要容易得多。最后,我相信用C ++编写库可以带来巨大的好处,而性能成本可能很小。我尚未对C ++版本进行基准测试,但是我认为使用标准库数据结构可能会获得比我编写的性能更高的性能。我相信用C ++编写库可以带来巨大的好处,而性能成本可能很小。我尚未对C ++版本进行基准测试,但是我认为使用标准库数据结构可能会获得比我编写的性能更高的性能。我相信用C ++编写库可以带来巨大的好处,而性能成本可能很小。我尚未对C ++版本进行基准测试,但是我认为使用标准库数据结构可能会获得比我编写的性能更高的性能。

5
为什么现代图书馆不使用OOP
我是初学者级C ++程序员,但是我对语言的概念非常了解。当我开始学习外部C ++库(例如SDL,OpenGL)(也许还有其他东西)时,令我惊讶的是,我发现它们根本不使用C ++概念。 例如,SDL和OpenGL都不使用类或异常,而倾向于使用函数和错误代码。在OpenGL中,我看到过诸如glVertex2f之类的函数,该函数需要2个float变量作为输入,并且作为模板可能会更好。而且,这些库有时使用marcos,而使用宏函数似乎是一个坏习惯,这是一个普遍的共识。 总而言之,它们似乎更多地是用C风格而不是C ++风格编写的。但是它们是完全不同的语言,不是吗? 问题是:为什么现代图书馆没有利用它们所写语言的优势?

4
OpenGL,GLX,DRI和Mesa3D之间是什么关系?
我开始在Linux中进行一些底层3D编程。我在使用高级图形API OpenInventor方面有很多经验。 我知道并不一定要知道所有这些东西如何组合在一起,但是我很好奇。我知道OpenGL只是图形应用程序的标准。Mesa3D似乎是此标准的开源实现。 那么GLX和DRI适合哪里呢?在Wikipedia和所有这些网站上进行挖掘时,我还没有找到关于这一切如何结合的确切解释。硬件加速在哪里发生?专有驱动程序与此有什么关系?

3
您将如何对OpenGL的图形代码进行单元测试或执行最有效的自动化测试?
我在C ++中的OpenGL之上编写游戏和随附的图形引擎。我也是良好的编码过程和自动化测试的粉丝。图形输出+测试似乎几乎是不混溶的,因为输出通常仅是可视的,或者非常注重视觉。 例如,想象一下按字节分析渲染到屏幕上的原始图像流-您需要与之比较的测试数据,这很难创建/获取,并且通常渲染的图像在屏幕上并不相同。在不同时间运行时的字节级别-算法中的微小变化将完全破坏该方法。 我正在考虑创建一个可视化的单元测试套件,在其中基本上可以渲染不同的测试场景,显示诸如阴影贴图,动画等之类的内容。作为CI的一部分,这些场景随后将被渲染为视频。具有不同指标的文件(或可能将其保留为可执行文件)。这仍然需要对视频文件进行手动检查,但至少会实现某种程度的自动化和标准化。 你怎么看?我希望有更好的方法?

2
对Haskell中的GUI库的建议[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 正如Haskell Wiki本身所言: Haskell有大量的GUI库。不幸的是,没有标准的标准,而所有标准或多或少都是不完整的。通常,低级别的贴面进展顺利,但级别较低。高级抽象是实验性的。需要受支持的中级GUI库。 我学院的一位教授要求我和其他三个计算机科学专业的学生考虑为Haskell开发GUI库。他对该项目的最初想法是在OpenGL之上编写一个层,该层模仿Smalltalk中的形态库。但是,这只是一个建议,其他系统绝对值得考虑。 这将我们带到一个实际的,包含多个部分的问题。 我们的图书馆应该争取什么抽象水平?Haskell Wiki似乎强烈表明将首选中级GUI库。但是,仍然欢迎使用高级图书馆。 我们的图书馆应基于什么建造?(例如OpenGL) 您希望看到什么现有的GUI库模仿我们的库(如果有),为什么?(例如PyGame,Morphic,Swing等) 您希望我们的库实现或避免哪些功能?例如,Gnome的好人可能会认为“最小化”按钮是不必要的。 您有什么一般性建议吗? 您会给这个假想库一个聪明的名字吗?(例如HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

3
Android,OpenGL和扩展GLSurfaceView?
这个问题既是技术性的,又是元的,是主观的,而且非常具体: 我是从事Android的独立游戏开发者,在过去的6个月中,我一直在苦苦挣扎,最终成功制作了自己的Android 3D游戏应用程序。所以我想我会跳出来,并帮助其他在android和openGL-ES上苦苦挣扎的人 但是,绝大多数问题与扩展有关GLSurfaceView。我没有扩展就制作了整个应用程序GLSurfaceView(并且运行良好)。GLSurfaceView对于我遇到的大多数问题,我完全看不出有任何理由要扩大。 更糟糕的是,Android文档暗示您应该这样做,但没有详细说明为什么/什么优点/缺点与不扩展以及通过GLSurfaceView.Renderer像我一样实现自己的事情来做所有事情 尽管如此,纯粹与扩展有关的大量问题仍GLSurfaceView使我怀疑,实际上是否有这样做的真正理由与我一直以来所做的方式一样(并在对他人的回答中提出建议)去做)。 那么,有什么我想念的吗?在此期间,我应该停止回答问题吗? Android openGL文档
12 android  opengl 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.