私のシーンをテクスチャにレンダリングし、そのテクスチャを使用してウィンドウにレンダリングするWebGL OpenGL ESプロジェクトで作業しています。テクスチャFBOテクスチャにレンダリングするときにわずかにオフになる
これは、テクスチャの端に奇妙な光沢があることに気付きました。私がプロジェクトをウィンドウに直接レンダリングに戻すと、ちらつきがなくなります。
FBOはウィンドウと同じサイズに設定され、テクスチャはピクセルのウィンドウピクセルに描画されます。
何が起こっているのですか?それは修正可能ですか?私はFBOテクスチャではGL_NEARESTを、他のテクスチャではGL_LINEARを使用しています。 GL_CLAMP_TO_EDGEは、他の問題の原因になるので、むしろ使用しないでください。
フレームバッファの作成
/* Returns true if a framebuffer object is created */
Display.prototype.createFramebuffer = function(name) {
var gl = this.gl; // Sanity Save
var size = 1024;
var fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
fb.width = size;
fb.height = size;
var tex = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, fb.width, fb.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
var rb = gl.createRenderbuffer();
gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, fb.width, fb.height);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, rb);
if(gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) { return false; }
this.fbo[name] = {fb: fb, rb: rb, tex: tex};
gl.bindTexture(gl.TEXTURE_2D, null);
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
return true;
};
右方向(およびトンの豊富でプッシュした後
/* Draw Geometry */
gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo.world.fb); // Enable world framebuffer
gl.viewport(0, 0, this.window.width, this.window.height); // Resize to canvas
gl.clearColor(0.5, 0.5, 0.5, 1.0); // Opaque grey backdrop
FBOはどのように設定されていますか?画面と同じサイズとフォーマットですか? OpenGLまたはOpenGL-esを使用していますか?関連するコードを表示します。 – BDL
@BDLセットアップコードを追加しました。それは画面と同じサイズとフォーマットです。 OpenGL ESはWebGLが使用するものです。 –
実際にはWebGLですか? Desktop-OpenGL、OpenGL-es、WebGLの3つのバージョンはそれぞれ独自の制限と制限があります。あなたの質問に適切なタグを付けると、あなたの環境に当てはまらない回答が得られなくなります。 – BDL