gpt4 book ai didi

c++ - 相当于 glBegin/glEnd 的现代 OpenGL 是什么

转载 作者:太空狗 更新时间:2023-10-29 20:26:30 41 4
gpt4 key购买 nike

我正在为 OpenGL 构建图形 API,它基于基本的调用绘制图形样式。基本上,不是将数据存储到 GPU 中,而是使用它的句柄调用它,而是提供信息来绘制每次更新时应该绘制的内容。我知道它很慢,但它很简单,而且适用于非性能关键型应用程序。不管怎样,有没有现代的 glBegin/glEnd 等价物?它不必调用每个顶点,而是一种我可以在每次更新时发送数据而无需将顶点存储在 gpu 中的方法?

最佳答案

您几乎回答了自己的问题。

is there any modern equivalent to glBegin/glEnd? It doesn't have to a call for every vertex, but a way where I can send the data each update, without storing the vertices in the gpu?

基本上没有,现代的方式是使用VAOsVBOs (和 IBO)。

如果您要更改 VBO 中的数据,请记住您可以更改 glBufferData 中的 mode 参数.

  • GL_STREAM_DRAW - 数据存储内容将被修改一次,最多使用几次。

  • GL_STATIC_DRAW - 数据存储内容将被修改一次并多次使用。

  • GL_DYNAMIC_DRAW - 数据存储内容将被反复修改并多次使用。

然后不使用 GL_STATIC_DRAW,而是使用 GL_DYNAMIC_DRAW 与使用 GL_STATIC_DRAW 相比,这将大大提高 FPS,尽管这取决于数据量,以及更改数据的频率。但是尽量限制它,比如如果您实际上不需要更新缓冲区中的数据。

您可以在 OpenGL Wiki 上阅读更多关于不同缓冲区的信息.

关于c++ - 相当于 glBegin/glEnd 的现代 OpenGL 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628935/

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