для приложения я разрабатываю я должен быть в состоянииOpenGL Pixel Precise растрирование на разных арках
- рисовать линии различной ширины и цветы
- нарисовать сплошного цвет заполненных треугольников
- рисовать текстурированные (нет альфа) не каре
Очень просто ... но ...
Все координаты МЭГ er в пиксельном пространстве и, что очень важно: glReading все пиксели из framebuffer на двух разных машинах с двумя разными графическими картами, работающими на двух разных ОС (Linux и freebsd), должны приводить к точно такой же последовательности бит (данный соответствующее преобразование постоянного формата).
Я думаю, что это невозможно сделать безопасно с использованием opengl и аппаратного ускорения, так как я ставлю различные карты (от разных поставщиков), могут реализовывать различные алгоритмы для растеризации. (спецификации OpenGl понятны, поскольку они предлагают алгоритм, но они также заявляют, что при определенных обстоятельствах реализации могут отличаться от ). Также мне не нужно аппаратное ускорение, так как я получаю очень низкую скорость и простую графику.
Как вы думаете, я могу достичь этого, просто отключив аппаратное ускорение? Что произойдет в этом случае в Linux, будет ли я установлен по умолчанию на Растеризатор программного обеспечения MESA? И в таком случае, могу ли я быть уверен, что он всегда будет работать, или я что-то упустил?
Я думаю, что лучший подход будет заключаться в том, чтобы забыть о точности растеризации и результирующего дескриптора как неточного (+/- несколько пикселей) общая ошибка растеризации составляет около 0,5 пикселя (если я правильно помню), поэтому для обеспечения безопасности рассмотрим все объекты с Точность 2-3 пикселей. (также вы можете добавлять маркеры к критическим объектам ... один пиксель с четким цветом). Другим подходом является использование GLSL (забудьте о конвейере OpenGL и создайте свой собственный с предопределенным поведением точности). – Spektre