java - 如何在java、android中初始化巨大的 float 组?

标签 java android arrays opengl-es

我正在创建一个 opengl android 应用程序。我试图渲染一个顶点超过 50,000 个的 opengl 对象。

float itemVerts [] = {
// f 231/242/231 132/142/132 131/141/131
0.172233487787643f, -0.0717437751698985f, 0.228589675538813f,
0.176742968653347f, -0.0680393472738536f, 0.2284149434494f,
0.167979223684599f, -0.0670168837233226f, 0.24286384937854f,
// f 131/141/131 230/240/230 231/242/231
0.167979223684599f, -0.0670168837233226f, 0.24286384937854f,
0.166391290343292f, -0.0686544011752973f, 0.241920432968569f,......

还有更多......但是当我在函数或构造函数中执行此操作时,我在编译时收到错误,方法 () 的代码超出了 65535 字节限制。所以我想知道是否有其他方法可以做到这一点。

我尝试将值存储在文件中并将其读回。但是对于如此巨大的记录的字符串解析的IO操作是非常慢的。需要超过 60 秒。这不好。

如果有其他方法可以做到这一点,请告诉我。感谢您的时间和帮助。

最佳答案

But when i do this in a function or constructor i get a error while compiling that The code of method () is exceeding the 65535 bytes limit. So I was wondering if there is a different way to do this.

将其放在构造函数之外(作为类变量或字段)?如果这没有改变,只需将其设为常量即可。如果它确实发生变化,无论如何将其设为常量并将其复制到构造函数中。

I tried storing the value in file and reading it back. But the IO operation, with string parsing of such huge record is very slow. Takes more than 60 sec. Which is not good.

如果您决定将其保存在外部文件中并读入,请不要将其作为字符串读取,只需以某种方式将其序列化(Java 序列化、 Protocol Buffer 等)。

关于java - 如何在java、android中初始化巨大的 float 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032994/

相关文章:

java - 更新 dockerfile 镜像而不下载依赖项

java - 为什么 java.util.Map 值可以是原始数组而不是单个原始值

android - 使用 ionic 框架处理收到的短信

javascript - 始终将 JSON 解析为数组

javascript - 将 int 插入数组时自动将其转换为字符串

java - 如何检查 HikariCP 连接池是否在 Java 中工作?

java - Swing,如何正确更新UI

android - 为什么我的主要 Activity 没有看到我的底部导航引用?

java - 调用 setStatusBarColor ANDROID

java - 如何创建动态二维数组并在其中存储打乱数组