3

使用 OpenGL 分配 VBO 后,我使用clCreateFromGLBuffer.

我将 VBO 用作数组,GLfloat将 OpenCL 缓冲区用作cl_float. 它在我的机器上完美运行。确实,GLfloatcl_float(and float) 具有相同的大小。

我想知道这是否可以完美地工作。换句话说,sizeof(GLfloat) == sizeof(cl_float)总是正确的?*如果不是,通常如何处理这个问题?

* 是否有文件证明这一点

4

1 回答 1

3

是的,如果您查看 CL 和 GL 标头,您会得到:

typedef float cl_float;          // @cl_platform.h
typedef float GLfloat;           // @gl.h

请注意,在某些 GL 实现中,您会得到类似的中间类型定义khronos_float_t,但最终归结为float类型。所以这两种类型都与您的本机浮点类型相同。此外, OpenCL 内核OpenGL 着色器中的等效数据类型都保证符合 IEEE754。

相关标头的链接:cl_platform.h和 GL 标头取决于您从哪里获得它(它们从操作系统到操作系统以及从供应商到供应商略有不同),看看你的。示例:gl.h(GLES 版本)、gl.h(FreeBSD nVidia 版本)、gl.h(一些随机版本)。

于 2012-08-09T04:30:47.167 回答