在OpenCL中使用Struct

在OpenCL中使用Struct,opencl,Opencl,我想在OpenCL中初始化一个数据结构。在C++中,结构的初始化类似: typedef struct mystruct{ float x; float y; float z; mystruct(){ x = 0.0; y = 0.0; z = 0.0; } }mystruct; 如何在OpenCL中执行此操作?您可以使用与C中相同的方式键入定义结构,然后使用 mystruct foo = {1.0, 2.1

我想在OpenCL中初始化一个数据结构。在C++中,结构的初始化类似:

typedef struct mystruct{
    float x;
    float y;
    float z;
    mystruct(){
        x = 0.0;
        y = 0.0;
        z = 0.0;
    }
}mystruct;

如何在OpenCL中执行此操作?

您可以使用与C中相同的方式键入定义结构,然后使用

mystruct foo = {1.0, 2.1, 3.2};

如果你想要默认构造函数,比如C++的行为,你可以写一个看起来像

的函数
mystruct
initMystruct ()
{
    mystruct foo = {0., 0., 0.};
    return foo;
}

您也可以只做一行:
mystruct initMyStruct(){return(mystruct){0,0,0.};}
。如果您只想定义一个简单的结构(如您的示例),请尽可能使用内置类型,即float4。这是因为它更高效吗?是的。不过,如果只有3个变量需要初始化,则不会有太大区别。