OpenGL ES 2.0:使用 VBO 的 glDrawElements 之前所需的命令

发布于 2024-12-02 19:19:03 字数 518 浏览 0 评论 0原文

我已经设置了一个带有顶点和索引数据的顶点缓冲区对象(VBO)。我还创建了一个 GLprogram 来使用自定义着色器,因此我在代码中调用 glUseProgram

我的顶点数据每一帧都会发生变化,因此我向两个 glBufferData 调用提供了 GL_STREAM_DRAW(一个用于顶点数据,一个用于索引)。

当顶点数据发生变化时,我使用 glBufferSubData 来修改它们。在每一帧,我想从第一个顶点绘制到第 N 个顶点,其中 N 是一个变化的值。

我的问题是:每次调用 glDrawElements 时必须调用哪些命令?理想情况下,我只想调用 glDrawElements<出于性能原因,/code> 在每个帧中都有自己的内容。

我正在仔细阅读《OpenGL ES 2.0 编程指南》这本书,但它没有告诉我每次绘制时必须使用哪些命令,以及哪些命令只需要调用一次。

I've setup a Vertex Buffer Object (VBO) with vertex and index data. I've also created a GLprogram to use custom shaders, so I call glUseProgram within my code.

My vertex data changes every frame, so I've supplied GL_STREAM_DRAW to my two glBufferData calls (one for vertex data, one for indices).

I use glBufferSubData to modify regions of my vertex data when they change. At each frame I want to draw from the first vertex to the Nth, with N being a changing value.

My question is: which commands must I call every time that I call glDrawElements? Ideally I'd like to simply call glDrawElements on its own in each frame, for performance reasons.

I'm poring over the book "OpenGL ES 2.0 Programming Guide" but nowhere does it tell me which commands I must use every time I draw, and which I need to call only once.

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

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

发布评论

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

评论(1

平生欢 2024-12-09 19:19:03

glDrawElements 提交几何图形。如果您使用的是 VBO,那么它会使用当前绑定的 GL_ELEMENT_ARRAY_BUFFER 中的条目来索引 GL_ARRAY_BUFFER 的相关部分或为每个属性绑定的缓冲区中的条目。

如果您不更改任何其他绑定,则无需重复除 glDrawElements 之外的任何调用。如果在当前调用 glDrawElements 的位置复制并粘贴该线以使其出现两次,则所有几何图形的绘制次数将是以前的两倍。

glDrawElements submits geometry. If you're using VBOs then it uses entries in the currently bound GL_ELEMENT_ARRAY_BUFFER to index entries in the relevant portions of the GL_ARRAY_BUFFER or buffers bound for each attribute.

If you don't change any other bindings then is no need to repeat any call other than glDrawElements. If, where you currently call glDrawElements you copy and paste that line to appear twice, all your geometry will be drawn twice as many times as before.

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