Articles of 压缩

texconv使用BC1或BC4生成具有相同大小的纹理

根据msdn ,BC1块压缩格式是用于3色通道和1位alpha通道的图像,而BC4是用于1色通道和无alpha通道的图像。 使用相同的RGBAinput图像,我期望这个命令的输出 texconv.exe -f BC1_UNORM diffuse.tga 要大于这个其他命令的输出 texconv.exe -f BC4_UNORM diffuse.tga 由于生成的DDS应该只有一个信道的信息,但是两个DDS的尺寸完全相同。 唯一的区别是,BC4压缩的一个出现红色(如预期)。 这是预期的产出?

我应该压缩游戏数据文件吗?

我正在打包我的游戏资源到一个单一的文件。 我select了格式,但我不知道是否应该使用压缩。 我明白可能的优点和缺点: 压缩意味着更less的安装时间(很less发生)。 压缩意味着光盘和下载过程中的游戏规模较小。 压缩意味着每次游戏资源caching机制决定从档案中cachingRAM中的一些数据时应该提取数据。 我错过了什么? 其他游戏开发者通常会做什么?为什么?

游戏(X-Plane)启动/启动时间/性能

我为我的问题使用X-Plane,但它也可能涉及到其他飞行模拟器或模拟游戏。 当开发一个插件最让我困扰的是应用程序的启动时间来testing我的插件function,所以我想知道如何提高模拟器的启动速度。 首先,我删除了所有额外的风景,并将加载的文件减到最小,这给了我34秒的启动时间,这已经相当快了。 为了进一步提高时间,我认为从内存中运行整个应用程序是有意义的,我安装了ubuntu 64位,并在内存(ram-disk)中创建了一个2GB的tempfs文件系统。 当从这个内存文件系统启动x-plane时,它仍然需要30秒。 任何人都可以解释什么应用程序在启动过程中需要这么多的处理时间? 我假设对象和环境的graphics位图被压缩在磁盘上,因此它们必须先在内存中解压缩,然后才能在opengl中使用。 这将解释启动时间。 如果确实需要首先对位图进行解压缩,那么通过使用多核可以提高时间? 如果应用程序是multithreading的,并且有四个内核,那么时间将被四分之一还是在GPU上执行此处理? 任何可以帮助我更好地理解计算机游戏启动过程的解释都是非常值得赞赏的,因为我有兴趣提高系统的整体性能,因此我需要更好地理解瓶颈(RAM,CPU,GPU,磁盘(SSD / Raid),操作系统,库,…)。

encryption的lz4档案

我想创建一个包含所有游戏资源的游戏数据存档,现在我可以使用zlib或lz4来创建一个简单的zip压缩文件types的东西,但是我需要更多的安全性,没有人有任何关于添加AESencryption的建议整个东西? 我也在想,也许我需要像MPQ存档types的系统,我可以在游戏引擎中挂载这个东西,它可以作为访问内部单个文件的接口,允许stream式传输? 任何想法赞赏,谢谢。

在webgl中压缩16位原始数据

我有一个3D体积,每个体素是16位。 有没有反正我可以使用某种压缩来存储数据,所以我可以使用较less的videoRAM? Webgl支持不同的compressiosn,如果你启用它们的扩展名,但我可以使用它们的一个通道的数据? 像WEBGL_compressed_texture_s3tc只支持rgb和rgba数据: COMPRESSED_RGB_S3TC_DXT1_EXT COMPRESSED_RGBA_S3TC_DXT1_EXT COMPRESSED_RGBA_S3TC_DXT3_EXT COMPRESSED_RGBA_S3TC_DXT5_EXT 如果它在webgl中不可能,在OpenGL中是否支持用一个通道压缩16位值?

在LibGDX中使用压缩(ETC1)纹理

我使用标准的安卓工具来压缩PNG纹理,并使用gzip进行存档: /android-sdks/tools/etc1tool texture.png –encodeNoHeader gzip texture.pkm 然后我尝试加载它: FileHandle file = …; ETC1.ETC1Data data = new ETC1.ETC1Data(file); ETC1TextureData td = new ETC1TextureData(data, false); Texture texture = new Texture(td); 但是我得到ETC1Data (FileHandle pkmFile)构造函数中的java.nio.BufferOverflowException : in = new DataInputStream(new BufferedInputStream(new GZIPInputStream(pkmFile.read()))); int fileSize = in.readInt(); compressedData = BufferUtils.newUnsafeByteBuffer(fileSize); int readBytes = 0; while ((readBytes = in.read(buffer)) != -1) { […]

压缩与未压缩的纹理差异?

有什么不同? 据我所知,压缩纹理会加快速度,因为PCIe总线必须传输较less量的数据,互连是GPU的主要延迟问题。 为此我确定。 我不确定的,这是我主要想要的答案是,GPU在飞行中解压缩纹理,还是显示未压缩的纹理? 换句话说,使用压缩纹理有什么视觉冲击? GPU自动解压缩它们? 这是不是随着使用的压缩algorithm而变化,还是它是一个GPU的具体事情? 提前致谢。

困惑于DXT / DDS压缩和颜色深度

我已经完成了对DDS / DXT压缩的研究,信息是“无处不在”的。 甚至在颜色深度上find好的,有组织的,合理的信息也是相当困难的。 但是,很显然,DXT5将图像更改为… RGB565? 好的,所以我限制在16位色和RGB565。 说得通。 我还读到,自己转换它,select图像中的颜色,可以停止甚至完全防止细节的丢失。 Nvidia的Photoshop插件似乎将质量降低到比其他程序在将图像转换为RGB565时更糟糕的程度。 特别是,我使用了一个绝妙的工具,可以让我select颜色。 我改变了我的形象,实际上只包括128种颜色。 这小于RGB565允许的256。 但是,Nvidia的Photoshop插件似乎忽略了这些颜色,并select了自己的 – 就好像我从来没有改变过这个图像。 如果我把它转换成24位Truecolor的DDS,它是一样的。 为什么Nvidia的工具不保留我的颜色表? 为什么它仍然是有损的,在Nvidia的256色显着更糟,当我的128色版是如此优越,失去了质量或细节? 目前,我正在使用“COLOR QUANTIZER”,这是我发现的最佳工具,可以在不影响图像质量的情况下降低颜色数量。 我可能有点困惑,因为显然TexturePacker的RGBA5555是20位,在许多框架中不受支持,这使我认为RGB565和RGBA5555都是16位。 (Dur!在谷歌RGBA5555的存在让我不知所措)但是,我认为我可以很容易地实现RGBA4444(16位alpha),因为我的色彩可以在COLOR QUANTIZER中降级到128色,RGBA4444支持256色。 当我使用TEXTUREPACKER或其他程序时,质量比COLOR QUANTIZER差。 这个程序在我的经验中简直是优越,而且我一直在用所有可用的工具来寻找最好的工具。 我的图片:PNG与预乘alpha。 在COLOR QUANTIZER中可以降解为128种颜色,然后丢失任何质量。 阿尔法是一个非常大的要求,所以RGB565和DXT1是不可能的。 这些都是小精灵,小于100×200。 我的目标:低内存消耗和压缩。 显然,处理这个问题的最好方法是DDS / DXT5,这样我就可以将纹理压缩在内存中。 虽然我可以处理RGBA4444,但它只是一个2:1压缩,而DXT5是4:1。 我更喜欢使用DDS格式。

将Flashanimation转换为Silverlight

我最近在Flash中为Deen Games制作了一个animation标志。 我需要在所有的Silverlight游戏中显示。 问题是,标志约为8秒(205帧)。 如果我将所有的图像都导出为JPEG格式,结果就是3.5MB的内容(比游戏本身更多)。 我试图导出为各种格式(PNG,JPG,GIF等),但没有足够的小。 我有什么select? 我怎样才能将这些并入我的游戏,而不会浪费文件大小? 总是有这样的select:“用animation/旋转/等等来重新创建它,就像现在这样),但是这是很多工作,我宁愿避免这样做。 不,只是一个静态图像不够好! 编辑:导出为电影(AVI,MPEG)将不起作用,因为XNA目前不支持电影。

为什么使用压缩如zlib?

压缩和encryption是不同的东西AFAIK,所以为什么即使使用压缩,如果你仍然需要解压缩,这只是为了减less分布大小或有其他原因吗?