Я загружаю большое цветное облако точек в OpenSceneGraph используя Vec4Array
для каждой вершины для цветов. Это очень неэффективно в памяти, требуя 16 байтов информации о цвете на вершину, где я хотел бы хранить 4 или меньше. Наборы данных, с которыми я имею дело, огромны, так что это серьезная проблема.
Можно ли как-нибудь заставить OpenSceneGraph использовать цвета с меньшим разрешением (например, 24 бит цвета более чем достаточно)?
Вы можете использовать атрибуты Vertex и шейдер для кодирования XYZ и цвета в любое количество битов, а затем декодировать их обратно в шейдер. Но кроме этого OpenGL (и OSG) не дает вам большой гибкости.
Многие игровые архитектуры (консоли и мобильные устройства используют 16-битную схему 5-6-5 RGB битового кодирования).
Других решений пока нет …