因此,该cufftComplex
类型是一个数组,其n
结构具有一个x
和一个y
字段,分别表示每个复数的实部和虚部。
另一方面,如果我想在 OpenGL 中创建一个带有x-
andy-
字段的顶点缓冲区对象,即一个 2D 顶点或只是一个也表示n
复数的顶点缓冲区对象,我将不得不创建一个2n
具有布局的浮点数组像这样:
x0 y0 | x1 y1 | ... | xn yn
然后我通过调用将其写入 VBO:
glBufferData(GL_ARRAY_BUFFER, n * sizeof(GLfloat), complex_values_array, GL_DYNAMIC_DRAW);
我想用 cuFFT 对图像进行傅里叶变换,并显示例如复数值的大小。如何解决这两种数据类型之间的不兼容问题?cuFFT 有没有办法对 VBO 采取行动?
编辑:
也许我应该编写一个 CUDA 内核,它采用 cufftComplex 类型并将每个复数的大小映射到 1D-VBO。或将 cufftComplex 类型映射到 2D-VBO 的 CUDA 内核。我不知道开销是多少,因为它是设备-> 设备,我希望它是可管理的。