Основная идея OpenGL состоит в том, что вы никогда не устанавливаете значения отдельных пикселей вручную, потому что это часто слишком медленно.Вместо этого вы визуализируете треугольники и выполняете с ними всевозможные трюки, такие как текстуры, смешивание и т. Д.
Чтобы свободно программировать действия каждого отдельного пикселя в OpenGL, необходимо использовать технику, называемую шейдерами.И это не очень легко, если вы не делали ничего подобного раньше.Идея шейдеров заключается в том, что GPU выполняет их вместо CPU, что приводит к очень хорошей производительности и снимает нагрузку с CPU.Но в вашем случае, вероятно, лучше сделать это с процессором, а не с шейдерами и OpenGL, так как этот подход гораздо проще начать.
Я рекомендую использовать библиотеку, подобную SDL (или, возможно, glfw), что позволяет вам работать с пикселями без аппаратного ускорения.Вы все еще можете сделать это и с OpenGL.С помощью функции glDrawPixels.Эта функция выводит необработанные данные пикселей на экран.Но это, вероятно, не очень быстро.
Итак, начните с прочтения, например, нескольких учебных пособий по SDL.
Редактирование: если вы хотите использовать шейдеры, сложность с ними (среди прочего) заключается вчто вы не можете указать координаты, для которых установлены значения пикселей.И вы не можете получить значения пикселей прямо с экрана.Один из способов сделать это с помощью шейдеров будет следующим:
- Настройка двух текстур: текстура A и текстура B
- Bindодна из текстур в качестве цели, которую вы визуализируете для
- Привязка другой из текстур в качестве входной текстуры для шейдера
- Визуализация полноэкранного четырехугольника с помощью вашего шейдера и показ результатана экране
- Поменяйте местами текстуры A и B, чтобы вы стали использовать предыдущий результат в качестве следующего ввода
- Выполните рендеринг снова