Пример на создан»— многократного отражений
Клавишами управления курсором можно регулировать, как глубоко распространяется это отражение, нажатием на клавишу *Н' можно менять точку зрения, при взгляде сверху демонстрируются ложные дубликаты объектов. Если вы любите слушать музыку то закажите себе наушники для прослушивания чистых мелодий тут: http://euroset.ru/catalog/audio/accessories/headphones/akg/-/akg-jbl-roxy-re-250-blue-green/.
Главной в этом примере является процедура draw_scene, используемая рекурсивно для многократного воспроизведения объектов сиены:
const
stencilmask : longint - SFFFFFFFF; procedure TfrmGL.draw_scene(passes:GLint; cullFace:GLenum; stencilVal:GLuint; mirror: GLint);
var
newCullFace : GLenum;
passesPerMirror, passesPerMirrorRem, i : GLint; curMirror, drawMirrors : GLUint; begin
// один проход, чтобы сделать реальную сцену passes passes — 1;
fl рисуем только а определенных пикселах glStencilFunc(GL_EQUAL, etencilVal, stencilmask); // рисуем веши, которые могут закрыть первые зеркала draw_sphere; draw_cone;
// определяем номер отражений зеркала If mirror <> —1 then begin
passesPerMirror :- roundtpasses / (nMirrors — 1)); passesPerMirrorRem := passes mod (nMirrors — 1); If passes > nMirrors — 1
then drawMirrors := пМ1ггогз — i else drawMirrors :» passes;
end
else begin
// mirror ™ —1 означает, что это — начальная сцена (не было // никаких зеркал)
passesPerMirror := round(passes / nMirrors); passesPerMirrorRem :»= passes mod nMirrors; If passes > nMirrors
then drawMirrors :* nMirrors
else drawMirrors := passes;
end; i := 0;
While drawMirrors > 0 do begin curMirror :- i mod nMirrors; If curMirror <> mirror then begin
drawMirrors drawMirrors — 1;
// рисуем зеркало только в буфере заслона
glColorMask(False, False, False, Felse ;
Опубликовал vovan666
October 08 2013 12:14:28 ·
0 Комментариев ·
3659 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.