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

OpenGLは、デスクトップおよびワークステーション市場を対象とするグラフィック標準およびAPIです。専用のコンピューターハードウェアで簡単に加速できるように設計されているため、ほとんどの実装では、従来のソフトウェアレンダリングよりもパフォーマンスが大幅に向上しています。現在、OpenGLはCADソフトウェアやコンピューターゲームなどのアプリケーションに使用されています。また、クロスプラットフォームです。OpenGL標準は、OpenGL ESも制御するKhronosグループによって制御されています。

2
シーン内の多くのライトを処理する(シェーダーを使用)
シーンで多くのライトを処理する方法に興味があります。ダンジョン(ライトがそこにある)などのロールプレイングゲームの非常に大きなマップを考えると、遅延照明については知っていますが、それは多くのライトをレンダリングする方法にしか答えません。しかし、私の質問は次のとおりです。多くのライトをレンダリングしない方法。シーンに影響を与えるライトのみをレンダリングすることが明らかに望ましいですが、これをアーカイブするためのテクニック/アルゴリズムはわかりません。地図のどこかにあるからといって、500のポイントライトをレンダリングすることを望んだり、レンダリングしたりすることはできません。しかし、光からプレーヤーまで直線を取り、その間に何かがあるかどうかをテストすることはできません。距離も良い指標のようには見えません。(日光?) tl; dr:どのライトがシーンに影響を与えてそれらをレンダリングするだけなのか、どうしたらわかりますか?

3
遅延シェーディング-複数のライトを組み合わせる方法は?
私はGLSLから始めて、位置、法線、およびアルベドでGバッファーを出力する単純な遅延シェーディングを実装しました。 簡単なポイントライトシェーダーも作成しました。 次に、ポイントライトの球を描画し、出力をライティングバッファーに入れます。 問題は、複数のライトを描画するときに、ライティングバッファの結果をどのように組み合わせるかです。 たとえば、ポイントライトシェーダーを使用して2番目のライトをライトバッファーに描画する場合、最初のライトをライティングバッファーの2番目のライトに追加するにはどうすればよいですか。つまり、同じ出力バッファから読み書きすることはできませんか?

1
スプラインから3Dレーストラックを生成するにはどうすればよいですか?
形状を表すスプラインの周りに3次元のレーストラックを生成したい。 こちらがビデオの例です。 トラックは、いくつかの障害物が投げ込まれた3Dスプラインに沿ってスイープするエンドレストンネルである必要があります。私のこれまでの最良のアイデアは、スプラインに沿って円形状をロフトすることでした。 また、ジオメトリを管理する方法、つまりロフト操作からジオメトリを作成する方法、メモリ内の「ライフサイクル」を管理する方法、コリジョン、テクスチャリングへのポインタも必要です。


4
これらのUVテクスチャ座標を理解できません(範囲は0.0〜1.0ではありません)
Google SketchUp 8 Proで生成したシンプルな3DオブジェクトをWebGLアプリに描画しようとしています。モデルはシンプルな円柱です。 エクスポートしたファイルを開き、javascriptで使用できるように、頂点の位置、インデックス、法線、テクスチャ座標を.jsonファイルにコピーしました。46.331676などのかなり大きな値と負の値を持つテクスチャ座標を除いて、すべてが正常に機能しているようです。今私は間違っているかどうかはわかりませんが、2Dテクスチャ座標は0.0から1.0の範囲のみであると想定されていませんか? さて、これらのテクスチャ座標を使用してモデルを描画すると、完全に奇妙な外観が得られます。テクスチャがめちゃくちゃになっているかのように、モデルに非常に近い(実際には私ではなくカム)場合にのみ、テクスチャを正しく表示できますサイズが小さくなり、モデルの面全体で無限に繰り返されます。(そう、私はそのテクスチャラップにGL_REPEATを使用しています) 私が気づいたのは、これらの座標をすべて取得して10または100で割ると、「通常の」外観になりますが、0.0から1.0の範囲ではないということです。 これが私のjsonファイルです:http://pastebin.com/Aa4wvGvv これが私のGLSLシェーダーです:http : //pastebin.com/DR4K37T9 ここに、SketchUpによってエクスポートされた.Xファイルがあります。http://pastebin.com/hmYAJZWE また、XNAを使用してこのモデルを描画しようとしましたが、まだ機能しません。このHLSLシェーダーの使用:http : //pastebin.com/RBgVFq08 同じモデルを別の形式、collada、fbx、xにエクスポートしてみました。これらはすべて同じことをもたらします。

3
パーティクルシステムで独立した透明度を注文する
私はパーティクルシステムを作成していて、次の理由により、パーティクルを並べ替えることなく適切なアルファブレンディングを実現するためのトリックを見つけたいと思います。 各パーティクルは単一のメッシュ内のポイントスプライトであり、シーングラフ機能を使用して透明なノードを並べ替えることはできません。ただし、システムノードは適切にソートする必要があります。 パーティクルの位置は、初期速度、加速度、時間からシェーダーで計算されます。システムをソートするには、CPUでこのすべての計算を実行する必要がありますが、これは避けたいものです。 カメラの位置に対して何百ものパーティクルを並べ替え、フレームごとにGPUにアップロードすることで、静かで重い操作が可能になります。 アルファテストはGLES 2.0では十分高速であるように見え、非透過ではあるが「マスクされた」テクスチャに対しては問題なく機能します。それでも、半透明の粒子には十分ではありません。 これをどのように扱いますか?

2
OS XでOpenGLとフルスクリーンを処理する方法
私はほとんどの開発をOS Xで行っており、現在のゲームプロジェクトではこれがターゲット環境です。ただし、ゲームをするときはWindowsでプレイします。私はWindowsゲーマーとして、Alt + Tabをゲーム内から最後に開いたアプリケーションに切り替えることに慣れています。 OS XIでは、現在、それをサポートするゲームも、それを可能にする方法も見つけることができません。私の現在のプロジェクトはSDL 1.3に基づいており、cmd + tabはアプリケーションに直接送信され、オペレーティングシステムによってインターセプトされないシーケンスであることがわかります。 今、私の最初の試みは、確かに機能するcmd + tabでレンダリングウィンドウを非表示にすることでしたが、ユーザーがタブでアプリケーションに戻ったときに、SDLの非表示のOpenGLウィンドウを復元できないという欠点があります。まず、そのために発生するイベントがないか、イベントを見つけることができません。次に、アプリケーションウィンドウが非表示になっていると、ゲームがアクティブなアプリケーションのままで、ウィンドウが消えただけであるというコアの問題があります。 それは信じられないほど迷惑です。 alt + tabのWindows / Linuxの動作を概算する方法はありますか?
9 opengl  sdl  macos 

4
バッチ処理のパフォーマンスを向上させる方法
私はモバイルプラットフォーム用のスプライトベースの2Dゲームを開発しており、OpenGL(まあ、実際にはIrrlicht)を使用してグラフィックスをレンダリングしています。まず、シンプルな方法でスプライトレンダリングを実装しました。すべてのゲームオブジェクトは、独自のGPU描画呼び出しを持つクワッドとして描画されます。つまり、200のゲームオブジェクトがある場合、フレームごとに200描画呼び出しを行いました。もちろん、これは悪い選択であり、すべてのGPU描画呼び出しに関連付けられたCPUオーバーヘッドが少しあるため、私のゲームは完全にCPUバウンドでした。ほとんどの場合、GPUはアイドル状態のままでした。 今、私はオブジェクトを大きなバッチに収集し、これらのバッチを少数の描画呼び出しのみでレンダリングすることで、パフォーマンスを改善できると思いました。バッチ処理を実装し(同じテクスチャを共有するすべてのゲームオブジェクトが同じバッチでレンダリングされるように)、問題がなくなったと考えました...フレームレートが以前よりもさらに低いことを確認するだけです。 どうして?ええと、私には200(またはそれ以上)のゲームオブジェクトがあり、それらは1秒あたり60回更新されます。CPU内の頂点の新しい位置(変換と回転)を再計算する必要があるすべてのフレーム(モバイルプラットフォームのGPUはインスタンス化をサポートしていないため、そこで実行することはできません)。この計算は1秒あたり48000(200 * 60 * 4以降)すべてのスプライトには4つの頂点があります)、単に遅すぎるようです。 パフォーマンスを改善するために私ができることは何ですか?すべてのゲームオブジェクトが(ほぼ)すべてのフレームで移動/回転しているため、頂点の位置を再計算する必要があります。私が考えることができる最適化は、ローテーションのルックアップテーブルだけなので、計算する必要はありません。ポイントスプライトは役に立ちますか?厄介なハックはありますか?他に何か? ありがとう。

6
画像をテクスチャ、Linux、C、OpenGlにロードするためのライブラリ
ファイルからOpenGLテクスチャに画像をロードするためのLinux用のシンプルな自己完結型Cライブラリを探しています。ライセンスは完全に自由であるべきです:zlib、bsd、mitまたは何か。SOILを見つけましたが、長い間更新されていません。他に何かありますか、それとも自分で書く必要がありますか? PS私はglfwを使用します。画像をロードするための非推奨の関数のみがあります。
9 opengl  textures  c  loading  linux 

1
バッファオブジェクトとシェーダーを含むスプライトシート
シェーダーとバッファーを使用してスプライトシートを処理する「最良の」方法は何ですか?即時モードでは、描画時にスプライトのtexcoordsを変更するのは簡単ですが、最新のopenglでこれを行う方法はわかりません。すべてのtexcoordをバッファに格納し、すべてのスプライトのポインタを変更する必要がありますか、それとももっと良い方法がありますか?

4
CPUとGPUの幾何学的変換
私は、多くの3Dプログラムが通常、ベクトル/行列の計算やCPUでの幾何学的変換を行うことに気づきました。これらの計算をGPUの頂点シェーダーに移動することで利点を見つけた人はいますか?

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, …

6
AAAゲームとOpenGL?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 市場のトップにある最近のどのAAAゲームがOpenGLを使用しましたか?該当する場合、どのエンジンを使用しましたか?
8 opengl 

2
VBOを使用した錐台カリング
私のプロジェクトでは、OpenGLのVBOを使用して地形がレンダリングされています。錐台カリングを適用したいのですが、描画されている各ポリゴンにアクセスして、表示されているかどうかを確認する方法がわかりません。これがオクツリーが登場する場所だと思いますが、これが実際にどのように行われるのかはわかりません。誰かがこの特定のことをする方法についての良いチュートリアルを知っているか、私のためにいくつかの疑似コードを持っていますか? よろしくお願いします!

4
OpenGLで、GUIのために即時モードと保持モードを「組み合わせる」ことは悪い考えですか?
3DシーンglDrawArrays(...)を使用して描画していて、2Dオーバーレイのようなシンプルなものをレンダリングしたいとします。保持モードで2Dレンダラーをセットアップする代わりに、そのようなものに即時モードを使用することは悪い考えでしょうか? 例: void Draw() { // Draw the 3D scene: // *does stuff* glDrawArrays(...); // *some other stuff* // Setup a quad with immediate mode (for something like a vignette overlay) glBegin(GL_QUADS); glTexCoord2f(...); glVertex2f(...); glEnd(); }
8 opengl  gui 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.