2

私の目的: - 左右の衛星画像または航空画像全体と重複する領域を表示する

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

現在、空中ステレオ画像(左、右ステレオペア)のOpengGL 3dステレオ表示を行っています。次のコードを使用して、左右の画像を表示しました。

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);

ここで、Opengl の次の関数を使用して右の画像を 3D 回転する必要があります。glRotatef(rightphoto.phi*180/PI,0.0f,1.0f,0.0f); glRotatef(rightphoto.kappa*180/PI,0.0f,0.0f,1.0f); しかし、私は自分の画像を回転させることはできません。

画像を回転させる方法を教えてください!!!!! また、左右の画像の同じ部分の左のオーバーラップ全体の画像を 3D 回転で表示したいと考えています。左右の画像全体の重なり合う領域の座標を計算する方法がわかりません。私の下手な英語でごめんなさい。

4

1 に答える 1

4

を使用して読み書きされたピクセルはglDrawPixels()、モデル ビュー マトリックスによって変換されませんglRotatef()。それらはピクセルであり、実際のモデルよりも低レベルのプリミティブです。

これを解決するには、クワッドなどのテクスチャ マップされたプリミティブなどを使用してコンテンツを描画することを検討してください。

于 2008-11-27T08:36:25.983 に答える