[英]Pass array of Java vertex objects to OpenGL entry points
我开始将游戏从iOS移植到Android,但遇到了问题。
在iOS上的标准工作流中,我会将顶点信息存储在一系列结构中:
typedef struct{
float x, y, z;
} Vector3;
Vector3 verts[];
之类的东西。
然后,当需要将我的顶点数据发送到GL时,我将指向verts数组,并将其视为浮点数组。
glVertexAttribPointer(Vertex_POSITION, 3, GL_FLOAT, 0, 0, (void *)verts);
如何在Java中执行此操作?
我试图制作一个Vector3类并将其中的一些放入数组中,但是当我尝试将该数组填充到GL中时会引发错误。
按照您的方向,我认为这不能直接起作用。 当您在Java中拥有一个对象数组(例如Vector3
类的数组)时,该数组包含对这些对象的引用序列 ,并且每个对象都分配在单独的内存块中。
您需要传递给诸如glVertexAttribPointer()
或glBufferData()
类的OpenGL入口点的是包含数据的连续内存块 。 对象数组没有这种布局,因此根本无法直接使用它。
您有多种选择:
float[]
或FloatBuffer
。 Android中的Java入口点将缓冲区作为参数,因此使用缓冲区是最简单的方法。 您应该能够在Android OpenGL示例中找到大量示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.