我目前正在开发一款类似东方Project的弹幕射击游戏。屏幕将被完全填充着子弹(所以我需要使用实例化技术),但是我希望这个游戏可以在旧硬件上运行,所以我现在正在按照以下方式进行,然而现在还没有颜色、纹理等内容,直到我解决这个问题。
glVertexPointer(3, GL_FLOAT, 0, SQUARE_VERTICES);
for (int i = 0; i < info.centers.size(); i += 3) {
glPushMatrix();
glTranslatef(info.centers.get(i), info.centers.get(i + 1), info.centers.get(i + 2));
glScalef(info.sizes.get(i), info.sizes.get(i + 1), info.sizes.get(i + 2));
glDrawElements(GL_QUADS, 4, GL_UNSIGNED_SHORT, SQUARE_INDICES);
glPopMatrix();
}
因为我希望它可以在旧硬件上运行,所以我试图避免使用着色器等内容。上面的设置对我失败了约80个多边形。我希望从这里至少获得几百个。"info"是一个struct结构,其中包含渲染所需的所有好东西,除了一些向量外,没有什么特别的。
我对OpenGL还很陌生,但我至少听说并尝试过可以做的所有事情,虽然不表示我擅长它。这个游戏是一个2D游戏,我从SDL切换到Opengl,因为它可以更容易地创建一些花哨的效果。显然,SDL的工作方式不同,但我从未在使用它时遇到过这个问题。
归根结底,很明显我在这里做错了什么,那么我如何正确实现老式硬件(OpenGL1.x)的实例化?此外,请给我任何提高性能的提示。