使用 glDrawArrays() 时如何获取渲染所有顶点的 VBO 的长度?

发布于 2024-09-04 07:09:17 字数 122 浏览 7 评论 0原文

我在函数中创建了一个 VBO,我只想返回 VBO id。

我在另一个函数中使用 glDrawArrays,我希望它绘制 VBO 中的所有顶点,而无需传递顶点数。 VBO 还包含纹理坐标数据。

谢谢。

I create a VBO in a function and I only want to return the VBO id.

I use glDrawArrays in another function and I want it to draw all the vertices in the VBO without needing to also pass the number of vertices. The VBO also contains texture coordinate data.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2024-09-11 07:09:17

你需要退货,抱歉。有关 VBO 的数据可能位于远离 CPU 的地方并且访问速度很慢,因此您需要在本地保存所需的任何数据。

You need to return it, sorry. Data about the VBO might live somewhere far away from your CPU and be slow to access, so you need to keep locally whatever data you need.

橙幽之幻 2024-09-11 07:09:17

也许它对您的应用程序没有用,您可以使用 glGetBufferParameteriv 带参数 GL_BUFFER_SIZE:返回缓冲区对象的字节数。

很难说这是解决方案,因为您应该知道缓冲区元素的内部格式(实际上,它的大小以字节为单位),以便获得组成缓冲区对象的元素数量。

当然,最好的解决方案是将大部分信息保留在表示缓冲区对象的类中,但正如我从您的问题中了解到的那样,这很难实现。

Maybe it could be not useful for you application, you can use glGetBufferParameteriv with argument GL_BUFFER_SIZE: it returns the number of bytes of the buffer object.

It's difficoult to say that this is the solution, since you should know the internal format of the buffer element (and indeed, its size in bytes), in order to have the number of elements composing the buffer object.

For sure, the best solution is to keep most information in a class representing the buffer object, but as I can understand from your question this is hard to implement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文