Questions tagged «texture-atlas»

5
如何避免纹理图集中出现纹理渗漏?
在我的游戏中,有一个由方块构成的Minecraft类地形。我从体素数据生成顶点缓冲区,并使用纹理图集显示不同块的外观: 问题在于,远方立方体的纹理会与纹理图集中的相邻图块进行插值。这会导致多维数据集之间出现颜色错误的线条(您可能需要以完整尺寸查看下面的屏幕截图,以查看图形缺陷): 现在,我使用这些插值设置,但尝试了每种组合,即使GL_NEAREST没有mipmapping也无法提供更好的结果。 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 我还尝试在纹理坐标中添加偏移量,以选择较小的瓷砖区域,但是由于不想要的效果取决于到相机的距离,因此无法完全解决问题。在很远的距离,条纹仍然会出现。 我该如何解决这种纹理渗出?由于使用纹理图集是流行的技术,因此可能有一种通用的方法。遗憾的是,由于注释中解释的某些原因,我无法更改为其他纹理或纹理阵列。


1
最大纹理大小Android:2048x2048的哪些设置?
我想在我的游戏中使用2048 x 2048的纹理图集,并且我想警告用户“过低”的设备不要下载游戏。 有了如此大小的纹理图集,我对ANDROID有什么要求? 该图像(来源:https ://stackoverflow.com/questions/10392027/recommended-limit-for-memory-management-in-cocos2d)显示了IPHONE的要求,而对于ANDROID:最低为512Mo,频率为1GHz的情况是这样的正确的要求? 感谢您的回答

2
由于或尽管有大量图像,我是否应该使用Spritesheets?
我正在开发2D游戏,并且我有很多精灵。我使用3D动画和模型将其渲染为2D,从而使它们看起来像“ Fallout”或“ Diablo”。比手工绘制还容易,哈哈。 我已经不得不将帧速率降低到15fps,这是我可以降低的最低帧速率,而又不会使它们看上去不连贯。但是,由于24帧的平滑度令人难以置信,这令人感到悲伤。 我这样做的原因有两个: 1)减少硬盘空间。图片越少,我的整体游戏就越小。 2)减少RAM消耗。加载的图像越少,我越有可能避免导致RAM限制过大的问题。 但是,如果有一种方法可以压缩HDD空间和RAM中的图像,我会这样做。我之前已经对其进行过测试,从RGBA8888到RGBA5555的赠品在质量上几乎没有任何变化,而在TexturePacker程序中转换为RGBA4444时仅受到了一点打击。我目前不这样做,因为SFML似乎使用相同数量的内存,而不管它是哪种类型的.PNG图像。我研究了如何以不同的方式加载它,但是未能找到关于该主题的任何内容。 我已经阅读了很多有关如何处理2D视频游戏的内容。共识是压倒性的:将您的Sprite打包成更大的纹理以获得出色的性能!因此,我使用TexturePacker将微小的Sprite打包到更大的Spritesheet中。 但是,我计划每个角色有10-15个动画,移动5个方向,每个动画15-40帧(平均24个)。具有15个动画,5个方向,每个动画平均24帧;即每个字符1800个单独的帧。如果装在一张精灵纸中,则只能显示75张图像。(每个动画每个方向一个精灵表。15* 5) 对于游戏中一个巨大的老板角色,我不能使用Spritesheet,而必须编程一种仅一次加载一张图像的方法。我不知道我是否可以这样做以提高性能。 对于角色,我已经将它们打包在一张spritesheet中。对于单个角色来说,这似乎在大多数时间都有效,尽管有时会停顿。但是,我将其归因于我构思错误的代码,该代码交换了纹理,而不是预加载该角色的所有纹理。 如果我要预加载纹理,则对于精灵表来说是有意义的。我只能想象为每个角色预加载1800个小图像是一个坏主意。 但是,我想一次将它们流式传输到内存中是非常快的,所以我只需要一次在内存中有一个图像。这是否意味着在任何给定时刻我只会让每个字符消耗几个KB而不是45 + MB? 我想这会破坏我的性能,因为流传输必须非常快(每秒15张图像进出内存和渲染,每秒),尽管这些图像非常小-加载字符Spritesheets可能是一个更好的主意进入内存。但是无论如何,我将不得不为我的大老板角色编写一个类似于单图像流的渲染系统。 我一直在尝试,但这不是一个简单的过程。特别是考虑到我正在研究游戏引擎的其他部分,而这些部分现在还不处理图形。

1
纹理图集与数组纹理:CPU和GPU处理它们的方式有何不同,如何影响性能?
Unity 5.4(目前处于beta版)将带来一个期待已久的功能(自2013年起),即array-textures-与OpenGL的ArrayTexture相同。但是,在对数组纹理和纹理图集进行了一些阅读之后,我仍然不太了解CPU和GPU在使用它们方面的技术差异。 因此,更具体地说,我想请您解释一下CPU和GPU如何处理纹理图集和纹理阵列之间的主要差异,最重要的是,这些差异如何影响性能和内存处理(例如纹理阵列如何比纹理图集等具有更高的性能)。 如果由于不幸的封闭源而缺乏有关Unity实现的技术细节,那么我很乐意提供有关OpenGL.s ArrayTexture的答案。

1
精灵表纹理拾取相邻纹理的边缘
我有一个自定义的精灵例程(openGL 2.0),该例程使用一个简单的精灵表(我的纹理彼此水平排列)。 因此,例如,这是一个带有2个简单纹理的测试精灵表: 现在,我在创建openGL Sprite对象时要做的就是在其图集中指定帧的总数,并且在绘制时指定要绘制的帧。 然后计算出从何处获取纹理的方式: 将所需的帧数除以总帧数(以获得左坐标) 然后将1除以总帧数,然后将结果加到上面计算出的左手坐标上。 这似乎确实有效,但有时会遇到问题。比如说,我想在下面画X,我得到........... 我听说过在每个纹理之间放置1 px的“填充”,但是有人可以确切解释它是如何工作的吗?我的意思是,如果这样做,它肯定会取消获得纹理的计算。 如果我简单地在所拾取的纹理中包括填充(因此使用空白边框绘制精灵),那么这肯定会导致碰撞检测问题吗?(即,当透明零件发生碰撞时,使用边界框时,精灵可能会发生碰撞)。 如果有人可以解释,将不胜感激。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.