Что такое цветовой буфер в OpenGL? - PullRequest
0 голосов
/ 18 апреля 2020

Я изо всех сил пытаюсь понять некоторые моменты в OpenGL. C код:

  • Что это за буфер цвета?
  • Что такое glutInitDisplayMode() и glClear() делать с этим буфером в кодах ниже?
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glClear(GL_COLOR_BUFFER_BIT);

1 Ответ

0 голосов
/ 19 апреля 2020

В OpenGL есть несколько видов буферов. Цветовой буфер, о котором вы говорите, содержит компоненты цвета render target. Это зависит от цели визуализации. Это может быть внеэкранный буфер, фрагмент окна или задний буфер окна.

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB) инициализирует цель визуализации текущего окна. GLUT_DOUBLE означает двойную буферизацию, чтобы избежать мерцания. GLUT_RGB означает, что нам нужна память для цветов без альфа-канала.

glClear(GL_COLOR_BUFFER_BIT) означает, что очищается только компонент Color буфера. Вы можете спросить, в чем разница. Причины в том, что цель рендеринга может быть разделена на несколько буферов, например, буфер цвета и буфер глубины. Буфер глубины будет очищен только при вызове glClear(GL_DEPTH_BUFFER_BIT), вы также можете объединить их через glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT), чтобы очистить цвет и компонент глубины сразу.

...