Как старый OpenGL поддерживает двойную точность, а новый OpenGL - нет? Как унаследованный OpenGL поддерживает двойную точность, в то время как большинство видеокарт даже не поддерживает двойную точность?
Это не то, что вы думаете, что делает. То, что вы можете использовать double как атрибуты вершин, не означает (и никогда не делал), что реализация GL будет выполнять вычисления с такой точностью - GPU никогда не делали этого. Данные конвертируются с одинарной точностью в любом случае. То же самое для матриц - матрицы, которые были отправлены в GPU, никогда не имели двойной точности в устаревшем GL, независимо от того, использовали ли вы суффикс d
или f
при указании данных на стороне ЦП.
Просто с более новые графические процессоры, двойная точность стали доступны в ядрах шейдеров, и современный GL 4.x позволяет вам использовать это впервые .
Также обратите внимание, что многие из реальных потребителей У GPU есть какой-то безумно низкий двойной коэффициент точности, например, 1/32 от производительности FP32, поэтому лучше подумайте дважды, прежде чем использовать это. Для графики вам это редко понадобится. И тот факт, что ваш предыдущий код работал с устаревшим GL, доказал, что вам не нужна точность.