В настоящее время я занимаюсь разработкой Touhou-esque Bullet Hell Shooter. Экран будет полностью заполнен маркерами (поэтому я хочу, чтобы здесь работали экземпляры), но я хочу, чтобы это работало на более старом оборудовании, поэтому в настоящий момент я делаю что-то вроде этого, нет цветов, текстур, и т.д. пока, пока я не выясню это.
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
- это структура, в которой есть все вкусности для рендеринга, и ничего особенного, кроме нескольких векторов.
Я довольно новичок в OpenGL, но я, по крайней мере, слышал и пробовал все, что можно сделать, хотя и не говорил, что мне это хорошо. Эта игра является 2D-игрой, я перешел с SDL на Opengl, потому что она облегчит некоторые необычные эффекты. Очевидно, что SDL работает по-другому, но у меня никогда не было этой проблемы при его использовании.
Это сводится к тому, что я явно что-то не так делаю, так как я могу правильно реализовать инстансинг для старого оборудования (OpenGL 1.x)? Кроме того, дайте мне какие-либо советы по повышению производительности.