1
我正在嘗試使GLSL中的某個顏色具有某個位置的功能。在GLSL ES 3.00及以上版本中支持按位運算符
precision highp float;
uniform sampler2D uTexture0;
varying vec2 vTextureCoords;
int getBit(float color, int bit){
highp int colorInt = int(color);
return (colorInt >> bit) & 1;
}
void main(void) {
highp vec4 texelColour = texture2D(uTexture0, vec2(vTextureCoords.s, vTextureCoords.t));
if(getBit(texelColour.r * 255.0, 7) == 1){
gl_FragColor = vec4(0.5, 0.8, 0.5, 0.8);
}else{
gl_FragColor = vec4(0.4, 0.1, 0.0, 0.0);
}
}
Chrome和Firefox返回該錯誤
ERROR: 0:35: '>>' : bit-wise operator supported in GLSL ES 3.00 and above only
ERROR: 0:35: '&' : bit-wise operator supported in GLSL ES 3.00 and above only
我試圖迫使版本在我的着色器的第一線,像這樣:
#version 130
但控制檯返回版本不受支持。
有沒有辦法爲getBit函數創建子例程? 或者什麼設置啓用在sharder片段中實現bitwize運算符?
感謝您的回覆。
紀堯姆