2

私は次の変数を持っています:

  • 焦点を合わせる場所のピクセル単位の位置(x、y)である興味のあるポイント。
  • ウィンドウの寸法である画面の幅、高さ。
  • カメラのズームレベルを設定するズームレベル。

そして、これは私がこれまでに持っているコードです。

void Zoom(int pointOfInterestX,int pointOfInterstY,int screenWidth,
   int screenHeight,int zoomLevel)
{   
glScalef(1,1,1);
glTranslatef( (pointOfInterestX/2) - (screenWidth/2), (pointOfInterestY/2) - (screenHeight/2),0);

glScalef(zoomLevel,zoomLevel,1);
}

そして、ズームイン/ズームアウトを実行したいのですが、画面の中央に関心のあるポイントを保持します。しかし、これまでのところ、私の試みはすべて失敗しました。

4

1 に答える 1

5

次のようにフレームのレンダリングを開始できます。

 glViewport(0, 0, w, h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 GLdouble left = (0 - pointOfInterestX) / zoomLevel + pointOfInterestX;
 GLdouble right = (WindowW - pointOfInterestX) / zoomLevel + pointOfInterestX;
 GLdouble bottom = (WindowH - pointOfInterestY) / zoomLevel + pointOfInterestY;
 GLdouble top = (0 - pointOfInterestY) / zoomLevel + pointOfInterestY;
 glOrtho(left, right, bottom, top, -1, 1);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
于 2012-04-13T06:27:13.650 に答える