2015-04-22 5 views
-1

Я просто застрял в текстурировании своих кубов - я искал веб и понял, что единственный способ дать кубу 6 разных текстур (с glDrawElements) - создать около 24 индексов. Он все же быстрее, чем просто glDrawArrays, но он выглядит довольно нелогично и ужасно медленным. Я понимаю, что цель glDrawElements - иметь дело со сложными моделями, где очень мало индексов имеют разные текстурные коорды. Но, я все еще довольно смущен, потому что glDrawElements дал мне повышение производительности (без каких-либо эффектов, только окраска шейдеров) примерно с 50-67 мс с 10 000 кубов (glDrawArrays), до 25-33 мс с 100 000 кубов.Оказание тысяч текстовых кубов

Мой вопрос: я просто должен принять его, или есть еще какой-то способ преодолеть это?

+0

вместо текстурирования поверхности по поверхности вы можете попробовать текстуру с текстурой Cubemap, что-то вроде [это] (https://www.evl.uic.edu/aej/525/pics/cubemap-diagram.jpg). –

+0

Почему вы ожидаете, что 'glDrawElements' будет медленнее? Это почти никогда не бывает, даже когда никакие вершины не разделяются вообще. – derhass

ответ

0

Я не знаю, что вы хотите архивировать, но вы можете попытаться уменьшить число ob вершин в сцене. Это будет намного быстрее. Я думаю, если ваш куб нуждается в более чем одной текстуре, вы можете сохранить их в атласе текстуры и назначить каждой вершине куба соответствующую координату текстуры для изображения в атласе текстуры. Это уменьшит количество вызовов текстуры, так как есть только один тексерт. Кроме того, вам нужно будет отображать только вершины/треугольники, которые видны пользователю, поэтому вам не нужно текстурировать заднюю часть куба.

Я нашел хороший сайт, который объясняет много ускорения рендеринга тысяч кубов. Они пытаются создать один большой объект на процессоре, отбрав множество вершин, прежде чем загружать их на графический процессор, но я думаю, что для вашей проблемы вы можете использовать только как можно меньше текстур (TextureAtlas), это увеличит производительность , но для целого куба вам нужны 8 вершин с каждым конкретным TextureCoordinate.

 Смежные вопросы

  • Нет связанных вопросов^_^