在OpenCL中使用Struct
我想在OpenCL中初始化一个数据结构。在C++中,结构的初始化类似:在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
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个变量需要初始化,则不会有太大区别。