2012-09-02 6 views
8

Podczas kompilowania poniższej pętli w moim shloku HLSL w Shader Model 2.0, pojawia się błąd X3511.HLSL dla pętli z Shader Model 2.0: Błąd X3511 nie może rozwinąć pętli

for (int x = -5; x <= 5; x++) 
{ 
    for (int y = -5; y <= 5; y++) 
    { 
      ... 

Błąd brzmi: nie można rozwinąć pętli, pętla nie wydaje się, aby zakończyć w czasie (5 iteracji), należy rozwinąć [(n)] atrybutów, aby wymusić dokładny większą liczbę.

Jestem świadomy tego komunikatu o błędzie, ale nie używam tutaj zmiennej dla warunkowej części instrukcji for - jest to zakodowany stan x < = 5. Co jest nie tak?

Z góry dziękuję!

+0

To kompiluje kiedy jestem usunięcie drugi do pętli. A więc: Brak zagnieżdżonych pętli w HLSL?!? – barnacleboy

+0

Nie jestem pewien, czy działa z zagnieżdżonymi pętlami, ale czy próbowałeś podbić liczbę iteracji z atrybutem? Jak można się dziwić, może "[rozwinąć (11)]" na obu pętlach zadziała? –

+0

Niestety nie mogę używać rozwijania podczas kompilacji w Shader Model 2.0. Pracuję nad aplikacją do przetwarzania obrazu, więc chcę się upewnić, że aplikacja może działać przynajmniej pod Windows XP. – barnacleboy

Odpowiedz

8

Spróbuj tego:

[unroll(121)] for (int i=0; i<121; i++) 
{ 
    int x = i/(int)11 - 5; 
    int y = i % (int)11 - 5; 
} 
+0

To wszystko! Dzięki! :) – barnacleboy