Я не уверен, что мой вопрос достаточно ясен, поэтому объяснения: Я работаю над движком voxel с помощью opengl, он работает нормально, но я хочу немного улучшить его с некоторыми оптимизациями. Я начал использовать VBO для вершин куба, я заработал несколько кадров в секунду, так что это здорово. Но сейчас я хочу сделать то же самое thiong с цветом куба, и я не нашел ответ, пожалуйста, мне, потому что у меня есть особенности, необходимые:Есть ли способ использовать одно значение ввода в Opengl с помощью vbo и не равномерно?
Я использую только 3 поплавка для цвета, так что даже если он работает, glVertexAttribPointer() не кажется хорошим способом, потому что, если я его использую, мне нужно использовать 108 float per cube против 3.
Я хочу нарисовать МНОГИЕ кубы, поэтому используйте glUniform3f isn «Нехорошо ни потому, что отправить 3 поплавка на кубики было бы очень медленным, чтобы много кубов рисовать.
Так с контекстом мой вопрос, есть ли способ для хранения значений в памяти GPU (как VBO), и когда я рисовать куб я бы сказал лишь шейдера, где находятся эти ценности ?
Спасибо за чтение, и может быть отвечать :)
Вы могли например, сортируйте свои кубы по цвету, а затем используйте форму для цвета/текстуры. – dari
Прежде всего, цвет должен быть 3 байта, а не 3 поплавка, это экономит 75%. Вы можете отсортировать их, но вы также можете выполнить поиск в таблице цветов, что уменьшит ваши данные до количества разных цветов. Например, если вы укажете только 256 цветов, вы можете назначить цвет каждой вершине только на 1 байт, в 3 раза меньше информации, чем сам цвет. Вы также можете нарисовать кубы с инстанцированным рендерингом, а затем предоставить один цвет для каждого экземпляра или, еще лучше, один индекс для цвета для каждого экземпляра. Это все возможные варианты, вопрос: насколько OpenGL вы знаете? Меняются ли цвета? –
Сортировка кубов по цвету - хорошая идея, я об этом не думал, поэтому спасибо :). – Rahotop