例如,在WebGL中渲染浮点纹理的支持级别方面存在一些混淆.OES_texture_float扩展似乎并不强制要求它,因为可选支持FLOAT纹理作为FBO附件(不推荐使用),但看起来有些供应商继续实施它.因此,我的基本理解是渲染到浮点纹理实际上可以在非ES桌面环境中工作.我无法直接从浮点渲染目标中读取.
我的问题是,是否有一种方法可以使用WebGLContext :: readPixels()调用和Float32Array目标从浮点纹理中读取?提前致谢.
附件是一个成功读取字节纹理的脚本,但浮动纹理失败:
<html>
<head>
<script>
function run_test(use_float) {
// Create canvas and context
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var gl = canvas.getContext("experimental-webgl");
// Decide on types to user for texture
var texType, bufferFmt;
if (use_float) {
texType = gl.FLOAT;
bufferFmt = Float32Array;
} else {
texType = gl.UNSIGNED_BYTE;
bufferFmt = Uint8Array;
}
// Query extension
var OES_texture_float = gl.getExtension('OES_texture_float');
if (!OES_texture_float) {
throw new Error("No support for OES_texture_float");
}
// …Run Code Online (Sandbox Code Playgroud) ATHREE.Texture可以用作材质中的贴图,并且具有称为“图像”的属性。ATHREE.WebGLRenderTarget可以用作材质中的贴图,但不具有称为“图像”的属性。
我如何从 a 检索纹理数据WebGLRenderTarget?我想将其保存到文件中(或者,如果不可能,则保存为字节数组)。