有没有办法在带有 Java 的 Android 的 OpenGL ES 2.0 中使用顶点缓冲区中的对象?
Posted
技术标签:
【中文标题】有没有办法在带有 Java 的 Android 的 OpenGL ES 2.0 中使用顶点缓冲区中的对象?【英文标题】:Is there a way to use objects in the vertex buffer in Android's OpenGL ES 2.0 with Java? 【发布时间】:2015-12-13 21:20:16 【问题描述】:在 C++ 中,我可以定义一个顶点,例如
class Vertex
public:
Vertex();
~Vertex();
//Position
float x, y, z, w;
//Normals
float nx, ny, nz, nw;
//Textures
float tu, tv;
;
然后创建一个由上述 Vertex 对象组成的数组的顶点缓冲区。我会告诉着色器位置、法线和纹理的偏移量是多少,着色器将能够正确映射这些值。
在 android 上的 Java 中,使用 OpenGL ES 2.0,我已经能够为位置、法线和纹理创建单独的浮点数组,或者为我指定偏移量的所有它们创建单个浮点数组,但我没有t 找到了一种方法来告诉缓冲区我正在使用一个对象数组。这可能吗?还是我需要自己生成一个浮点数组?
【问题讨论】:
【参考方案1】:不,据我所知,这在 Java 中是不可能的。
在 C 和 C++ 中,这就像在对象数组中一样工作,对象在内存中连续对齐,它们的成员变量也是如此。所以你有一大块连续的数据要传递给 GL。
Java 通过引用存储对象——所以你宁愿拥有一个引用数组。实际对象在内存中没有连续对齐。
【讨论】:
谢谢。我就是这么想的,但我希望我错了,并且有办法。以上是关于有没有办法在带有 Java 的 Android 的 OpenGL ES 2.0 中使用顶点缓冲区中的对象?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在Android上将arraybuffer从javascript传递到java?
android工程下不能运行java main程序的解决办法
有没有办法在 Android 项目中将 Eclipse 与 Gradle 集成?