【问题标题】:How to handle drawing multiple of the same shape in OpenGL ES如何处理在 OpenGL ES 中绘制多个相同形状
【发布时间】:2015-08-04 12:56:44
【问题描述】:

我已经进行了大约几年的编程,并且我非常了解不同语言的语法,但我大部分时间都在使用基本的 Lua 编写程序。我玩过使用 Java 和 C#、DirectX 和 OpenGl 进行游戏开发,但大多数时候我什至不知道其他人可能非常熟悉的术语,例如“着色器”和“VBO”。我听说过他们,但我真的不知道他们的意思,所以请像我五岁一样向我解释如果你有答案。

我正在尝试使用 Open GL ES 2.0 制作一个简单的 Android 游戏,而且我看过很多教程解释如何绘制一个三角形,但并不多。就我而言,我有一个充满三角形的世界,它只是一个真假数组,如果存在真三角形,则将在该位置绘制三角形,如果为假,则不会绘制三角形。我已经做到了,所以它只会绘制三角形,直到它们离开屏幕,但我仍然意识到一个问题,那就是渲染仍然非常慢,大约需要 2 秒才能渲染一帧。

目前,我目前有 1 个三角形类,当它检查一个三角形是否应该属于它所在的位置时,它将为该三角形创建顶点并将它们传递给三角形类,然后创建一个新的三角形对象与那些更新的顶点。现在我可以看到这有多么错误,但老实说,这是我唯一能想到的,因为我对 OpenGL ES 的了解非常有限

我正在寻找的是以一种非常有效的方式在正确的位置以相同的颜色和大小绘制所有这些三角形,这样绘制一帧不需要大约 2 秒。

如果有人有解决方案,谢谢。

【问题讨论】:

标签: android opengl-es shapes


【解决方案1】:

您正在寻找的是实例化绘制调用,这基本上意味着您将发送一个 VBO(顶点缓冲区对象 - 它包含有关网格顶点的所有信息)和一组 MVPM(模型视图投影矩阵 - 这些将您想要对该 VBO 进行的每次绘制的所有转换信息保存到着色器,所有这些都在一个绘制调用中。

不幸的是我们(我现在也在使用 OpenGL Es 2.0)opengl 没有提供这样做的方法。

不管怎样,有这篇关于假冒that的文章,但我觉得太麻烦了。

换句话说,ir 几乎被每个网格的绘制调用所困。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多