OpenGL 3d стерео просмотр для аэрофотоснимков (слева, справа) - PullRequest
2 голосов
/ 27 ноября 2008

Моя цель: - отобразить область перекрытия со всем левым правым спутниковым или аэрофотоснимком

        - rotate image using roll, pitch yaw angles
        -image format is Tiff image

Сейчас я занимаюсь просмотром стерео 3D в формате OpenGGL для стереоизображения (левая, правая стереопара). Я отобразил левое правое изображение, используя следующий код:

glDrawBuffer (GL_BACK_LEFT);
LeftBuf = new unsigned char [LeftCol * LeftRow *3];

for (int i = 0; i < LeftRow; i++){
    for (int j = 0; j< LeftCol; j++){

        LeftBuf [(i*LeftCol + j)*3] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)];
        LeftBuf [(i*LeftCol + j)*3+1] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)];
        LeftBuf [(i*LeftCol + j)*3+2] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)];

    }
}

glRasterPos2f(-1,-1);
glDrawPixels(LeftCol, LeftRow, GL_RGB, GL_UNSIGNED_BYTE, LeftBuf);

glDrawBuffer (GL_BACK_RIGHT);
RightBuf = new unsigned char [RightCol *RightRow *3];

for (int r = 0; r < RightRow; r++){
    for (int c = 0; c< RightCol; c++){

        RightBuf [(r*RightCol + c)*3] = tiff.RnBuf [r*RightCol + RightCol-(c-1)];
        RightBuf [(r*RightCol + c)*3+1] = tiff.RnBuf [r*RightCol + RightCol-(c-1)];
        RightBuf [(r*RightCol + c)*3+2] = tiff.RnBuf [r*RightCol + RightCol-(c-1)];

    }
}

glRasterPos2f(-1,-0.45);
glDrawPixels(RightCol, RightRow, GL_RGB, GL_UNSIGNED_BYTE, RightBuf);

Теперь мне нужно повернуть нужное изображение в 3D с помощью следующей функции OpenGL: glRotatef (rightphoto.omega * 180 / ПИ, 1.0f, 0.0f, 0.0f); glRotatef (rightphoto.phi * 180 / ПИ, 0.0f, 1.0f, 0.0f); glRotatef (rightphoto.kappa * 180 / ПИ, 0.0f, 0.0f, 1.0f); но я не могу повернуть свое изображение.

Пожалуйста, помогите мне, как повернуть мое изображение !!!!! Также я хочу отобразить перекрывающиеся слева целые изображения той же части левого правого изображения с трехмерным вращением. Я не знаю, как рассчитать координаты перекрывающихся областей всего левого правого изображения. извините за мой плохой английский.

1 Ответ

4 голосов
/ 27 ноября 2008

Пиксели, считанные или записанные с использованием glDrawPixels(), не преобразуются матрицей вида модели, что и меняется glRotatef(). Это пиксели, более низкоуровневый примитив, чем у реальных моделей.

Чтобы решить эту проблему, попробуйте нарисовать ваш контент, например, с помощью текстурный примитив, такой как квад.

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