- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在从事一个包含大量 Assets 的游戏项目。角色动画非常详细,需要很多帧才能发生。
首先,我创建了大型 spritesheet,其中包含特定角色的所有动画。它在我的 PC 上运行良好,但当我在 Android 平板电脑上测试它时,我注意到它超过了其 GPU 的最大纹理尺寸。我的解决方案是将大型 spritesheet 分解为单独的帧(最坏的情况是 180 帧)并将它们单独上传到 GPU。现在一切似乎都在我需要它工作的任何地方工作。
目前,我使用过的最大动画是一个具有 180 帧且宽度和高度为 407x725 像素的角色。但是,由于我在网上找不到任何关于如何使用 OpenGL 正确渲染 2D 动画的指导,我想问一下这种方法是否有问题。是否有最大数量的纹理可以上传到 GPU?我可以超过 GPU 的 RAM 数量吗?
最佳答案
GPU最高效的方法是将整个sprite sheet作为单个纹理传递给opengl,在绘制时通过调整纹理坐标来选择你想要的帧。您还应该将 Sprite 打包到理想的方形纹理中。减少 GPU 使用的内存总量对性能非常有好处,尤其是。在手机和平板电脑上。
您希望尽可能避免频繁更改绑定(bind)的纹理。理想情况下,您希望绑定(bind)单个纹理,然后将它的点点滴滴渲染到屏幕上,直到您不再需要它为止,然后绑定(bind)不同的纹理并继续。
这样做的原因是 GPU 将努力优化它创建的管道的操作,以处理您提供给它的几何体和您选择的着色器。但是,当您对配置进行重大更改时,例如更改绑定(bind)的纹理或绑定(bind)的着色器,这对优化来说必然有些不透明。一次提供更多的顶点和纹理坐标更好,因为它们基本上可以批量完成,而无需卸载和重新加载资源等。
然而,根据您的目标卡片,您应该记住,纹理的最大尺寸可能为 8192 x 8192 或类似大小。因此,根据您拥有的 Assets ,您可能不得不将它们拆分成多个纹理。
关于c - 使用 OpenGL 和 SDL 逐帧动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419206/
我正在使用 python 加密一些文件,但我在逐 block 读取文件时遇到问题。 有时不会返回最后一个 block 的所有数据。 当文件长度为 307200 字节时,我没有问题。当它的长度为 279
我正在使用 WebRTC 将文件发送到连接的对等方,并且我正在以块的形式发送文件。但是,我无法弄清楚如何让对等方在文件逐块流入时保存/下载文件。 我在网上找到的所有例子都推荐做这样的事情: // se
我用 Tiled 做了一张 map 。它的每一 block 图 block 都尺寸为 32x32 像素,我的主要角色 Sprite 也是。 在我的类(class) Player.cpp 中,我有一些计
我见过一些单页网站,您可以逐 block 滚动,因此您没有无限滚动。 你逐 block 移动。 是否有提供此功能的任何脚本或其他东西? 最佳答案 我自己从未使用过它,所以我无法在代码方面为您提供帮助,
这是一个逐 block 反转文件内容的程序。 #include #include #define BS 12 void reverse(char * buffer, int size) { c
在下面的代码中,有没有办法避免 if 语句? s = 13; /*Total size*/ b = 5; /*Block size*/ x = 0; b1 = b; while(x s)
我正在尝试分割输入图像并逐个对其进行模糊处理,但毕竟对相邻图 block 调用 cv::blur 我得到了边界像素,这与我有一次将 cv::blur 集体应用于整个图像。 Mat upper(im,
我想逐个读取文件。该文件被分成几部分,存储在不同类型的媒体上。我目前所做的是调用文件的每个单独部分,然后将其合并回原始文件。 问题是我需要等到所有 block 都到达后才能播放/打开文件。是否可以在
我有一个包含客户和日期列表的 JSON 文件。 文件看起来像这样: { "Customers": [ { "Customer": "Customer Name Here", "Company"
我的邮件目标是从连接到HTTP服务器的TCP套接字读取数据,然后解析 HTTP响应块(传输编码:分块)-服务器在同一连接上每30秒发送一个块 我附上了我的代码。看起来io.Copy读取第一个块,然后等
我认为自己是一位经验丰富的 numpy 用户,但我无法找到以下问题的解决方案。假设有以下数组: # sorted array of times t = numpy.cumsum(numpy.rando
当我将文件添加到暂存区时,我可以 $ git add my_file -p 然后选择我要暂存的 block 。 有没有办法 merge/挑选一个提交并逐 block 应用它的差异? 谢谢 最佳答案 我
我有一个 mongodb 查询,它获取大约 50,000 个大文档。 这对我的 RAM 来说太多了,因此计算机速度变慢了。 现在我想逐 block 迭代 mongodb 结果。 我想获取前 1000
我不会为 AES 或其他加密打开此线程,因为这是我要用来加密 AES 和其他加密的 key 的内容。我从 StackOverflow 和其他一些网站收集了一些代码,并对其进行了编辑以适合我的程序,但是
我在做一些后台工作时尝试收集所有系统统计数据。例如,我使用以下命令来收集 IO 统计信息: iostat -xty 5 此脚本用于每 5 秒收集一次 I/O 统计信息。所以我的日志会包含很多数据 bl
我需要 php 脚本,用于从 url 到服务器的可恢复文件下载。它应该能够开始下载,然后在捕捉时(30 秒 - 5 分钟)恢复,依此类推,直到完成整个文件。 perl 中有类似的东西 http://c
是否有标准的 Linux 命令可用于逐 block 读取文件?例如,我有一个大小为 6kB 的文件。我想读取/打印第一个 1kB,然后是第二个 1kB ...似乎 cat/head/tail 在这种情
我正在处理大量文件,我想逐 block 处理这些文件,假设在每批处理中,我想分别处理每 50 个文件。 如何使用 Spark Structured Streaming 来实现? 我看到 Jacek L
我正在处理大量文件,我想逐 block 处理这些文件,假设在每批处理中,我想分别处理每 50 个文件。 如何使用 Spark Structured Streaming 来实现? 我看到 Jacek L
我想知道:逐 block 读取 jp2 并将数据存储在缓冲区对象中的预期方法是什么? 现在我正在做类似的事情。 /* note I already created stream and configu
我是一名优秀的程序员,十分优秀!