저는 씬을 텍스처로 렌더링 한 WebGL OpenGL ES 프로젝트에서 작업하고 있습니다. 그런 다음 텍스처를 사용하여 윈도우에 렌더링합니다.텍스처 좌표가 FBO 텍스처로 렌더링 될 때 약간 꺼져 있습니다.
텍스처의 가장자리가 이상하게 빛나는 것을 확인했습니다. 프로젝트를 창으로 직접 렌더링으로 되 돌리면 반짝 거리는 소리가 사라집니다.
FBO가 창과 동일한 크기로 설정되고 텍스처가 픽셀의 창 픽셀로 그려집니다.
이 문제의 원인은 무엇입니까? 고칠 수 있습니까? FB_N 텍스처에 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;
};
t의 오른쪽 방향으로 푸시 (그리고 충분히 후 장면
/* 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을 사용하고 있습니까? 관련 코드를 표시하십시오. – BDL
@BDL 설치 코드가 추가되었습니다. 화면과 크기 및 형식이 같습니다. WebGL이 사용하는 것과 같은 OpenGL ES. –
그래서 실제로 WebGL입니까? Desktop-OpenGL, OpenGL-es 및 WebGL의 세 가지 버전 모두 자체 제한 사항이 있습니다. 올바른 질문에 태그를 달면 자신의 환경에 적용되지 않는 답을 얻지 못하게됩니다. – BDL