Я бы хотел понять функцию glClear до ее глубокого уровня.Я понимаю его общее объяснение -> очистить буферы для цвета, глубины, трафарета и накопления, но у меня есть дополнительные вопросы.Мой друг предположил, что вы очищаете биты, которые представляют цвет, глубину, трафарет и накопление в памяти (стек?).Задавая и применяя параметры: (например, только цвет и глубина) «маски», вы очищаете только те биты в памяти (следовательно, «битовая операция»).
Возьмем пример:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Объяснение параметров www.khronos.org для «маски».маска: побитовое ИЛИ масок, которые указывают на очищаемые буферы.
Вот мои вопросы:
- Параметры GL_COLOR_BUFFER_BIT и GL_DEPTH_BUFFER_BIT представляют 1 бит памяти каждый?Или сколько битов они представляют (я хотел бы понять, как на самом деле применяется битовая маска)?
- Я не вижу, как маска "ИЛИ" может отменять биты?Если вы используете «ИЛИ» для бита, который помечен как «установленный» (вместо «неустановленный»), он все равно вернет ноль (1 ИЛИ 0 по-прежнему возвращает 1)?Я вижу это совершенно неправильно / я что-то здесь упускаю?
- Что происходит со знаком "или" (труба);почему эти параметры не разделены обычной запятой и не объявлена ли побитовая операция «ИЛИ» в реальной функции?
Возможно, я путаю вещи, так как я новичок в этой области.Не могли бы вы дать мне исчерпывающее объяснение?Я предпочитаю не пропускать эти вопросы по мере продвижения в OpenGL;Я хочу знать, что я делаю, и понимание этого может помочь мне в этом.Спасибо!