0

最初にやりたいのは、画面の中央に移動して、そこからすべてのオブジェクトを描画することです。次に、パンには変換を適用し、ズームにはスケールを適用したいと思います。中心点を基準にしてズームしたい!それで、それが機能するように、それらの順序はどのようにすべきですか?

glTranslatef(width/2, height/2, 0); 
gltranslate(centerX,centerY); // go to center point
glscale(zoom);
glTranslatef(offset.x/zoom, offset.y/zoom, offset.z/zoom); // pan

上記の順序を試しましたが、中心点に移動せず、常に(0,0)を基準にしてズームします。

4

1 に答える 1

1

x と y の両方が 0,1 の正方形を描いているとします。

最初に、スケーリングされたオブジェクトがあるべきポイントに変換する必要があります。

glTranslate3f(centerX,centerY,0);
glScale(zoom);
glTranslatef(-0.5f, -0.5f,0); // to the middle
draw stuff

opengl はパイプラインであるため、逆の順序で変換を実行します。上記のシーケンスをボトムアップ方向に読むと、鍵が得られます。

于 2012-09-18T00:00:22.197 に答える