从 ArrayFire 使用 OpenGL
Posted
技术标签:
【中文标题】从 ArrayFire 使用 OpenGL【英文标题】:Using OpenGL from ArrayFire 【发布时间】:2018-03-14 21:59:10 【问题描述】:如果我在 GPU 内存中已经有一个 af::array A,将它传递给 OpenGL 的过程是什么?我的意图是使用 OpenGl 将其绘制为折线图,但我不确定如何处理 Arrayfire 的后端可能是 OpenCl、CUDA 甚至 CPU 的事实。 OpenGL如何实现数组的所有权?如果可能,我希望避免复制。
另外,如果我要使用内置的 forge 库在 Arrayfire 中绘制图表,我发现如果我按照教程绘制图表,只需按住图表中的数据并拖动它在其他地方,数据图从其原始位置移动,不再与轴正确对齐。有没有办法纠正这个问题?
【问题讨论】:
你至少需要两个着色器,顶点和片段。如果您的数组是 GLBuffer 顶点数据,请在着色器中使用它。推荐 David_Wolff OpenGL4 Shading Language Cookbook。这是一种Modern OpenGL RedBook
。
@VictorGubin 我知道如何单独使用 OpenGL,我想知道如何用一组信息填充 OpenGL 缓冲区,这些信息源自我在 Arrayfire 中的信息,不需要不必要的复制以设置 OpenGL 缓冲区。
Sharing OpenCL and OpenGL data
并使用 OpenCL 构建。 BUILD_OPENCL 使用 cmake。
【参考方案1】:
@HamzaAB
如果您还不知道,您所问的是所谓的 GL-CUDA 或 GL-OpenCL 互操作性,这是Forge 试图解决的领域。您可以查看 forge 存储库中的 ComputeCopy.h 标头以了解如何进行 OpenGL 互操作。
话虽如此,您是否想重置您正在对线图进行的转换,如果您想重置它,那么有办法。在按住左键的同时,点击鼠标中键,将完成的平移/缩放重置为线图。如果您在使用 forge 的线图时遇到其他问题,您可以提出问题here,我们将尝试对其进行调查。
PS。我是ArrayFire的核心开发者之一。
【讨论】:
以上是关于从 ArrayFire 使用 OpenGL的主要内容,如果未能解决你的问题,请参考以下文章
我可以从 Eclipse 使用 Maven,但不能从命令行使用