OpenGL ES 2.0 iPhone - glClear на кадровом буфере ничего не делает - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь очистить экранный буфер с помощью glClear(GL_COLOR_BUFFER_BIT);

Я хочу, чтобы кадровый буфер стал черным.

, но это, похоже, ничего не делает, и последний нарисованный шейдервсе еще на экране.

в чем моя ошибка?

Ответы [ 3 ]

2 голосов
/ 29 февраля 2012

Вы меняете кадры после очистки?

Операция очистки, в зависимости от того, как настроено окно (с двойной буферизацией или нет), скорее всего, очистит только задний буфер . Это оставляет передний буфер, который виден, без изменений.

Чтобы какие-либо операции стали видимыми, вам нужно поменять местами свои буферы. Это делается разными способами в зависимости от платформы, это может быть wglSwapBuffers, glxSwapBuffers или любое количество других; проверьте свои документы.

Вы можете уклониться от этого требования, используя один буфер, но это будет иметь довольно большие последствия для производительности.

0 голосов
/ 29 февраля 2012

Вы установили чистый цвет с помощью glClearColor? Если нет, установите его, иначе ваш код выглядит правильно.

glClearColor(0.0, 0.0, 0.0, 1.0); // Call before glClear()
0 голосов
/ 29 февраля 2012

Используете ли вы буфер глубины (glEnable(GL_DEPTH_TEST);)?Если да, попробуйте также очистить этот буфер:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...