2016-10-10 54 views
0

我不知道copyteximage2D是如何工作的, 我想在WebGL的状态机的任期解释:copyteximage2D在状态机方面

感谢GMAN我有这样的:

gl = { 
    activeTextureUnit: 0, 
    textureUnits: [], 
}; 

gl.activeTexture = function(unit) { 
    this.activeTextureUnit = unit - this.TEXTURE_0; 
}; 

gl.bindTexture = function(bindPoint, texture) { 
    var textureUnit = this.textureUnits[this.activeTextureUnit]; 
    switch (bindPoint) { 
     case this.TEXTURE_2D: 
     textureUnit.texture2D = texture; 
     break; 
     case .... 
    } 
}; 
gl.copyTexImage2D = function(target, level, iformat, x, y, w,h,b) { 
..... 
..... gman please your code here thanks very much!!! 
..... 
} 

回答

0

copyTexImage2D副本从当前framebuffer或canvas到当前纹理单元的给定目标

gl = { 
    activeTextureUnit: 0, 
    textureUnits: [ 
    { gl.TEXTURE_2D: null, gl.TEXTURE_CUBE_MAP: null, ... }, 
    { gl.TEXTURE_2D: null, gl.TEXTURE_CUBE_MAP: null, ... }, 
    { gl.TEXTURE_2D: null, gl.TEXTURE_CUBE_MAP: null, ... }, 
    { gl.TEXTURE_2D: null, gl.TEXTURE_CUBE_MAP: null, ... }, 
    ... 
    ], 
    framebufferBindPoints: { 
    gl.FRAMEBUFFER: gl.canvas.internalFramebuffer, 
    }, 
}; 

gl.bindFramebuffer = function(bindPoint, framebuffer) { 
    this.framebufferBindPoints[bindPoint] = 
    framebuffer ? framebuffer : gl.canvas.internalFramebuffer; 
}; 

gl.copyTexImage2D = function(target, level, iformat, x, y, w,h,b) { 
    var textureUnit = this.textureUnits[this.activeTextureUnit]; 
    var texture = textureUnit[target]; 
    var framebuffer = this.framebufferBindPoints[gl.FRAMEBUFFER]; 
    // copy from framebuffer into texture 
} 
+0

不错!所以,如果,在gl.copyTex之前..我把'fbPV2 = gl.createFramebuffer(); gl.bindFramebuffer(gl.FRAMEBUFFER,fbPV2); gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,pvTex2,0); '所以pvTex2会复制到绑定到当前纹理单元的纹理? –

+0

是的'pxTex2'将成为您决定复制TexImage2D到任何纹理的源代码。 – gman

+0

好!现在我面临着另一个问题:pvTex2是一个浮动纹理。它似乎可能是问题?或者可能是问题在于我没有在copyTexImage2D之后制作generatemimap(或设置过滤器)? –