首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >THREE.js:从THREE.WebGLRenderTarget获取数据

THREE.js:从THREE.WebGLRenderTarget获取数据
EN

Stack Overflow用户
提问于 2012-11-20 14:21:23
回答 3查看 2.8K关注 0票数 4

图像可以用作材质中的贴图,并且具有名为“THREE.Texture”的属性。图像可以用作材质中的贴图,但没有名为“THREE.WebGLRenderTarget”的属性。

如何从WebGLRenderTarget中检索纹理数据?我想将它保存到一个文件中(或者,如果不可能,则保存为一个字节数组)。

EN

回答 3

Stack Overflow用户

发布于 2016-07-30 03:22:00

现在有了新的功能:

代码语言:javascript
运行
AI代码解释
复制
WebGLRenderer.readRenderTargetPixels ( renderTarget, x, y, width, height, buffer )

将像素数据从renderTarget读取到传入的缓冲区中。Buffer应该是使用新的Uint8Array( renderTargetWidth * renderTargetWidth *4)实例化的Javascript Uint8Array,以说明大小和颜色信息。这是gl.readPixels的包装器。

票数 3
EN

Stack Overflow用户

发布于 2012-11-20 15:13:14

我自己还没有尝试过,但是应该可以使用传递呈现目标的(私有) __webglTexture属性的WebGL的readPixels函数来获得一个字节数组。

票数 2
EN

Stack Overflow用户

发布于 2021-07-22 13:51:39

将THREE.WebGLRenderTarget转换为2D canvas的代码片段:

代码语言:javascript
运行
AI代码解释
复制
// allocate RGBA array

let pixels = new Uint8Array(_floor_width * _floor_height * 4);

let can = document.createElement("canvas"), ctx, ctxData, color;

// _floor_target is instance of THREE.WebGLRenderTarget of dimension _floor_width x _floor_height and _renderer is THREE.WebGLRenderer

_renderer.readRenderTargetPixels(_floor_target, 0, 0, _floor_width, _floor_height, pixels);

can.width = _floor_width;
can.height = _floor_height;

ctx = can.getContext('2d');
ctxData = ctx.getImageData(0, 0, can.width, can.height);

for (var fy = 0; fy < _floor_height; fy++) {
    for (var fx = 0; fx < _floor_width; fx++) {

        // retrieve exact rendered pixel

        color = [
            pixels[fy * _floor_width * 4 + fx * 4 + 0],
            pixels[fy * _floor_width * 4 + fx * 4 + 1],
            pixels[fy * _floor_width * 4 + fx * 4 + 2],
            pixels[fy * _floor_width * 4 + fx * 4 + 3]
        ];

        // put pixel to canvas image data (this whole thing might be done much faster)

        ctxData.data[(fy * can.width * 4) + (fx * 4) + 0] = color[0];
        ctxData.data[(fy * can.width * 4) + (fx * 4) + 1] = color[1];
        ctxData.data[(fy * can.width * 4) + (fx * 4) + 2] = color[2];
        ctxData.data[(fy * can.width * 4) + (fx * 4) + 3] = color[3];
        
    }
}

// update canvas image data

ctx.putImageData(ctxData, 0, 0);

document.body.appendChild(can);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13475209

复制
相关文章
laravel中数据库在哪个文件中配置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113857.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
1.4K0
探讨 | 功耗应该在哪个corner 看?
为了寻到一个相对有说服性的答案,老驴试图查了T 跟A 的文档,在说到功耗计算时,都只简略得一带而过:在typical corner 看功耗,没有实验数据没有理论依据。又在谷歌上搜索了一番,找到了一些数据,同时请教了一些前辈,也得到了一些十分有用的信息。将这些信息揉和到一起,来探讨一下功耗应该在哪个corner 看?
老秃胖驴
2019/08/29
4.9K0
探讨 | 功耗应该在哪个corner 看?
Class 对象在执行引擎中的初始化过程
装载 装载是指 Java 虚拟机查找 .class 文件并生成字节流,然后根据字节流创建 java.lang.Class 对象的过程。
老马的编程之旅
2022/06/22
1.1K0
Class 对象在执行引擎中的初始化过程
笔记06 - Class对象在执行引擎中初始化的过程
一个class文件被加载到内存中需要经过三个步骤:装载、链接、初始化。其中链接可以细分为验证、准备、解析三个步骤。
码农帮派
2020/12/29
8860
PHP获取指定函数定义在哪个文件中及行号
当调试开源的代码时,希望查看某个函数的定义,那么就需要定位其位置。特别是有的项目中,函数会有多个地方都有定义,那么如果我想知道当前调用的这个函数是在哪里定义的,可以用下面这个方法。
大江小浪
2019/02/22
1.2K0
Go中的面向对象 我算是彻底玩明白了
前面一篇,分享了Go中的函数和方法之间有什么区别、如何使用,今天来分享一篇关于面向对象的知识。
兔云小新LM
2023/08/09
1.3K0
Go中的面向对象 我算是彻底玩明白了
索引groupBox中的RadioButton到配置文件中,初始化自动索引——c#
如下代码,我在关闭窗体是把RadioButton的当前索引值存到ini文件中        ridioButtonIndex = 0; foreach (Control con in groupBoxClear.Controls) { if (con is RadioButton) { if ((con as RadioButton).Checked)
vv彭
2021/01/05
7310
索引groupBox中的RadioButton到配置文件中,初始化自动索引——c#
从ceph对象中提取RBD中的指定文件
之前有个想法,是不是有办法找到rbd中的文件与对象的关系,想了很久但是一直觉得文件系统比较复杂,在fs 层的东西对ceph来说是透明的,并且对象大小是4M,而文件很小,可能在fs层进行了合并,应该很难找到对应关系,最近看到小胖有提出这个问题,那么就再次尝试了,现在就是把这个实现方法记录下来 这个提取的作用个人觉得最大的好处就是一个rbd设备,在文件系统层被破坏以后,还能够从rbd提取出文件,我们知道很多情况下设备的文件系统一旦破坏,无法挂载,数据也就无法读取,而如果能从rbd中提取出文件,这就是保证了即使文件系统损坏的情况下,数据至少不丢失
用户2772802
2018/08/06
5.1K0
js中的对象
面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流的编程范式。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
用户4940950
2019/03/26
7.1K0
JavaScript 中的对象
JavaScript 中的对象,Object,可以简单理解成“名称 - 值”对(而不是键值对:现在,ES 2015 的映射表(Map),比对象更接近键值对),不难联想 JavaScript 中的对象与下面这些概念类似:
徐建国
2023/02/23
2.6K0
JavaScript 中的对象
python中的对象
对象:程序中使用的所有值都是对象,对象由内部属性和方法组成  这些方法会执行与数据相关的各种操作,前面操作列表类型数据时 我们已经用过了方法:
py3study
2020/01/13
1.2K0
Servlet中的对象
ServletRequest和ServletResponse是Servlet#service() 方法的两个参数,一个是请求对象,一个是响应对象,可以从ServletRequest对象中获取请求数据,可以使用ServletResponse对象完成响应。
星哥玩云
2022/09/14
5120
Servlet中的对象
Pandas中的对象
安装并使用PandasPandas对象简介Pandas的Series对象Series是广义的Numpy数组Series是特殊的字典创建Series对象Pandas的DataFrame对象DataFrame是广义的Numpy数组DataFrame是特殊的字典创建DataFrame对象Pandas的Index对象将Index看作不可变数组将Index看作有序集合
用户3577892
2020/06/11
2.8K0
关于监听输入功能应该在PlayerController还是Pawn中
PlayerController原本就是充当Pawn与玩家之间的接口,接受输入来控制Pawn。而且Pawn在关卡中可能会因为条件触发被销毁(如角色血量降低到0,死亡,那么就会销毁Pawn)。而在游戏进行过程中PlayerController却不会被销毁,一直都是同一个Controller。所以监听输入、分数记录等需要在游戏过程中一直存在的功能就应该放在PlayerController中,而不是Pawn中。所以最后应该是Controller来指示Pawn怎么做,Pawn执行,而不是将所有逻辑放在Pawn中。 而且,在多人游戏,或者游戏角色能够自由切换模型(例如躲猫猫模式)的游戏模式中,如果直接将输入监听功能集成在Pawn中,那么写起来会非常不方便。
太阳影的社区
2021/10/15
9770
Spring 中如何控制对象的初始化时间(延迟加载,强制先行加载)
当标注了@Lazy 注解时候,不会看到 init user… 的输出。只有当首次使用 User 类的时候,才会被初始化。
水货程序员
2018/11/13
3.6K0
Go中的面向对象(多态) 我算是彻底玩明白了
上一篇,我们分享了在Go中是如何实现面向对象,文章中对面向对象的三大特性中的继承、封装,做了一个理论和实践的总结,这一篇继续分享关于另外一个特性,那就是多态。
兔云小新LM
2023/08/09
9430
Go中的面向对象(多态) 我算是彻底玩明白了
我应该在什么时候使用 Apache Druid
许多公司都已经将 Druid 应用于多种不同的应用场景。请访问 使用 Apache Druid 的公司 页面来了解都有哪些公司使用了 Druid。
HoneyMoose
2021/07/24
7280
我应该在什么时候使用 Apache Druid
JavaScript中的内置对象--Number对象
JavaScript中的内置对象有以下6个: 1.Number对象 2.Boolean对象 3.Data对象 4.Math对象 5.String对象 6.Array对象 在JavaScript中,数字是一种基本的数据类型,同时JavaScript还支持Number这个对象,该对象是原始数值的包装对象。在必要的时候,JavaScript会自动地在原始数据和对象之间转换。 创建一个Number对象的2中不同方法: var num1=Number("123"); var num2=new Number("456"
八哥
2018/01/18
2.8K0
java中page的对象,page对象[通俗易懂]
page对象是JSP九大内置对象之一。JSP全称JavaServerPage,是一种动态网页技术标准,以Java语言作为脚本语言。在JSP中预先定义了九个内置对象,这个九个内置对象不需要声明就可以在脚本代码和表达式中任意使用,九个内置对象分别是:request、response、session、application、out、pageContext、config、page、exception。
全栈程序员站长
2022/09/18
2.5K0
java中page的对象,page对象[通俗易懂]
Vue中修改数组中的对象
Vue中修改数组中的对象
Java架构师必看
2021/09/14
4.9K0

相似问题

我应该在我的.csproj文件中修改哪个文件?

11

我应该在pyroCMS中更改哪个.htaccess文件?

40

我应该在哪个时区初始化QDateTime?

10

我应该在哪个源文件中定义函数

26

我应该在哪个对象上同步?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档