2017-05-04 56 views
0

我有這樣的例子發生器填充的區域(0,0,100,100)與黑色:執行函數功能在一個特定域在發電機

class MyGen : public Generator<MyGen> 
{ 
public: 
    Var x, y; 
    Output<Func> output { "output", Int(32), 2 }; 

    void generate() 
    { 
     output(x, y) = x + y; 
     RDom dom = RDom(0, 100, 0, 100); 
     output(dom.x, dom.y) = 0; 
    } 

    void schedule() 
    { 
    } 
}; 

的區域被正確填寫,但由於純定義的,其餘的圖像是一個漸變(x + y)。有沒有辦法編寫一個不會被執行的純定義(例如output(x,y)= output(x,y))?

我可以在特定域上執行Func(例如定義區域的Input<int>)而不會影響圖像的其餘部分嗎?

回答

2

這裏是你如何寫一份未籤立純定義:

output(x, y) = undef<int>(); 

這是一個有點雖然比輸出以外的任何危險,因爲鹵素燈不靜態檢查的用未定義的值。 valgrind是你的朋友。

+0

哇!這很有用。應該在文檔/教程IMO :) –