如何在Unity3D中高效地捕获当前桌面和跨平台?

dk14

我有一个用于Oculus Rift的简单Unity3D场景,想要增加向用户展示自己的桌面的能力(从主监视器)。我发现可以将其渲染到Texture2D,但是如何有效捕获桌面呢?

实际上,我需要提供类似http://www.vrdesktop.net/的内容,该内容允许用户在VR中查看其监视器的内容。但是我需要将其实现为Unity3D的库。那么最好的方法是什么?

PS最好有一个跨平台的解决方案,至少是Windows和Linux / Mac。

dk14

此功能有效(至少适用于Windows):

Texture2D tex = new Texture2D (200, 300, TextureFormat.RGB24, false);
Rectangle screenSize = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
Bitmap target = new Bitmap (screenSize.Width, screenSize.Height);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(target)) {
  g.CopyFromScreen (0, 0, 0, 0, new Size (screenSize.Width, screenSize.Height));
}
MemoryStream ms = new MemoryStream ();
target.Save (ms, ImageFormat.Png);
ms.Seek (0, SeekOrigin.Begin);

tex.LoadImage (ms.ToArray ());

renderer.material.mainTexture = tex;

但是这里的效率值得怀疑-每个帧都转换为PNG,另一方面,使用CopyFromScreen捕获效果很好。

(局限性)如Mono文档中所述:“在Win32和X11上可用(但在Cocoa和Quartz上不可用)”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Unity3D:跨平台视频流?

如何在Python中高效地进行字节对编码bigram计数和替换?

如何在Python 2.7中高效,优雅地创建目录和子目录?

如何在Java中高效地编码大量/多个敌人的生成和碰撞检测

如何在 Eloquent 中高效地批量更新給定一組鍵和值

如何在Python中高效且递增地argsort向量?

如何在CUDA中高效地打包位?

如何在大型Cassandra集合中高效地查询数据?

如何在 TensorFlow 中高效地实现这个简单的结构

如何在 bash 中高效地迭代大量数字?

代码转换在Unity 3d和Titan等跨平台工具中如何发生

如何在Unity3D中动态地将GameObject在LineRenderer和空GameObject之间居中?

使用Soom-La来自Unity3D的跨平台IAP

如何在Python指针中高效高效地迭代数组?

如何在SQL Server中以特定值结尾的大型表中高效地查找行?

如何在Java中从许多字符串中高效地创建字符串

如何在 WooCommerce 中高效地从电子邮件限制中获取优惠券

如何在Cloud Firestore中高效地获取集合及其子集合的所有文档

如何在C ++中高效地在地图中创建地图

如何在R中高效地重命名列表列表中的元素?

如何在Hadoop中高效地将大数据集划分为多个小文件

如何在C ++中高效地生成排序均匀分布的随机数?

如何在Go中高效,便捷地解析一条简单消息?

如何在Matlab中高效/便捷地计算许多矢量的A内积(即双线性形式)?

如何在Python中高效地计算矩阵乘积的稀疏值?

用相应的标签替换句子中的代词、名词、动词和形容词,我如何在 Python 中高效地做到这一点?

如何在 Unity3D 中在 X 轴和 Z 轴上进行拖放?

如何在Unity3D中设置和使用资产捆绑包版本?

如何在Unity3D和Maya上使用GameTextures.com的纹理?