从 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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Thrust 对矩阵的行进行排序?

使用推力执行傅里叶变换

基于GPU的超声弹性成像并行实现研究_爱学术

我可以从 Eclipse 使用 Maven,但不能从命令行使用

使用存储过程从视图中检索或过滤数据是不是比使用存储过程从表中获取或过滤数据更快?

如何使用 graphql 从 Firebase 使用 Flutter 从 Cloud Firestore 获取数据?