WebGLを使用して大きなシーン(モデル化された都市)をレンダリングしたいと思います。オクルージョンカリングは、パフォーマンスを最適化するのに良い方法です。WebGL 2.0 Occlusion Query
WebGL 2.0には、オクルージョン情報を取得するための「クエリオブジェクト」という新機能があります。しかし、私がgl.getQueryParameter(クエリ、gl.QUERY_RESULT)を使用するたびに、私は同じ結果を得ました。
そして、私はこの問題を説明するために、ここでデモを書いた:
var query = gl.createQuery();
gl.beginQuery(gl.ANY_SAMPLES_PASSED, query);
gl.drawArrays(gl.TRIANGLES,0,n);
gl.endQuery(gl.ANY_SAMPLES_PASSED);
var tick = function(){
if(!gl.getQueryParameter(query,gl.QUERY_RESULT_AVAILABLE)){
requestAnimationFrame(tick);
return;
}
var result = gl.getQueryParameter(query,gl.QUERY_RESULT);
console.log(Number(result));
gl.deleteQuery(query);
};
tick();
、ここではsceond三角形は最初の三角形によって覆い隠されているというのが私の頂点情報です。
var vertexData = new Float32Array([
0.0,0.5,0.0, //first triangle
-0.5,-0.5,0.0,
0.5,-0.5,0.0,
0.0,0.5,-0.5, //second triangle
-0.5,-0.5,-0.5,
0.5,-0.5,-0.5
]);
、結果は結果何常に1
では、 '1' の略?
さらに、WebGL 2.0を使用してどのようにオクルージョンカリングを行うことができますか?役に立つサンプルはありますか?
だから、あなたが他の人に覆われている* 1 *描画図面* 2 *三角形を持って、あなたに '' 1'' ''と似ている ''を与える '' ANY_SAMPLES_PASSED'(https://www.khronos .org/opengles/sdk/docs/man3/html/glBeginQuery.xhtml)のように、すべての最初の三角形サンプルを渡します。 –