- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我们使用 OpenGL 时可以获得良好的速度,因为它使用纹理内存和许多内置图形函数(混合、mip 贴图等)。
为什么我们需要 OpenCL(由于 openCL 缓冲区而速度慢)与 OpenGL 的互操作性,只是因为我们可以将渲染与计算结合起来,或者有任何好的优势,例如性能。
我只是想知道它的主要优点,是否有任何已发表的论文表明通过使用 OpenGL 与 OpenCL 的互操作性来提高性能,或者有任何证据表明在速度和质量方面性能有所提高。
最佳答案
OpenGL 只是关于实时光栅化图形。由于它的范围有限,因此可以针对该任务进行更优化,并且大多数硬件也是为此设计的。
OpenCL 是关于通用计算的。折叠蛋白质。天气预报。高频交易。 Simulating neurons 。机器学习、SETI、信号处理、比特币挖矿等。
但是两者之间有很多交叉领域。
首先,很多东西确实有视觉组件。例如,科学家可能希望能够看到折叠的蛋白质/与折叠的蛋白质进行交互,而不必将所有数据从 GPU RAM 复制到 CPU 的内存上,对其进行处理,使其成为视觉格式,然后将其发送回 GPU。
游戏也可以使用 OpenCL。以《我的世界》为例。如果您使用现代 OpenGL(而不是 Minecraft 实际使用的 OpenGL 1.3)制作 Minecraft,您可能只想将原始 map 数据上传到 GPU。使用几何/曲面分割着色器的单 channel 将数据转换为立方体和其他形状,然后使用变换反馈来捕获结果(您只需运行一次)。
但是《我的世界》也有各种关于如何更新 map 的规则。计算照明。种树。让水流动。引爆TNT等。这是您无法使用着色器真正完成的事情(或者可能无法通过单次渲染完成)。你可以在 CPU 上做到这一点(《我的世界》就是这么做的),但如果你看过那些人们同时引爆 1000 个 TNT 的视频,你就会发现这种延迟很大。水流可能会导致大型服务器上的每个人都出现延迟。您可以使用 OpenCL 来完成此操作,而不是将其发送到 OpenGL,但如果它们链接在一起,效率会更高。
您可以使用 OpenCL 来伪造新的 OpenGL 技术。例如,如果您有 OpenCL,但没有几何/曲面分割着色器,您可以在 OpenCL 中执行此操作(当然,目前实际上它没有那么有用,因为大多数具有过时 OpenGL 实现的系统也缺乏 OpenCL 支持)。是否有像曲面分割着色器这样有用但不存在的东西?
有很多视觉效果无法在 OpenGL 管道内完成(至少效率不高)。一个例子是 real-time ray-tracing 。另一个是particle simulations 。 Procedural/fractal terrain generation .
还有其他一些东西可以帮助游戏/实时图形。例如Physics simulations可以从CPU上移走。如果渲染管道/场景图本身也很好could be moved to the GPU 。这将显着减少 CPU 和 GPU 之间的调用数量,并使其更加并行。还有很多东西,比如光线转换、人工智能、路径查找等等。基本上任何你计算出来的东西都只能在视觉上看到。
最后,我确信还有很多以前没有人拥有但现在成为可能的其他东西。随着硬件朝这个方向发展,我们越来越多地插入并行算法。
关于opengl - OpenCL 与 OpenGL 互操作性的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9919650/
我是一名优秀的程序员,十分优秀!