パースペクティブ、アスペクト

視点の位置角度については、メインループ内のdisplay()が呼ばれる直前でgCameraに設定すれば動く。
パースペクティブはそうはいかない。LLViewerCamera::rotate系の関数は引数の値を元に内部のデータを更新するだけのメソッドだが、LLViewerCamera::setPerspectiveは内部でgluPerspectiveとか呼んで設定を即時反映させる関数。display()の前にこれを呼んでも、レンダリング中に上書きされてしまう。
gCamera->setPerspectiveを呼んでる場所はいくつかあるが、関係ありそうなのはllviewerdisplay.cppのdisplay_update_camera()。この関数が呼んでるgViewerWindow->setup3DRender()はウィンドウのサイズとかをパラメータにgCamera->setPerspectiveを呼んでるだけ。

void LLViewerWindow::setup3DRender()
{
	gCamera->setPerspective(NOT_FOR_SELECTION, 0, 0,  mWindowRect.getWidth(), mWindowRect.getHeight(), FALSE, gCamera->getNear(), MAX_FAR_PLANE);
}

いざというときはこの辺にフックしこんでごにょごにょするといいんじゃないでしょうか。

アスペクトのほうはgCamera->setAspectでそのまま。