Java LWGJL opengl缓冲区数据

简单的编码器

我有一个类,代表我四边形的所有数据,每个类都有一个位置和一种颜色。我如何将该类的数组传递给opengl?我尝试了这个:

GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBO);

GL15.glBufferData(VBO, MAX_QUADS, GL15.GL_DYNAMIC_DRAW);
ByteBuffer data = GL15.glMapBuffer(GL15.GL_ARRAY_BUFFER, GL15.GL_WRITE_ONLY, null);

GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

但是现在我不知道如何将数组解析为字节,因此无法传递给GPU。这是数组:

Quad.Data[] vertexData = new Quad.Data[MAX_QUADS];

这是带有位置和颜色的类:

public class Data {
    public Vector3f position;
    public Vector4f color;
}
杰克狗狗

您可以将数据类的浮点值放在FloatBuffer中,然后使用glBufferData()或glBufferSubData(如果已经分配了缓冲区)将其传递给OpenGL。

使用您的代码,它看起来类似于:

//Creating the FloatBuffer and store the Data
//n = number of floats you want to store, in this case 7 for each Quad;
FloatBuffer buffer = MemoryUtil.memAllocFloat(n);

//Do this for each "Data", thus for each Vertex of your Quad
buffer.put(position.x).put(position.y).put(position.z).put(color.r).put(color.g).put(color.b).put(color.a);
//Don't forget flipping the Buffer before passing it to OpenGL, otherwise you will get an EXCEPTION_ACCESS_VIOLATION
buffer.flip();

//Binding the VBO and allocate it
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER);
GL15.glBufferData(VBO, MAX_QUADS, GL15.GL_DYNAMIC_DRAW);

//Sending the Buffer to OpenGL
GL15.glBufferSubData(0, buffer);

//Unbind the Buffer
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

清除Java中的数据报缓冲区

来自分类Dev

使用Java协议缓冲区的批量Google数据存储区查询

来自分类Dev

Java UDP数据报包-切片数据以适合缓冲区大小

来自分类Dev

Java中的缓冲区大小

来自分类Dev

Java协议缓冲区-反射

来自分类Dev

Java中的非阻塞缓冲区

来自分类Dev

Java中的循环缓冲区?

来自分类Dev

Java缓冲区策略学习

来自分类Dev

Java协议缓冲区-消息大小

来自分类Dev

缓冲区下溢异常Java

来自分类Dev

Java中的循环缓冲区?

来自分类Dev

Java OutputStream 缓冲区大小

来自分类Dev

Java:如何定义缓冲区大小以从FileChannel读取所有数据

来自分类Dev

Java 映射字节缓冲区 - 缓冲区中的垃圾值

来自分类Dev

OpenGL ES2.0 glReadPixels()从渲染缓冲区通过帧缓冲区读取数据

来自分类Dev

OpenGL缓冲区问题

来自分类Dev

避免OpenGL缓冲区中的重复数据

来自分类Dev

OpenGL 4向顶点缓冲区提供数据

来自分类Dev

当缓冲区数据来自堆时,opengl不会绘制

来自分类Dev

动态打包OpenGL顶点缓冲区对象的数据

来自分类Dev

缓冲区如何在Java IO中工作?

来自分类Dev

Java中的并发读/写缓冲区字节[]

来自分类Dev

绘制自定义缓冲区类[Java]

来自分类Dev

Java-什么时候释放直接缓冲区?

来自分类Dev

将复杂的Java类建模为协议缓冲区

来自分类Dev

Java-大小适合char缓冲区

来自分类Dev

Java中的并发读/写缓冲区byte []

来自分类Dev

为什么Java本机缓冲区会变慢?

来自分类Dev

Java中的字符串缓冲区问题