gpt4 book ai didi

opengl - glVertexAttribPointer,改变顶点属性布局

转载 作者:行者123 更新时间:2023-12-04 04:46:16 27 4
gpt4 key购买 nike

我正在编写一个 glsl 1.3+ 查看器,我需要经常更改着色器的源而不是删除然后重新创建......
但是,opengl 的手册中没有给出一些关于重新定义顶点属性布局的信息。

上一次调用会发生什么

    glVertexAttribPointer( posAttrib, 2, GL_FLOAT, GL_FALSE, 0, 0 );

何时使用另一个 posAttrib 记忆它?
如何从顶点属性数组中“取消绑定(bind)”着色器输入变量?
如何使相同的 posAttrib 指向顶点属性数组中的不同位置?

最佳答案

回答您关于上次调用 glVertexAttribPointer 的问题,我相信属性指针刚刚被 glVertexAttribPointer 的最新调用重新分配.

这种用法没有“解除绑定(bind)”。您只是更改了引用,没有创建额外的内存。最后一个输入参数是您提供的 posAttrib 的偏移量作为VBO。如果您的 posAttrib包含顶点坐标、法线和纹理坐标,那么您可以执行以下操作,假设您定义了一个新类型 AttributedVertex与 8 floats在其中(3个顶点,3个法线,2个纹理坐标)

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(AttributedVertex), 0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(AttributedVertex), (void *)(3*sizeof(GLfloat));
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(AttributedVertex), (void *)(6*sizeof(GLfloat));

您的顶点着色器应具有 3 个属性,例如
attribute vec3 inPosition;
attribute vec3 inNormal;
attribute vec2 inTexCoord;

对应于那些顶点属性。

关于opengl - glVertexAttribPointer,改变顶点属性布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18123733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com