![]()
纹理和图像之间有什么区别.如果我们使用SKSpriteNode添加图像,那么使用SKTexture的原因是什么,或者如果我们使用SKTexture和Texture Atlases,那么我们为什么要在SKSpriteNode中添加要添加的图像.
混乱是存在的,两者之间有什么区别.
解决方法 SKSpriteNode是一个节点,它在给定位置的屏幕上显示(渲染)SKTexture,并具有可选的缩放和拉伸.SKTexture是一个存储类,包含适合渲染的格式的图像文件,以及纹理仅引用图像/纹理图集的较小部分的框架矩形等附加信息.
拆分两者的一个原因是你通常想要使用相同的SKTexture或同一个SKTextureAtlas绘制多个精灵.这避免了必须在每个精灵的内存中保留相同图像的副本,这很容易变得过高.例如,100 Sprite使用的4 MB纹理仍然使用4 MB内存,而不是400 MB.
更新评论回复:
术语’纹理’dates back to the 70s.
纹理是专门用于渲染的图像的内存表示.常见的图像格式(PNG,JPG,GIF等)不适合图形芯片渲染.纹理是一种“图像格式”,图形硬件和渲染器(如OpenGL)可以理解并标准化.
如果将PNG或JPG加载到纹理中,则图像的格式会发生变化.它的颜色深度,Alpha通道,方向,内存布局,压缩方法可能会发生变化.可以引入附加数据,例如mip-map级别,其是按比特缩小一定百分比的原始纹理,以便用相同纹理的较低分辨率版本绘制更远的多边形,这减少了混叠并加速了渲染.
这只是表面上的问题.要记住的重要一点是,渲染引擎不直接处理图像,它们总是转换为纹理.这主要与渲染过程的效率有关.
无论何时直接在Sprite Kit等API中指定图像,例如spriteWithImagenamed:那么内部会发生的事情是渲染器首先检查是否存在具有给定图像名称的现有纹理,如果是,则使用它.如果还没有加载这样的图像,它将加载图像,将其转换为纹理,并将图像名称存储为关键以供将来参考(这称为纹理缓存).
总结以上是内存溢出为你收集整理的iphone – 混乱:SKSpriteNode和SKTexture的区别.全部内容,希望文章能够帮你解决iphone – 混乱:SKSpriteNode和SKTexture的区别.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)