2011-03-05 65 views
4

對於本聲明我的OpenCL內核OpenCL的類型轉換爲Boolean

uint4 checkCoord; // assign some value 
if(checkCoord==(uint4)(0,0,0,0)){ 
    ; // do something 
} 

我收到以下錯誤OpenCL編譯

statement requires expression of scalar type ('int __attribute__((ext_vector_type(4,4)))' invalid) 

什麼是一個變量轉換的最簡單方法的uint4類型爲bool(或標量)值?

回答

5

您應該使用all來測試條件已在矢量的所有組件上進行驗證。 checkCoord == (uint4)(0,0,0,0)是一個int4,其組件爲0(false)或(uint)-1(true)。

if (all(checkCoord == (uint4)(0,0,0,0))) { ... } 

根據OpenCL的規格(6.3.e),你也可以寫

if (all(checkCoord == 0)) { ... } 
相關問題