0
I가 WebGL이있는 후자의 회수를위한
Float32Array(3)
로 (24 비트 범위에 포함되는 값이다)
id
기억하고
: 완전성을 위해서스크립트 변환
var r = 0,
g = 0,
b = id;
if (b >= 65536) {
r = ~~(b/65536);
b -= r * 65536;
}
if (b >= 256) {
g = ~~(b/256);
b -= g * 256;
}
var fa = new Float32Array([r/255, g/255, b/255]);
여기
gl.uniform3fv(uniforms['u_id'], fa);
...이 내가 WebGLRenderingContext.readPixels()
에서 내 id
돌아갈 방법은 다음과 같습니다 : 내가 그 값을 사용하고 어떻게
var result = new Uint8Array(4);
gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, result);
var id = result[0] << 16 | result[1] << 8 | result[2];
그 값을 내 Float32Array
으로 분할하는 올바른 방법은 무엇입니까? 나는 그런 일이보다 효율적이고 우아한 방식으로 이루어질 수 있다고 믿는다. (사실, 내가하고있는 일은 일하고 있지만 내 눈을 아프게한다.)
무엇의 정의 "효율적"하고 질문에 "우아한"? – guest271314
'if'가없는 경우, 어쩌면 비트 쉬프트 사용 – deblocker
만약'b '가'if (b> = 65536)에서'65536'보다 크다면 {'b'' 또한' if (b> = 256) {', 그렇습니까? – guest271314