2017-07-27 84 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