2013-09-10 4 views
2

Я хочу инициализировать структуру данных в OpenCL. В C++ инициализация структуры похожа:Использование Struct в OpenCL

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

Как это сделать в OpenCL?

+0

Просто предположение, если вы просто хотите определить простую структуру (в качестве примера), используйте максимально возможный тип сборки, то есть float4. – colddie

+0

Это потому, что это более эффективно? – xiaoke

+0

Да. Это не будет иметь большого значения, если у вас есть только 3 переменные для инициализации. – colddie

ответ

3

Вы определение типа во STRUCT точно так же, как и в C, а затем инициализировать его с

mystruct foo = {1.0, 2.1, 3.2}; 

Если вы хотите конструктор по умолчанию, как поведение C++ вы могли бы просто написать функцию, которая выглядит как

mystruct 
initMystruct() 
{ 
    mystruct foo = {0., 0., 0.}; 
    return foo; 
} 
+0

Вы также можете сделать это в одной строке: 'mystruct initMyStruct() {return (mystruct) {0., 0., 0.};}'. – immutablestate

Смежные вопросы