问题标签 [texture-atlas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何处理多个图集文件
我在名为 myImages.atlas 的文件夹中有一堆图像。这些图像放在一起将占用超过 2048x2048 的尺寸。根据 Apple 文档,我预计 XCode 会自动将其分解为多个文件。
但是当我尝试编译它失败并出现错误:
有谁知道 XCode 是否可以处理这个场景,如果可以,我可能做错了什么?
ios - 纹理图集中的纹理未加载或出现
由于某些奇怪的原因,我的纹理图集中的纹理没有加载。我不知道为什么。
下面是我通常如何声明/编码纹理
}
我的纹理图集的名称是 sprites.atlas 任何帮助将不胜感激,谢谢
unity3d - 在 Unity 中使用自定义着色器正确平铺图集纹理
这有点复杂,但我希望它归结为一个非常简单的问题。所以事情是这样的:我使用 Unity 在运行时从一个 bsp 文件生成地图游戏对象,该文件有一大堆顶点、面、uvs、纹理引用等。创建的网格完全按照应有的方式出现,并且所有纹理都很好。但是有一个问题,使用如此多的材质创建的网格如此之多,导致许多绘制调用使程序变慢。因此,我搜索了一种减少绘图调用的方法,并找到了解决方案。将所有网格组合成一个大网格,并通过组合所有使用的纹理来创建纹理图集。结合网格效果很好,结合纹理效果也很好。然后我遇到了uv映射的问题。所以我从 NVidia 白皮书中找到了一个解决方案来制作一个自定义着色器,它使用 tex2d 函数使用 uv 位置及其导数从纹理中插入纹素。我认为这会奏效,但我的网格有非常奇怪的三角形,我认为它们正在破坏这个解决方案。在下图中,您可以看到网格合并时与分离时的区别:
这是我在着色器中用于设置模型颜色的代码:
如您所见,我添加了第二个 UV,它是原始 UV 的非平铺版本。我通过使用 frac() 函数来做到这一点,但在 C# 代码中而不是在着色器中。由于纹理可以有不同的大小,我必须在进入着色器之前计算 UV,因为当时我可以访问纹理大小。
这是我用来计算 2 个 UV 的代码:
数组 uvReMappers 是使用 Texture2D 函数 PackTextures() 时创建的 Rect 数组。
抱歉花了这么长时间,但这是我的问题:为什么纹理会扭曲。是因为网格的三角化方式还是因为我编写自定义着色器的方式。最后我该如何解决它。
感谢您的时间。很抱歉写了这么多,但我以前从未发布过问题。我总是在网上找到几乎所有问题的答案,但我一直在寻找如何解决这个问题的几天。我觉得它可能太具体而无法找到答案。我希望我已经提供了足够的信息。
opengl - OpenGL 4.4 纹理图集工件
我正在使用 OpenTK 用 C# 编写一个小型 OpenGL 平铺地图渲染器。为了渲染图块,我首先创建了一个顶点数组,然后创建了一个顶点缓冲区。
接下来,我遍历所有图块并根据图块类型将两个三角形添加到具有相应顶点(纹理坐标、颜色、位置)的顶点缓冲区。
为了避免昂贵的纹理切换,我使用了一个包含所有平铺纹理的大纹理,名为纹理图集。
但是我在使用纹理图集时遇到了问题。
问题是,如果我缩小并四处移动相机,我会在某些图块的边缘出现一些伪影。
我在互联网上找到的解决方案是......
- ...用半像素校正计算纹理坐标。
- ...使用纹理数组
我尝试的第一个,但没有达到预期的效果(下面有更多解释)。
第二个我不知道如何使用纹理数组,我在互联网上找不到太多关于纹理数组的信息。
我使用了以下纹理过滤器:
带半像素校正的纹理坐标计算:
没有半像素校正的纹理坐标计算:
sprite-kit - TextureAtlas RGBA4444_COMPRESSED 在 ios7.1 中不起作用
我创建了一个 SpriteKit 游戏,并尝试按照 Apple 最佳实践使用 RGBA444_COMPRESSED 纹理图集。但是,在 iOS7.1 / iPhone4 上,来自纹理图集的图像在屏幕上显示为两倍大小,并且无法正确渲染。
我找不到任何解决方法。知道如何解决这个问题吗?
android - libgdx 处理来自 textureatlas 的精灵
如果我调用sprite.getTexture().dispose();
从 aTexture
中检索到的a ,则TextureAtlas
整个屏幕都会变黑。
坠落的物体
我已经设法解决了这个问题,方法是不调用从课堂dispose
上texture
检索到的sprite
内容。FallingObject
我通过声明NULL
精灵来清除引用:
但现在我害怕内存泄漏!这是处置 Sprite 的正确方法吗?
ios - SpriteKit 加载纹理的第一次延迟,即使预加载也是如此
这是我的问题:尽管做了这些:
1) 预加载我所有的纹理图集
2) 将我的地图集存储在单例中,这样它们就不会被 ARC 处理掉
3) 将我所有的动画数组存储在 Singleton 中
仅在第一次将敌人添加到我的场景时,SpriteKit 仍然会出现短暂的“滞后抖动”。纹理绘制一次后,当该纹理添加到场景中时,它不再滞后。最终在屏幕上绘制纹理时,可以看到内存在增加,看起来它们没有被预加载。
我目前正在使用启动时在我的 AppDelegate 中预加载我的所有纹理图集......
primaryAtlas 是存储在 Singleton 中的所有 4 个图集的数组。
让我指出一些我已经尝试过的事情以及我当前的设置是什么。
1)我的动画的帧数组存储在单例中,并从位于不同单例中的 Atlases 中获取它们的图像。他们曾经在同一个单身人士中。
2)我尝试将我所有的纹理存储在一个单例中,这些纹理都是从地图集中加载的。但是目前我的动画被存储了,而我的单个纹理是从图集中获取该纹理的函数。
3)我已经关闭了敌人的所有动画(不要运行SKAction)并且当他们被添加而不是动画时仍然会发生抖动。
我已经尝试解决这个问题很长时间了,老实说似乎没有解决方案。
我在这里找到了一个类似的 StackOverflow 问题,但没有答案:Spritekit: First texture draw slow (preloaded)
arrays - SKTextures 未加载到 iPod Touch 上的数组中
我的 SpriteKit 游戏遇到了一个非常奇怪的问题。它在我的 iPad 和 iOS 模拟器上运行良好,但是当我在 iPod Touch 上运行它时,出现错误。我找到了错误的来源,在这里,我尝试访问纹理数组中的一个项目:
错误基本上是说 Frames[0] 不存在,实际上,在 iPod Touch 上,当我打印数组中的项目数时,什么都没有。在其他设备上,阵列具有它应具有的所有纹理。
这是我将纹理图集中的一些纹理加载到动画数组中的位置和方式:
当它在除 iPod Touch 之外的任何其他设备上运行时,我的图集中的纹理会加载到数组 Frames 中。但是,在 iPod Touch 上,没有纹理加载到数组中。这是纹理图集的图像:链接到纹理数组的图像
同样,纹理完美地加载到阵列中,并在 iPad 和 iPhone 模拟器以及真正的 iPad 设备上完美地制作动画。它只是在 iPod Touch 上不起作用,并且该错误导致应用程序无法加载。iPod touch 运行 iOS 9,就像其他设备一样。
任何帮助表示赞赏!谢谢!
libgdx - 纹理图集文件中索引的含义
我正在关注纹理图集上的 libgdx 教程。这是纹理图集文件的摘录。参数是什么意思,index
在什么情况下对程序员有用?所有纹理区域都有它,并且在所有纹理区域中都是相同的,即-1。