タグ付けされた質問 「viewport」

6
テクノロジーで許可されている場合、視野の変更を許可しないのはなぜですか?
これはゲームの開発を目的とする問題ではなく、その背後にある技術についての詳細です。多くのゲーミングジャーナリストとプロゲーマー(トーナメントとホームエンターテイメントセクターの両方)は、しばしば、一人称または三人称ゲームには視野を変える方法があるべきであるという問題に打ち勝ち、私は彼らに同意します。彼らがこれに言及する主な理由は、非常に多くのプレイヤーが過度に制限された視野でプレイすると、動揺病に関連する頭痛や目の疲れを感じるからです。 予算の制約により、インディー開発者がこれを許可していない場合、エンジンのサポートを追加する必要があるため、理解できます。ただし、多くの開発者は、Frostbite、Unity、Unreal、Cryengineなどの有名なサードパーティエンジンを使用していますが、視野を変更するオプションは提供していません。 テクノロジーで許可されている場合、視野の変更を許可しないのはなぜですか?
28 viewport 


1
ビューポートの伸縮を防ぐにはどうすればよいですか?
基本的に、ビューポート/ウィンドウのサイズが変更されたときに、レンダリングされたイメージの歪みやストレッチを削除する方法を知りたいです。 次の画像は、私が話している歪み/伸縮の例です。 元の画像(正方形ウィンドウ) 歪んだ/引き伸ばされた画像(長方形のウィンドウ) 理想的には、2番目の画像は水平方向に引き伸ばさずに球体を表示し、より大きなウィンドウサイズを考慮してより多くのシーンをユーザーに公開する必要があります。 これをどのように行うことができますか? 私はOpenGLと連携して画像をレンダリングし、呼び出しを介して透視投影を利用しています。 glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, window.width/window.height, 0.01f, 100.0f) アスペクト比width/heightは、私が出くわしたすべての文書/チュートリアルに従っているので、間違っているとは思わない。しかし、私の疑いは、ストレッチングの問題に影響しているということです。 結果論 正直に言って、この問題についてもっと考えてみると、解答には、フォービィ(y方向の視野)角度とアスペクト比との正比例関係が関係していると信じられていました。 上記の画像を参照として使用すると、幅が拡大する場合(水平方向のストレッチが発生する場合)、レンダリングされた画像の比例性を「固定」する垂直方向のストレッチを引き起こすためにfovy角度を大きくする必要がありそうです。 同様に、幅を小さくするには、フォビ角を小さくする必要があります。 更新: したがって、これをさらに調査した後、次のように視錐台の設定方法を変更することにしました。 gluPerspective(60 * (float)window.width/window.height, (float)window.width/window.height, 0.01f, 100.0f) そして、私の期待は正しかったので、比例の問題は解決しました。ただし、希望する結果が得られません。ウィンドウの幅が大きくなると、レンダリングされるイメージは小さくなります(ただし、球体は実際には円形です)。代わりに、球体のサイズをまったく変更しないでください。表示されるシーンの量のみを変更する必要があります。

3
GLViewportの混乱
誰かがGLViewportを理解し、サイズを変更するとどうなるかを理解してくれることを願っています これは私の混乱を示します。 だから、ここで私は画面の真ん中にクワッドをスタックしています。GLViewportをデバイスの幅と高さに一致させると、最初の(左側の)画像が表示されます。まさに私が期待するもの。 デバイスの解像度、2560 x 1600 ビューポート解像度2560 x 1600 クワッドサイズ200 x 200(注、上の画像は実物大ではありません!!! :-)) 四角形、正方形として表示 さて、2枚目(右)の写真です... デバイスの解像度、2560 x 1600 ビューポート解像度2560 x 1200(および垂直方向中央) クワッドサイズ(200、200) 四角形、長方形として表示 私の質問は、四角形が四角形ではなく四角形として表示されているのはなぜですか?私のクワッドが200 x 200ピクセルであることをログに記録して確認しました-物理ピクセルのサイズは確かに同じですか?変更することはできません。ここで何が起こっているのでしょうか? 私は(明らかに間違って)ビューポートを拡大縮小したとき、文字通りピクセルを切り落としたと考えました。 これがどのように機能するかを誰かが説明できれば幸いです。 編集する 現在、私はビューポートを次のように設定しています: width = (int) Math.min(deviceWidth, deviceHeight * 1.702127659574468); height = (int) Math.min(deviceHeight, deviceWidth / 1.702127659574468); ratio = width / height; GLES20.glViewport(offsetX, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.