当前位置: 首页 > 知识库问答 >
问题:

glVertexAttribPointer-OpenGLES/OpenGL

董砚
2023-03-14

我正在尝试将一个OpenGLES代码移植到OpenGL,但我对GlvertexatTribPointer有点困惑。下面是OpenGLES代码的一部分:

//DRAWING OBJECT
// Get buffers from mesh

Mesh mesh = obj.getMesh();
FloatBuffer _vb = mesh.get_vb();
ShortBuffer _ib = mesh.get_ib();
short[] _indices = mesh.get_indices();

//the vertex info
_vb.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
gl.glVertexAttribPointer(gl.glGetAttribLocation(shader.get_program(), "aPosition"), 3, gl.GL_FLOAT, false,TRIANGLE_VERTICES_DATA_STRIDE_BYTES, _vb);
gl.glEnableVertexAttribArray(gl.glGetAttribLocation(shader.get_program(), "aPosition"));
// Draw with indices
gl.glDrawElements(gl.GL_TRIANGLES, _indices.length, gl.GL_UNSIGNED_SHORT, _ib);

那么如何使用OpenGL创建缓冲区呢?因为在OpenGLES中,顶点是直接从glVertexAttribArray函数中的当前数组缓冲区中获取的。我尝试使用glBufferData,但它不起作用。

共有1个答案

萧秋月
2023-03-14
public static FloatBuffer createFloatBuffer(float[] coords) {
    // Allocate a direct ByteBuffer, using 4 bytes per float, and copy coords into it.
    ByteBuffer bb = ByteBuffer.allocateDirect(coords.length * SIZEOF_FLOAT);
    bb.order(ByteOrder.nativeOrder());
    FloatBuffer fb = bb.asFloatBuffer();
    fb.put(coords);
    fb.position(0);
    return fb;
}
 类似资料:
  • 因此,我们有两条glVertexAttribPointer线,因为我们在顶点着色器中定义了两个变量。所以基本上我们定义了这两个变量所指向的。因此,第一个glVertexAttribPointer定义第一个变量“position”是一个顶点,每个顶点有三个浮动坐标。第二个glVertexAttribPointer定义了第二个变量“texcoord”,它是一对纹理坐标,每个坐标都是浮动的。所以,如果到

  • 在Android上的OPenGLES 1中有一个滚动背景的最简单/最好的方法是什么?

  • 我在glvertexattributepointer上出错,可能是因为该值或任何(?)有人知道如何解决这个问题吗?

  • 当我通过LWJGL学习OpenGL时,我一直在浏览LWJGL wiki上的教程。具体来说,这个。 我的问题是,尽管我已经复制了该代码、调用调用、函数对函数,但需要切换两个顶点属性指针(所以代码如下所示: 将其切换为位置索引为1而颜色索引为0,可以像预期的那样进行很好的渐变渲染。但是,如果我在切换索引的情况下运行它(我认为它应该工作的方式,我得到了这个: 显然,在研究了一段时间后,位置和颜色数据已经

  • 本文向大家介绍Android OpenGLES如何给相机添加滤镜详解,包括了Android OpenGLES如何给相机添加滤镜详解的使用技巧和注意事项,需要的朋友参考一下 滤镜介绍 目前市面上的滤镜有很多,但整体归类也就几样,都是在fragment shader中进行处理。目前滤镜最常用的就是 lut滤镜以及调整RGB曲线的滤镜了。其他的类型变更大同小异。 动态滤镜的构建 为了实现动态下载的滤镜,

  • 我是OpenGL新手,我正在尝试加载一个。将obj文件导入我的Android应用程序,并使用OpenGLES 2显示它。对象被渲染。但里面有一些空间,如下图所示。我该怎么解决这个问题? 这是真实的物体。 这是我的代码(附加:我在MaxST即时跟踪器中使用这个) (ObjLoader类来自此处) 这是我的画法