`GLfloat`和`cl_float`是否保证大小相同?

时间:2012-08-08 23:33:05

标签: opengl floating-point opencl sizeof

使用OpenGL分配VBO后,我使用clCreateFromGLBuffer从中创建一个OpenCL缓冲区。

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

我想知道这是否会在任何地方完美无缺。换句话说,sizeof(GLfloat) == sizeof(cl_float)总是如此吗? * 如果没有,通常如何解决这个问题?

*并且有证明这个的文件

1 个答案:

答案 0 :(得分:3)

是的,如果你看看CL和GL标题,你会得到:

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

请注意,在某些GL实现中,您获得了khronos_float_t之类的中间typedef,但最终归结为float类型。因此两种类型都与您的本机浮点类型相同。此外,OpenCL kernelsOpenGL shaders中的等效数据类型都保证符合IEEE754标准。

相关标题的链接:cl_platform.h,GL标题取决于您获取它的位置(它们在操作系统与操作系统和供应商之间略有不同),请查看您的标题。示例:gl.h(GLES版本),gl.h(FreeBSD nVidia版本),gl.h(某些随机版本)。