WebGL에서 선택을 구현하려고합니다. 나는 많은 물건 (약 500 개)을 가지고 있으며, 나는 각각의 물건을 골라야한다. 그렇게하기 위해, 나는 각 개체에 고유 한 색을 할당하는 루프 (참조 따기 원리를)했다 :WebGL : 프레임 버퍼를 사용하여 여러 객체 선택
for (var i = 0, len = objects.length; i < len; i++) {
framecolors[count++] = i % 256/256; //Red
framecolors[count++] = Math.floor(i/256)/256; //Green
framecolors[count++] = Math.floor(i/(256*256))/256; //Blue
}
framecolors
다음 각 객체의 다른 그늘을 가지고 있는지 여부를 확인하기 위해 고전 버퍼에 사용 된 빨간. 그것은 효과가 있었다.
이제 개체의 원래 색을 사용하고 백그라운드에서 빨간색 음영을 사용하는 프레임 버퍼를 사용하고 싶습니다. 나는 약간의 코드를 겪었고, 나는 약간 혼란 스럽다.
여기까지 제가 시도한 바가 있습니다. 따기 전에 호출
기능 :
//Creates texture
colorTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 400, 400, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
//Creates framebuffer
fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTexture, 0);
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
gl.enable(gl.DEPTH_TEST);
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.clear(gl.DEPTH_BUFFER_BIT);
gl.drawArrays(gl.POINTS, 0, vertexPositionBuffer.numItems);
기능은 다음에 호출 : 당신은 아마 이해할 수 있듯이
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
gl.drawArrays(gl.POINTS, 0, vertexPositionBuffer.numItems);
, 나는 프레임 버퍼와 매우 편안하지 않다, 나는 정말 그들이 어떻게하지 않는다 비록 내가 그들에 대해 많이 읽었지만, 일한다. framecolors
을 어떻게 프레임 버퍼에 연결할 수 있는지 잘 모르겠습니다. 방법이 있습니까?
덕분 R.