在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,我已经能够为位置,法线和纹理创建单独的浮点数组,或者为我指定偏移量的所有它们创建单个浮点数组,但是我我们找不到一种方法告诉我使用对象数组的缓冲区。这可能吗?或者我自己需要生成一系列花车?
答案 0 :(得分:1)
不,据我所知,这在Java中是不可能的。
在C和C ++中,它在对象数组中起作用,对象在内存中连续对齐,其成员变量也是如此。因此,您有一个大的连续数据块传递给GL。
Java通过引用存储对象 - 所以你宁愿拥有一个引用数组。实际对象在内存中不是连续对齐的。