使用 OpenGL 在屏幕上绘制多个对象的基本方法

发布于 2024-12-15 02:09:56 字数 140 浏览 0 评论 0原文

我想知道 OpenGL 中的基本动画是如何完成的。在我的代码中,我目前在 VBO 中插入 2 个形状的所有顶点。然后我选择某些顶点(例如形状的 1 个顶点,并将它们的“x”位置更改 +1)。然后我重新绘制图像。这是在Opengl中操纵多个对象位置的正确方法和想法吗?

I was wondering how basic animation is done in OpenGL. In my code I currently insert all vertices for 2 shapes in a VBO. Then I select certain vertices ( shape's 1 vertices for example and change their "x" position by +1). Then I re-draw the image. Is this the correct way and idea of manipulating multiple object's position in Opengl?

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

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

发布评论

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

评论(1

卖梦商人 2024-12-22 02:09:56

答案是这取决于你的顶点代表什么。如果您需要使它们代表的模型变形,那么您必须修改它们的坐标。但是,如果模型保持其形状,则可以使用模型视图矩阵来移动对象。

如果您当前对独立移动的多个形状的顶点使用 1 次绘制调用,这意味着您必须使用不同的模型视图矩阵对每个形状进行 1 次绘制调用。

然而,这种方法可能会减慢渲染速度,具体取决于您绘制的内容。如果您有许多独立移动的简单形状(例如粒子系统),则通过执行许多绘制调用会获得较差的性能,而您的方法会更好。如果适用于您的情况,一种可能更好(而且更高级)的方法是使用顶点着色器根据数学公式移动顶点。

还有许多其他因素会影响渲染时间,但小渲染批量大小是最重要的。

我建议你看看 OpenGL 红皮书第 3 章,了解更多信息矩阵。本书的其余部分对于着色器和 VBO 来说已经过时了,但我认为这部分很好。

The answer is it depends on what your vertices represent. If you need to deform the model they represent, then yes you have to modify their coordinates. However, if the model retains its shape, you can use the modelview matrix to move the object.

If you currently use 1 draw call with the vertices of multiple shapes that move independently, this means you will have to make instead 1 draw call per shape with different modelview matrices.

This approach can slow down your rendering however depending on what you draw. If you have many simple shapes that move independently (e.g. a particle system), you will get poor performance by performing many draw calls and your approach is better. A potentially even better one (and more advanced), if it applies to your case, is to use the vertex shader to move the vertices according to a mathematical formula.

There are many other factors that affect rendering time, but small rendering batch size is high on the list.

I suggest you take a look at the OpenGL red book chapter 3 for more info on matrices. The rest of the book is getting out of date with shaders and VBOs, but that part is good in my opinion.

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