
Дописал до нормального состояния свою стереолибу =) Скачать ее можно вот тут. Ура нах!
Сейчас я расскажу о том, как работает моя программа построения псевдостереоизображений.
Идея очень проста : сначала делаем рендер в текстуру с небольшим смещением камеры влево, затем повторяем рендер той же самой сцены, но со смещением вправо. В моем примере это установка параметров gluLookAt в (-1.0f, ...) и в (1.0f, ...) соответственно. Затем рисуем квад во весь экран и на него натягиваем обе текстуры с применением простейшего шейдера, который в результирующий цвет записывает r компоненту от текстуры для левого глаза, и g и b компоненты от текстуры для правого глаза. И вуаля!
Что дальше? А дальше у меня по плану:
Вот тут можно скачать бинарник, а вот тут можно скачать исходные коды. Для работы вам понадобиться библиотека glew, скачать ее можно вот тут.
Настал тот великий день, когда я опять сел делать курсовик!
Сначала небольшое отступление. Тема моей курсовой : создание стереоизображений в реальном времени. Основная цель : написать фреймверк для существующего двига, который бы позволял создавать стереоизображения и управлять их параметрами. На данный момент стоит цель написать работающий код, который бы строил псевдостереоизображение. Почему псевдо ? Потому, что нормально не учитывается положение наблюдателя, а смещения для глаз берутся из головы, а не из формул =)
Оказалось, что я год просто тупил - я думал, что у меня не работал FBO, а оказалось что при натягивании на квад текстуры, которая была буферм кадра, я забывал задать нормали, из-за чего квад рисовался черным цветом и на текстуру ему было пофигу. А сегодня случилось чудо - я решил более полно изучить примеры и у меня все заработало =) Ура! Однако теперь появилась другая проблема : почему-то при мультитекстурировании правильно отображается только одна из двух текстур (либо для левого глаза, либо для правого), а другая просто черного цвета. Причем играясь с номерами текстурных юнитов (GL_TEXTUREi) и рисованием/не_рисованием текстур, я так и не увидел никакой закономерности. Вот теперь сижу медитирую над кодом...
Ура!!! Медитация окончена. Оказалось, что обязательно надо задавать мультитекстурные координаты для всех текстур (glMultiTextureCoord).
То, что сейчас уже работает опишу завтра и выложу исходники и работающий пример. Ждите ;)