【发布时间】:2015-08-04 12:56:44
【问题描述】:
我已经进行了大约几年的编程,并且我非常了解不同语言的语法,但我大部分时间都在使用基本的 Lua 编写程序。我玩过使用 Java 和 C#、DirectX 和 OpenGl 进行游戏开发,但大多数时候我什至不知道其他人可能非常熟悉的术语,例如“着色器”和“VBO”。我听说过他们,但我真的不知道他们的意思,所以请像我五岁一样向我解释如果你有答案。
我正在尝试使用 Open GL ES 2.0 制作一个简单的 Android 游戏,而且我看过很多教程解释如何绘制一个三角形,但并不多。就我而言,我有一个充满三角形的世界,它只是一个真假数组,如果存在真三角形,则将在该位置绘制三角形,如果为假,则不会绘制三角形。我已经做到了,所以它只会绘制三角形,直到它们离开屏幕,但我仍然意识到一个问题,那就是渲染仍然非常慢,大约需要 2 秒才能渲染一帧。
目前,我目前有 1 个三角形类,当它检查一个三角形是否应该属于它所在的位置时,它将为该三角形创建顶点并将它们传递给三角形类,然后创建一个新的三角形对象与那些更新的顶点。现在我可以看到这有多么错误,但老实说,这是我唯一能想到的,因为我对 OpenGL ES 的了解非常有限
我正在寻找的是以一种非常有效的方式在正确的位置以相同的颜色和大小绘制所有这些三角形,这样绘制一帧不需要大约 2 秒。
如果有人有解决方案,谢谢。
【问题讨论】:
-
我建议在 Google 上搜索 GLES 教程(例如 learnopengles.com/android-lesson-one-getting-started)。一个可能有用的例子是 Android Breakout,尽管使用了未优化的代码(看不到 VBO)——github.com/fadden/android-breakout,它仍能达到 60fps。整整两秒的渲染时间非常极端。