我挣扎了几天,我仍然无法弄清楚我做错了什么。 我有一个由单个浮点数组成的顶点属性,我想在if语句中将它的值与其他值进行比较但是我总是得到语句为真,即使它不是; 这是我的顶点着色器出现问题:
attribute vec4 a_Position;
attribute vec3 a_Normal;
attribute vec2 a_TextureCoord;
attribute highp float a_Bone;
uniform mat4 bone_1;
uniform mat4 bone_0;
varying vec2 v_TextureCoord;
void main() {
v_TextureCoord = a_TextureCoord;
vec4 posy;
float a = a_Bone;
if(20.0<a)
posy = bone_0*a_Position;
else
posy = bone_1*a_Position;
gl_Position = posy;
}
如果我用“true”或“false”替换if语句中的内容,所有的东西都按预期工作......但是如果我试图使用该属性值来比较if语句,则该语句总是如此即使a_Bone值为1.0或2.0(明显小于20.0)
,也为true答案 0 :(得分:0)
我们一直在if statemens中使用Attributes
,并且代码在大多数OpenGL ES 2.0设备上运行良好。所以使用属性不是问题。这是我们如何完成的工作代码。
int jointId = int(optionalData1.x);
if(jointId > 0)
finalMatrix = jointTransforms[jointId - 1] * optionalData2.x;
此代码适用于所有iOS和Android设备。 optionalData1
是属性,我们甚至使用此值从骨骼变换矩阵的均匀数组中获取矩阵。