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

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

2
深度テストを使用していなくても、ピクセルを破棄するパフォーマンスを失いますか?
破棄命令を最初に検索したとき、破棄を使用するとパフォーマンスが低下するという専門家がいます。ピクセルを破棄すると、zBufferを適切に使用するGPUの機能が破損するため、GPUは両方のオブジェクトに対してフラグメントシェーダーを最初に実行して、カメラに近いものが破棄されるかどうかを確認する必要があると述べました。現在作業中の2Dゲームの場合、depth-testとdepth-writeの両方を無効にしました。私はすべてのオブジェクトをその深さでソートして描画していますが、それはすべてです。GPUが派手なことをする必要はありません。今、フラグメントシェーダーでピクセルを破棄するのはまだ悪いのではないかと思っています。

1
静的およびアニメーション3Dモデルのファイル形式
この質問は、Game Development Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 現在、OpenGLを使用してC ++で3Dゲームを作成しており、3Dモデルをロードする部分に来ています。したがって、 静的メッシュを表示し、 アニメーションメッシュをレンダリングします。 キーフレームアニメーション、骨格アニメーション、MD2〜MD5、3DS、X、Colladaなどのような、非常に多くの可能な形式と手法を既に見つけました。 簡単にするために、静的メッシュとアニメーションメッシュの両方を可能にする形式(および手法)を使用したいと思います。したがって、私の質問は、1つの形式がそのタスクに適しているかどうか、そしてどの形式を提案するかです。そして、少し明確にするために、私は非常に滑らかなアニメーションやまったく新しい機能を必要としません。 サイドノート:私はブレンダーのファンなので(ただし、専門家ではありません ;-))、それを使用できると便利ですが、もちろんそれはショーストッパーではありません。
22 c++  opengl 


6
ゲームデータ/ロジックをレンダリングから分離する
私はC ++とOpenGL 2.1を使用してゲームを書いています。データ/ロジックをレンダリングから分離する方法を考えていました。現時点では、描画を実装するための純粋な仮想メソッドを提供する基本クラス「Renderable」を使用しています。しかし、すべてのオブジェクトには特別なコードがあり、シェーダーのユニフォームを適切に設定し、頂点配列バッファーデータを整理する方法を知っているのはオブジェクトだけです。コード全体で多くのgl *関数呼び出しが発生します。オブジェクトを描画する一般的な方法はありますか?
21 c++  opengl  rendering  logic  data 

3
OpenGL> = 3でVBOのみが許可されるのはなぜですか?
OpenGLバージョン3以降では、クライアント側レンダリングの使用が不要になりました。即時モードは廃止され、頂点配列は非推奨のようです。代わりに、私が正しく理解していれば、VBOは頂点をレンダリングする主な方法です。 すべてを均一にレンダリングする方法の背後にあるロジックを見ていますが、VBOには頂点配列に大きなマイナス面がないのですか?一般に、VBOは1 MBを超えるデータを含む大きなバッファーであると考えられていました。小さいジオメトリがたくさんあるシーンがある場合はどうなりますか?多数のノードを持つシーングラフがあり、各ノードには独自の変換などが必要です。各ノードは個別に削除したり、個別に追加したりすることもできます。以前は頂点配列を使用していました。したがって、最初の質問は、VBOに切り替えた場合、各オブジェクトにVBOを割り当てる必要があるため、シーングラフオブジェクトのオーバーヘッドが大きくなるかどうかです。 もう1つの懸念は、レンダリングするジオメトリが非常に動的になる可能性があることです。最悪の場合、すべてのジオメトリを一定期間フレームごとに再送する必要がある場合があります。この使用例では、VBOのパフォーマンスは頂点配列よりも劣りますか、それともVBOは頂点アレイと同じくらい機能しますが、それ以上は機能しませんか? したがって、より簡潔な形式で、私の質問は次のとおりです。 1)VBOの割り当て/割り当て解除にかなりのオーバーヘッドがありますか(つまり、バッファーをセットアップするだけの行為です)。 2)フレームごとにCPUからデータを更新する場合、これは頂点配列を使用した場合よりも大幅に悪化する可能性がありますか? そして最後に、私は知りたい: 3)上記の質問のいずれかに対する答えが「はい」の場合、なぜVBOよりも有利なレンダリングの他のモードを非推奨にするのですか?これらの潜在的な割り当てコストなどを軽減するために使用するはずのテクニックなど、ここに欠けているものはありますか? 4)これらの質問への回答は、使用しているOpenGLバージョンによって大幅に変わりますか?パフォーマンスの高い方法でVBOを使用してコードをOpenGL 3または4の上位互換にリファクタリングすると、同じ手法がOpenGL 2でうまく機能する可能性が高いか、特定の手法がOpenGL 3ではるかに高速になる可能性があります+およびOpenGL 2を使用する他のユーザー スタックオーバーフローについてこの質問をしましたが、このサイトが私の質問に適している可能性があることに気付いたので、ここに再投稿しています。

4
OpenGL ESでクワッドを描画する最速の方法は?
OpenGL ES 2.0を使用しています。描画するクワッドがたくさんあります。GL_QUADSを使用しているかのように、クワッドあたり4つの頂点のみを渡すことができるようにしたいのですが、基本的には、独立したクワッドの束。 これまでのところ、私ができることを見つけました:-GL_TRIANGLES(クワッドあたり6頂点)-GL_TRIANGLE_STRIP(クワッドあたり6頂点)を縮退します 私が見つけた可能性:クアッドストリップをリセットする特別なインデックス値を持つ-GL_TRIANGLE_STRIPS(これはクアッドごとに5つのインデックスを意味しますが、これはOpenGL ES 2.0で可能だとは思いません)
21 opengl  3d  iphone  android  shaders 

1
トリプルバッファリングの利点は何ですか?
前の質問で書かれたすべてを読みました。ダブルバッファリングで理解していることから、プログラムは、完成した図面がコピーまたはスワップされるまで待ってから次の図面を開始する必要があります。トリプルバッファリングでは、プログラムに2つのバックバッファがあり、そのようなコピーに関係しないものですぐに描画を開始できます。 ただし、3番目のバッファを利用できる状況にある場合、トリプルバッファリングでは、モニタが更新できるよりも速くフレームを描画していることを示唆しません。そのため、実際にはより高いフレームレートは得られません。それでは、トリプルバッファリングの利点は何ですか?

7
モダンシェーダーブック?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 シェーダーについて学ぶことに興味があります。シェーダーとは何ですか、いつ/何のために、そしてどのように使用するのか。(具体的には、水とブルームの効果に興味がありますが、シェーダーについては0に近いことを知っているので、一般的な紹介が必要です)。 数年前の本をたくさん見たので、それらがまだ当てはまるかどうかわかりません。現時点ではXNA 4.0をターゲットにしています(Shader Model 4.0のHLSLシェーダーを意味すると思います)が、一般にDirectX 11とOpenGL 4をターゲットとするものは役立つと思います。

7
2Dゲームの場合、Direct3DやOpenGLなどの3D APIを使用しない理由はありますか?
私はかなり長い間趣味のゲーム開発から脱出しました。私がやったとき、ほとんどの人はDirect Drawを使って2Dゲームを作成していました。私がやめた頃には、人々は、OpenGLまたはDirect3Dを使用した正射影が正しい方法だと言っていました。 特に携帯電話だけでなく、XNAプラットフォームでも2Dゲームの作成に戻ることを考えています。OpenGLを使用して何かを作成するには、3D開発に慣れるための(理想的には)小さな学習曲線が必要です。 それをスキップして、代わりにピクセルで塗りつぶす必要がある幅x高さのフレームバッファーがある2Dフレームワークで動作する理由はありますか?
20 2d  opengl  directx 

5
行列は何を表していますか?
私は最近OpenGLを学び始めましたが、コンピューターグラフィックスにおけるマトリックスとその役割を視覚化するのに問題があります。次のような4x4マトリックスのテンプレートを考えます: このような各マトリックスは、ワールド空間の頂点の座標であると想定します。そして、それらのいくつかがまとめられ、影が付けられてオブジェクトを与えますか? しかし、なぜそこにaがあるXx、XyとXz?私はそれが異なる軸(上、左、前)であることを読みましたが、それでも重要な頭や尾を作ることはできません。
19 opengl  matrix 

5
OpenGL:glNormalで法線を設定する必要があるのはなぜですか?
OpenGLのいくつかの基本を学んでいますが、なぜglNormal頂点の法線を設定する必要があるのか​​疑問に思っています。 このような単純な三角形を作成する場合: glBegin(GL_TRIANGLES); glVertex3f(0,0,0); glVertex3f(1,0,0); glVertex3f(0,1,0); glEnd(); 法線は、幾何学的プリミティブのタイプによって暗黙的に定義されるべきではありませんか?法線を設定しない場合、OpenGLはそれを計算しますか?
19 opengl  normals 

6
互換性とパフォーマンスを考慮して、OpenGLのどのバージョンをコーディングする必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 去年閉鎖されました。 OpenGLの仕様が更新されると、機能が追加されるだけです。したがって、理論的には、コアプロファイルと互換性プロファイルをサポートする最新かつ最高のハードウェアは、非常に古いOpenGL1.1コードを正常に実行するはずです。これは事実であることが判明しました。私はOpenGL1.1の学習に12か月を費やし、それをかなり理解しています。 私はそれらの派手な新しいOpenGL4.2の本のいくつかの章を読みました。私が依存するほとんどすべての機能は非推奨になりました(表示リストなど)。これらすべてのことを行うより良い方法があると仮定できます。 1.1がすべての最新のハードウェアで完全にサポートされる可能性が高いと考えてみましょう。1.1は1992年にリリースされました。20 歳のPCをサポートするためだけに難しい方法をコーディングしているわけではありません。:-pほとんどのゲーマーが5年ほど前のミッドレンジで底を打つハードウェアを実行していると仮定するのは合理的だと思います。 新しいメソッドは、一般的に次の2つのいずれかになるように設計されていると思います。パフォーマンスの向上またはコーディングの容易さ。私はどこかでその両方ではないことを読んだ!XD 〜5年前のハードウェアで最も広くサポートされているOpenGLのバージョンは何ですか?これらの考慮事項を考慮して、どのバージョンを使用するのが最も理にかなっていますか?
19 opengl 

3
レンダリング出力を単体テストするにはどうすればよいですか?
最近、テスト駆動開発(TDD)を採用していますが、開発成果とコードベースの復元力に素晴らしい影響を与えました。このアプローチをOpenGLで行うレンダリング作業の一部に拡張したいと思いますが、これに対する良いアプローチを見つけることができませんでした。 具体的な例から始めて、どの種類のことをテストしたいかを理解します。ある軸を中心に回転する単位立方体を作成し、いくつかのフレームで各フレームが正しくレンダリングされるようにしたいとしましょう。 自動テストケースを作成するにはどうすればよいですか?できれば、キューブをレンダリングするコードを書く前にテストケースを書くことさえできます(通常のTDDの慣例に従って)。とりわけ、キューブのサイズ、位置、および向きがレンダリングされた各フレームで修正します。シェーダーのライティング方程式が各フレームで正しいことを確認したい場合もあります。 私が出会ったこれに対する唯一のリモートで有用なアプローチは、レンダリングされた出力を参照出力と比較することです。これは一般にTDDの実践を排除し、非常に面倒です。 他の必要な要件については進めることができますが、既にリストした要件は手の届かないところにあると思います。

4
手続き型惑星、高さマップ、テクスチャ
現在、OpenGL手続き型惑星ジェネレーターに取り組んでいます。プレイヤーが惑星の表面に降りることができないスペースRPGにそれを使用したいので、ROAMに関連するものはすべて無視しました。現時点では、VBOで立方体を描き、球体にマッピングしています。 私はほとんどのフラクタルハイトマップ生成技術に精通しており、すでに独自のバージョンのミッドポイントディスプレイスメントを実装しています(この場合、私は知っているわけではありません)。 私の質問は、手順でハイトマップを生成する最良の方法は何ですか。タイル可能なハイトマップ/テクスチャを作成できるlibnoiseを見てきましたが、見る限りではこのようなネットを生成する必要があります。 タイルを明らかにする。 最適なルートを教えてください。 どんな入力でも大歓迎です。

3
WindowsでOpenGLバージョンをアップグレードしますか?
Platform SDKに含まれているバージョン1.1ヘッダーファイルより新しいものを使用できるように、WindowsでOpenGLのバージョンを更新するにはどうすればよいですか?SDK for Windows 7のバージョン7.0Aでさえ、OpenGLのバージョン1.1のGL.hとGLU.hのみを含んでいます。OpenGL 4.1サポートを含むボードにNVidiaドライバーをインストールしましたが、このパッケージにヘッダーファイルが含まれていません。
19 c++  opengl 

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