| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > [opengl] смена цвета для всех вершин одновременно |
| Автор: drug007 7.12.2016, 16:45 |
| Всем доброго времени суток. Есть необходимость смены цвета для всех вершин одновременно. На ум приходит color index mode, но он вроде как уже устарел. Пробегаться по всему VBO меняя цвет вершин кажется избыточным. Может кто подсказать оптимальное решение задачи в современном opengl? Заранее спасибо. |
| Автор: tzirechnoy 13.12.2016, 18:13 |
| А зачем у вас цвета вершын хранятся во всём VBO? Массив цветов обычно отдельный. Или не массив, а параметр шэйдера/юниформ, вот это всё. Неважно. В любом случае, типичная организацыя данных -- это отдельный массив координат (один массив с дэкартовыми тройками), отдельный массив нормалей, отдельный массив цветов, отдельный массив параметров материала (для освещения). Иногда ещё массив индэксов, чтобы можно было уменьшыть остальные массивы (координат и нормалей -- примерно втрое, цветов и материалов -- вообще во много раз, поскольку часто хватает нескольких цветов и одного-двух материалов на модэль из сотен треугольников), но это по факту не всегда выгодно по скорости. Но, в любом случае, современный OpenGL -- понятие очень растяжымое. Вы всё-таки опишыте, примерно, какой сложности модэль рисуете, чем её задаёте, какими функцыями передаёт внутрь OpenGL, чем параметризуете, есть ли кости, используете ли шэйдэры (понимаю, что "современный OpenGL это подразумевает, но Вы не ленитесь, описывайте), и если да, то какие, как пихаете параметры в шэйдэры и между стадиями. После этого можно будет понять, что Вам непонятно. |