gpt4 book ai didi

ios - 从 GLBuffer 中删除顶点

转载 作者:行者123 更新时间:2023-11-29 04:15:03 26 4
gpt4 key购买 nike

如果我将顶点添加到数组缓冲区,如下所示,我将如何删除最后添加的顶点?

// Append vertex to array buffer
static inline void addVertex(NSUInteger *length, NISignaturePoint v) {
if ((*length) >= maxLength) {
return;
}

GLvoid *data = glMapBufferOES(GL_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
memcpy(data + sizeof(NISignaturePoint) * (*length), &v, sizeof(NISignaturePoint));
glUnmapBufferOES(GL_ARRAY_BUFFER);

(*length)++;
}

最佳答案

OpenGL 缓冲区对象不是这样工作的。 glMapBuffer{OES} 为您提供特定大小的快速内存的映射,该映射是在使用 glBufferData{OES} 初始化缓冲区对象时定义的。您不能只是超出该对象或映射的限制并期望附加数据。您需要调整缓冲区对象的大小,然后重新初始化它。

此外,OpenGL 也不在“顶点”实体中组织缓冲区对象。它只是无形的数据,您必须为其填充含义(对 glVertexAttribPointer & Co. 进行适当的调用)。

由于对 OpenGL{-ES} 工作方式的误解,您的代码非常错误,甚至无法修复。

关于ios - 从 GLBuffer 中删除顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847937/

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