В настоящее время я разрабатываю игру с шутер-шутером в стиле Touhou-esque. Экран будет полностью заполнен пулями (так что instancing - это то, что я хочу здесь), но я хочу, чтобы это работало на более старом оборудовании, поэтому я делаю что-то в соответствии с этим на данный момент, нет цветов, текстур, и т. д. пока я не понял это.Opengl 2D подсказки производительности
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 работает по-разному, но у меня никогда не было этой проблемы с его использованием.
Это сводится к этому, я явно делаю что-то неправильно здесь, так как я могу правильно реализовать instancing для старого оборудования (OpenGL 1.x)? Кроме того, дайте мне советы по повышению производительности.
Профилирование профилей с помощью инструмента GDebugger? Это скажет вам узкое место. – Pubby
Используйте как можно больше вызовов на дрожжах, попробуйте поместить все в один VA (сделайте все переводы и т. Д. Самостоятельно на стороне процессора). – harold