作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类代表我的四边形的所有数据,每个类都有一个位置和颜色。我怎样才能将该类的数组传递给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);
关于Java LWGJL opengl 缓冲区数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60917290/
我有一个类代表我的四边形的所有数据,每个类都有一个位置和颜色。我怎样才能将该类的数组传递给opengl?我试过这个: GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, V
我最近发现自己在使用 Linux 计算机并且到目前为止我很喜欢它。 但是,我遇到了一个问题,我真的不知道来源。我正在尝试制作一个在 eclipse 中使用 lwjgl 的 java 项目(我在 Win
我是一名优秀的程序员,十分优秀!