2017-07-27 86 views
0

我正在寫一個ios頂點着色器,如果檢測到z方向發生變化,x方向會「變平」一個MC世界,反之亦然(xz平面是perp到高度)。我有幾個着色器讓世界變得很好,但是編寫這個僞運動檢測並沒有奏效。我知道條件是昂貴的。我的位置與一個號碼,它的工作:MCPE GLSL條件

if (worldPos.x != 4.) { 
    worldPos.z = 0.; 
} 

但對比位置到位置的靜態調用沒有。到目前爲止,我已經嘗試將常量浮點分配給x和z分量,統一浮點數和POS4制服,但沒有成功。我有一種感覺,條件因數據類型問題而失敗?如果PE版本像PC一樣顯示協調一致,則更容易調試。感謝任何/所有的幫助!當前代碼:

uniform POS4 CHUNK_ORIGIN_AND_SCALE; 
attribute POS4 POSITION; 

void main() 
{ 

POS4 worldPos; 
worldPos.xyz = (POSITION.xyz * CHUNK_ORIGIN_AND_SCALE.w) + CHUNK_ORIGIN_AND_SCALE.xyz; 
worldPos.w = 1.; 
const float staticPosx = worldPos.x; 
const float staticPosz = worldPos.z; 

if (worldPos.x != staticPosx) { 
    worldPos.z = 0.; 
    staticPosx = worldPos.x; 
} 

if (worldPos.z != staticPosz) { 
    worldPos.x = 0.; 
    staticPosz = worldPos.z; 
} 

etc. 
+0

什麼是'POS4'?這不是GLSL的一部分。另外,什麼是「MC世界」? –

+0

@NicolBolas'POS4'是x,y,z和尺寸因子w。它可能只能用於OpenGL。 MCPE是我的世界袖珍版。 – Andrew

回答

0

我沒有嘗試在GLSL但在C你不能

int a=5; 
const int b=a; 
+0

它顯示一條錯誤消息嗎? – Andrew