0

だから私はopenGLとC ++で単純なプロジェクトに取り組んでおり、今のところ画面に白い円が描かれています。

使用しているキャンバスに縦横比を維持する機能を追加しましたが、問題なく動作しているようです。

ウィンドウを水平方向にリサイズすると、クリッピングが発生します (これは私が意図したものです)

ただし、ウィンドウを垂直方向にサイズ変更すると、クリッピングは発生せず、代わりにオブジェクトが縮小/拡大されます。

現在、縦横比を正しく保ちながら、オブジェクトのスケーリングを防ぎ、後でパンとズームを実装することを念頭に置いています。

それを念頭に置いて、比率を調整するために使用しているコードを次に示します。

サイズ変更時にglViewPortも正しく設定されていることに注意してください。ただし、問題がここのどこかにあることがわかっているため、このセクションのみをコピーしました。

if ( dx/dy < w/h ){
    // Need to expand dx
    GLdouble diff = w/h*dy - dx;

    minX -= 0.5*diff;
    maxX += 0.5*diff;
}
else{
    // Need to shrink dx
    GLdouble diff = h/w * dx - dy;

    minX += 0.5*diff;
    maxX -= 0.5*diff;
}

glOrtho( minX, maxX, minY, maxY, minZ, maxZ );
4

0 に答える 0