私は、レベルビルダアプリケーションを使ってゲームのコンテンツを作成しています。 iPadの画面の一部は専用のコントロールパネルですが、残りはビルドされているレベルのグラフィック表示です。コントロールパネルに影響を与えずに、レベルエリアをズームイン/ズームアウトする必要があります。私はレンダリングのためにOpenGL ESを使用しています。誰も私にここにいくつかのポインタを与えることができますか?別のビューポートで画面を分割することはできますか?iOS - OpenGL ESを使用したディスプレイの一部だけをズームする
1
A
答えて
1
OpenGL ES(おそらく2.0)でレンダリングしている場合は、レンダリングのスケーリングを完全に制御できます。スケールが適用される場所を決めて、どのようにレンダリングするかを決めます。
あなたのコードは現在、このように少し見えると思います。
Get view scale
Apply view scale to view matrix
Render level
Render control panel
これは次のようになります。
Render control panel
Get view scale
Apply view scale to view matrix
Render level
コントロールパネルを形質転換するために使用されないべきあなたがレベルを形質転換するために使用行列(または任意の変換ものあなたが持っています)。
2
トリックは、OpenGLは状態マシンであり、「グローバル初期化」のようなものはないことを理解することです。間違って書かれたチュートリアルに従って、ウィンドウのサイズ変更ハンドラで投影行列の設定をしている限り、あなたは立ち往生します。あなたは、ビューポート/ハサミとそのサブ部分をレンダリングする前に、描画ハンドラ内で投影を設定することを、
void render_perspective_scene(void);
void render_ortho_scene(void);
void render_HUD();
void display()
{
float const aspect = (float)win_width/(float)win_height;
glViewport(0,0,win_width,win_height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-aspect*near/lens, aspect*near/lens, -near/lens, near/lens, near, far);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
render_perspective_scene();
glEnable(GL_SCISSOR_TEST);
// just clear the depth buffer, so that everything that's
// drawn next will overlay the previously rendered scene.
glClear(GL_DEPTH_BUFFER_BIT);
glViewport(ortho_x, ortho_y, ortho_width, ortho_height);
glScissor(ortho_x, ortho_y, ortho_width, ortho_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-aspect*scale, aspect*scale, -scale, scale, 0, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
render_ortho_scene();
// Same for the HUD, only that we render
// that one in pixel coordinates.
glViewport(hud_x, hud_y, hud_width, hud_height);
glScissor(hud_x, hud_y, hud_width, hud_height);
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, win_width, 0, win_height, 0, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
render_HUD();
}
重要な部分がある:あなたが実際にやっていることは、このようなものです。
関連する問題
- 1. OpenGL ES 2を使用したiOS向けテクスチャの使用
- 2. glDrawTexfOESを使用したAndroid OpenGL ESズームが可能ですか?
- 3. iOSでOpenGL ESを使用してハーフピクセルを避ける
- 4. OpenGL ESでズームしてスワイプする
- 5. iOSのポイントスプライトにテクスチャ(スプライトシート/テクスチャマップ)の一部を適用するOpenGL ES 2.0
- 6. メタル/ OpenGL ESを使用したiOSでのビデオのレンダリング
- 7. OpenGL ESを使用したiOSアプリケーションの3Dモデル?
- 8. iOS 360 OpenGL ES 2.0を使用したビデオ
- 9. OpenGL ESを使用したポイントスプライトの一定サイズのエミュレート
- 10. iOSのOpenGL ESバッファ?
- 11. スムースポイントシェーダを使用したOpenGL ES 2.0
- 12. ポイントスプライトを使用したOpenGL ESオーバーレイブレンドモード
- 13. iOSの写真ブース。 OpenCVまたはOpenGL ESを使用していますか?
- 14. iOS - OpenGL ES 2.0でのビデオデコード
- 15. OpenGL ESを使用したiPhoneでのアンチエイリアスの問題
- 16. OpenGL ES:テクスチャテクスチャの色を使用して
- 17. iOS上でOpenGL ESを搭載したSkybox - GLKit + iOS 5.0
- 18. iPhone iOS 5.0 OpenGl ES 2.0
- 19. PVRTexToolを使用してiOS OpenGL ESで使用するためにPCにテクスチャデータを作成する
- 20. iOSでOpenGL ESを使用してランダムな画像を描画するには
- 21. iOS - OpenGL ES 2でBiPlanarピクセル形式を使用してYUV420pイメージをレンダリングする
- 22. OpenGL ESで描画を伸ばす - iOS
- 23. OpenGLは私がにiOS用の描画アプリケーションの一部として、OpenGLを使用しています
- 24. OpenGL ES 2.0、複数の頂点バッファを使用した描画
- 25. ペイントアプリケーション用のOpenGL ESコンテンツをズームしながらIphoneピクセルの歪み
- 26. Monotouchを使って外部ディスプレイにOpenGLをレンダリングする
- 27. iOS 5.0でのミップマップフィルタリングの使用OpenGL ES 2.0テクスチャキャッシュ
- 28. iOS - OpenGL ES 2.0でテキストを表示
- 29. OpenGL ES 1.0を使用したAndroidでのオフスクリーン描画のオプション?
- 30. java glSurfaceViewとjniのopenGL ESを使用したときのネイティブアクティビティ