Разница между glColor3f и glColor3d - PullRequest
0 голосов
/ 20 июня 2019

Код, над которым я работаю, в двух словах, использует OpenGL для представления данных (хранимых как двойные) в качестве цвета некоторой геометрии. Используя цветовую заливку по умолчанию между вершинами, он затем отбирает обратно цвет по геометрии, чтобы увидеть значения в разных пикселях и преобразовать их обратно в мои данные. В настоящее время это делается с использованием 1D текстурного наложения, так что любое значение, которое я рисую и отбираю обратно, может быть точно расположено в масштабе. Однако, поскольку данные, с которыми я работаю, сохраняются как двойные, большая точность теряется, когда все значения, отобранные и отобранные обратно, отображаются на 14-битной карте текстуры.

Итак, чтобы решить эту проблему, сейчас я реализую код, используя цвет с плавающей точкой. Я использую FBO с цветным вложением GL_RGBA32F для визуализации буфера. Вещь, которую я не понимаю, это , что изменится, если я установлю цвет своих вершин, используя glColor3d вместо glColor3f . Если я правильно понимаю, с рендерингом буфера с плавающей запятой одинарной точности значения, которые я выберу обратно для RGB, будут в основном типом GLfloat, а не GLdouble.

Кроме того, есть ли способ настроить буфер рендеринга таким образом, чтобы я мог рисовать со значениями цвета GLdouble и иметь возможность выборки значений GLdouble? Если посмотреть на спецификацию OpenGL 4.5 p198 , то нет цветовых форматов с точностью более 32f на канал. Насколько я понимаю, двойная точность цвета - это довольно современная технология, поддерживаемая только в новых системах, что еще больше смущает меня по поводу наличия glColour3d.

...