Создайте окно и измените пиксели напрямую

#c #graphics #3d #window #game-engine

Вопрос:

Я изучал OpenGL и c с намерением, возможно, создать какую-то графику.

Я изучил некоторые материалы OpenGL, но я чувствую, что есть много функций, в которых происходят неизвестные вещи.

Каков был бы наилучший способ запустить и запустить окно, в котором я мог бы свободно изменять каждый пиксель, а затем выводить его на экран?

Тогда я мог бы сделать некоторые математические вещи за кулисами, которые изменяют этот растр и, следовательно, то, что вы видите на экране.

У кого-нибудь есть идея о том, как реализовать это на c и что я должен использовать для этого?

Если есть какой-либо лучший способ достичь того, что я ищу, я бы тоже хотел это услышать.

Комментарии:

1. Я бы сказал: learnopengl.com . Это лучшая отправная точка того, чего вы хотите достичь.

2. Да, я уже просмотрел OpenGL и этот конкретный веб-сайт, но знаете ли вы, поддерживает ли open gl предоставление ему матрицы с пиксельными данными, а затем вывод ее на экран

3. Дело в том, что OpenGL использует вашу видеокарту. Если бы вы попытались сделать то же самое вручную, это произошло бы полностью на процессоре.

4. Тем не менее, взгляните на SDL2 . Помимо прочего, он позволяет напрямую изменять пиксели. И когда вы закончите практиковать это, его можно использовать и с OpenGL.

5. Достаточно просто представить пиксельные данные на экране, SDL будет достаточно, но если вы хотите изменить пиксельные данные, лучшим подходом для этого будет использование графического процессора. OpenGL — хорошее решение для этого. Я не знаю, что вы подразумеваете под некоторыми математическими данными, даже если вы используете простые операции с отдельными пиксельными данными, графический процессор будет намного быстрее, чем процессор, и пока графический процессор выполняет свою работу, процессор можно использовать для других целей.

Ответ №1:

Вы задаете так много вопросов сразу, не понимая, насколько сложна эта тема. Реализация низкоуровневой графической библиотеки намного сложнее, чем вы думаете. Как предполагают некоторые комментарии, да, вы обязательно должны следовать инструкциям по learnopengl.com . Они очень хорошо написаны и объясняют все, что вам нужно.

Каков был бы наилучший способ запустить и запустить окно, в котором я мог бы свободно изменять кадры с помощью матрицы, содержащей информацию для каждого пикселя, а затем выводить ее на экран.

Это зависит от многих аспектов. Вам нужно подумать, хотите ли вы, чтобы эта «матрица» хранилась в памяти процессора или в памяти графического процессора, потому что реализации этих двух сильно отличаются. Вы можете «рисовать материал» на графическом процессоре, затем перенести эту память обратно в память процессора (упомянутую вами «матрицу»), изменить ее и отправить обратно для рендеринга. Вы также можете использовать все на GPU, а затем написать шейдерную программу для интерпретации информации о пикселях и вывода разных цветов.

Опять же, чтобы предупредить вас: низкоуровневая графика — чрезвычайно сложная тема. Если вы ищете простое решение, вы его здесь не найдете.

Если я правильно понял ваш вопрос, вам нужно будет знать о:

  • Буферизация OpenGL (glBufferData)
  • Фреймбуферы и цветовые вложения
  • Программирование шейдеров, компиляция, компоновка и загрузка.
  • размер области просмотра для размеров вашей «матрицы» (glViewport)

Я предлагаю использовать библиотеку glfw для окна, у них чистый интерфейс и хорошая документация. Вы также можете использовать SDL — у меня нет никакого опыта в этом, но вам все равно нужно знать, что вы делаете. Из того, что я узнал до сих пор, тратить время на изучение основ заранее, как правило, всегда стоит.