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

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

3
シェーダー経由でテクスチャメモリを更新しますか?
タイトルは何を言っています。GLSLシェーダーを介してテクスチャを更新することは可能ですか?何かのようなもの : //Read vec4 Pixel = texture2D(TextureID,gl_TexCoord[TextureIndex].st); //Write to texture memory ? vec4 NewPixel = Pixel + vec4(0.0,0.0,0.0,AlphaPatch); // ?? How to write back to texture memory ?? texture2D(TextureID,gl_TexCoord[TextureIndex].st) = NewPixel; ??

2
単純なシェーダーを使用すると、パフォーマンス/バッテリー寿命が向上しますか?
Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。 固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。 fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。


3
D3D9およびOpenGL頂点データ管理のためのより良い抽象化レイヤーとは何ですか?
私のレンダリングコードは常にOpenGLでした。OpenGLがないプラットフォームをサポートする必要があるため、OpenGLとDirect3D 9をラップする抽象化レイヤーを追加する必要があります。Direct3D11は後でサポートします。 TL; DR: OpenGLとDirect3Dの違いにより、プログラマーに冗長性が生じ、データレイアウトが不安定に感じられます。 今のところ、私のAPIは少しこのように動作します。これがシェーダーの作成方法です。 Shader *shader = Shader::Create( " ... GLSL vertex shader ... ", " ... GLSL pixel shader ... ", " ... HLSL vertex shader ... ", " ... HLSL pixel shader ... "); ShaderAttrib a1 = shader->GetAttribLocation("Point", VertexUsage::Position, 0); ShaderAttrib a2 = shader->GetAttribLocation("TexCoord", VertexUsage::TexCoord, 0); …

1
アンリアルのようなエンジンはOpenGLやDirectXとどのように関係していますか?
私はコンピュータグラフィックスにまったく不慣れであり、さらにゲーム開発にも不慣れです。基本を素早く学ぶための情報を探しています。頭の中に一つ質問があります。Crytek EngineやUnreal Engineなどのエンジンは、OpenGLまたはDirectXとどのように関連していますか? 私はゲームの物理学に非常に興味がありますが、物理学、グラフィックス、およびエンジンがどのように組み合わされているのかわかりません。埋められないギャップがあります。

1
非即時OpenGLではアニメーションはどのように処理されますか?
私は現代のOpenGLの初心者です。私は当面のOpenGL方法論に慣れていますが、VBOを真剣に使用したことはありません。私の質問はアニメーションについてです。即時モードでは、アニメーションを実現するには、オブジェクト空間で(キーフレームから補間された)異なる頂点位置をストリーミングする必要があります。 非イミディエートOpenGLでこれをどのように実現しますか?当然のことながら、フレームごとに新しいVBOデータをアップロードすると、グラフィックバスが占有されます。私はそれを行うための現代的な方法についての文献を見つけていません。それについて考えて、私はいくつかのオプションに行きました: 属性: 3Dオフセットとしてのアニメーション。フレームごとに、異なる(可能な補間された)オフセット属性が各頂点に渡され、各キーフレームの同じ頂点に適用されます。 インデックス:キーフレームを絶対的な頂点として格納し、キーフレームごとに異なる頂点のセットを使用して、インデックスを介してそれらにアクセスします。隣接するキーフレームにアクセスできないため、キーフレーム間を補間できないため、このアプローチは不可能です。また、手続き型アニメーションでは悪い考えのようです。 テクスチャ:これは非常に伸縮性があるかもしれませんが、私にとっては良い解決策のように聞こえます。この場合も、アニメーションは各頂点のxyzオフセットと見なされます。各キーフレームは、次元が頂点IDにマップされる1Dテクスチャに保存できます。私が間違っていない場合、OpenGL 4.0では、任意のシェーダーからテクスチャにアクセスできるため、このテクスチャを頂点シェーダーから読み取って、各頂点変換を適用できます。2Dテクスチャは複数のフレームを保持できます。引き続き補間を実行します(そして、補間がフラグメントシェーダーの外側のテクスチャに対して機能する場合、確信が持てませんが、線形補間を無料で行うことができます!)これは、骨のアニメーションなどのより複雑なアニメーションシステムにそれほど労力をかけずに適用できます。 私はこれを考えすぎていますか?誰かが光を当てることはできますか?
8 opengl  animation  vbo 

2
頂点バッファーオブジェクトの主な用途は何ですか?
私が読んだことから、VBOは純粋にパフォーマンスを目的としているようです。 私はlwjglの非常に初歩的な学習プロジェクトに取り組んでいます。ライブラリのさらに高度な機能と、それらの用途を理解しようとしています。 私の理解では、VBOを使用すると、頂点が現在シーンに描画されていない間でも、VRAMに頂点を保持できます。私の場合、クワッドを描画しているだけで、パフォーマンスはおそらくまったく問題ではありませんが、内部で何が起こっているのかをまとめようとしています。クワッドを直接描画している場合、CPUメモリから描画していますか?また、可視性のチェックを行わない場合、それが表示されているかどうかに関係なく、「シーン」内のすべてを完全にレンダリングしていることを意味しますか?VBOはオブジェクトを格納し、必要なものだけをレンダリングする方法ですか?
8 opengl  java  lwjgl 

2
深度テストに合格したフラグメントの数を取得する
「モダン」環境では、「NVオクルージョンクエリ」拡張機能により、深度テストに合格したフラグメントの数を取得する方法が提供されます。ただし、OpenGL ESを使用するiPad / iPhoneでは、拡張機能は利用できません。 フラグメントシェーダーで同様の動作を実装するための最もパフォーマンスの高いアプローチは何ですか? 私のアイデアのいくつか: オブジェクトを完全に白でレンダリングし、次に2パスシェーダーを使用してすべての色を一緒にカウントします。最初に垂直線がレンダリングされ、各フラグメントについて、シェーダーは行全体の合計を計算します。次に、フラグメントが最初のパスのすべての部分和を合計した単一の頂点がレンダリングされます。非常に効率的ではないようです。 オブジェクトを黒の背景の上に完全に白でレンダリングします。合理的に小さい解像度になるまで、テクスチャ間のハードウェア線形補間を悪用して、再帰的にダウンサンプリングします。これは、対応する領域内の白いピクセルの数に応じてグレースケールレベルを持つフラグメントにつながります。これでも十分正確ですか? ミップマップを使用して、単純に1x1レベルのピクセルを読み取ります。繰り返しになりますが、精度の問題と、2のべき乗ではないテクスチャを使用しても可能かどうかという問題です。 これらのアプローチの問題は、パイプラインが停止し、パフォーマンスに大きな問題が発生することです。したがって、私の目標を達成するためのよりパフォーマンスの高い方法を探しています。 EXT_OCCLUSION_QUERY_BOOLEAN拡張の使用 Apple はiOS 5.0 for iPad 2でEXT_OCCLUSION_QUERY_BOOLEANを導入しました。 "4.1.6 Occlusion Queries Occlusion queries use query objects to track the number of fragments or samples that pass the depth test. An occlusion query can be started and finished by calling BeginQueryEXT and …

1
OpenGL対物理学?
私はゲームプログラミングに非常に慣れていないため、最初のプロジェクトに参加しています。私は専門家の助言が必要になるようになりました: ゲームの物理演算がオブジェクトを操作できるようにするには、3D空間での各オブジェクトの位置と方向を知る必要があります。シミュレーションの一部として、オブジェクトによる移動(位置の変更)および方向の変更(回転)。 これは、回転と平行移動の計算が2回行われることを意味しますか?物理学の1つともう1つは、オブジェクトを描画する前にglTranslateとglRotateを使用して行われますか? IMOこれは起こらないはずです。また、物理部分で平行移動と回転を計算すると、GPUではなくCPUが使用され、パフォーマンスに影響します。 これは専門家によってどのように行われ、そのような状況を処理するための効率的なゲームアーキテクチャについてどのようなアドバイスをしますか?
8 opengl  physics 

2
3D BSPベースのグラフィックエンジンに関するアドバイスが必要[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 古いゲーム形式用にOpenGL BSPビューアをコーディングしました。Quake 3のファイル形式とよく似ています。グラフィックエンジンの開発に興味があるので、現在の技術を使って見ながら開発していきたいです。だから私はあなたに目を向け、何に焦点を当てるかの方向性についての主題の専門家。これをできるだけ速くしたいと思います。古いファイル形式が非常に単純でポリゴンが少ないことを考えると、それは実行できるはずです。ここに私の質問があります: 照明a。頂点ライティングを学ぶのは理にかなっていますか、それとも代わりにピクセル単位のライティングを実装する必要がありますか?b .OpenGLには8つの光制限があることを知っています。シェーダーを通して、環境光と残りのコンピューターにそのうちの1つだけを現実的に使用する必要がありますか?そうでない場合、どうすればよいですか? ソート/カリングa。レンダリングするサーフェスをソートするために最も一般的に使用されるアルゴリズムは何ですか。複雑さは本当に問題ではありません。現在使用されているものと、目に見えるものだけを実際にレンダリングする方法を学びたいです。ペインターのアルゴリズムのように記述された多くのアルゴリズムを見てきましたが、BSPベースのジオメトリにとって何が最も理にかなっているのか疑問に思っています。b。アルファマスクのテクスチャがある場合、並べ替えにはこのプロセスとの何らかの関係があると言われました。3Dスペースで正しくレンダリングできるようにするにはどうすればよいですか? グラフィックパイプラインa。VBO経由でジオメトリデータを送信する必要がありますか?これは今日使用されている標準ですか?b。200〜300の可能性がある複数の「リージョン」がある場合、200〜300のチャンクを送信せずにGPUに送信するためのより良い方法を見つける必要があります。それらを1つに結合し、それぞれに関連付けられた参照を保持する必要があります。 BSPベースのレンダリングおよびそのような性質に関するその他のヒントはありますか? また、間違っていた場合は訂正してください。私は、無知で気づかれずに修正されて少し恥ずかしくなる人です。 お時間をいただきありがとうございます。本当に感謝しています。
8 opengl  bsp 

3
OpenGLの内部を学習するためにOpenGLドライバーがどのように実装されるのか知りたいのですが?
私はOpenGLを学んでいて、グラフィックスカードとの相互作用がどのようになるかを本当に知りたいです。 それがグラフィックスドライバーでどのように実装されたかを理解し、openglの完全な内部を知らせます(これにより、openglでのパフォーマンスに関する決定にどの段階/要因が影響するかを知ることができます)。 このパスを進める方法はありますか?「Mesa lib」を探索することは、この点で私に役立ちますか?私は正しい道にいますか? [この質問をSOFに投稿しましたが、ここがこの質問の正しい場所であるようです。]

2
Openglでオブジェクトの周りに輪郭を描く
3D空間で2Dオブジェクトの周りに輪郭を描く必要があります。オブジェクトの周りに線を引いてみましたが(ギャップを埋めるためのポイント)、線の幅のため、その一部(〜50%)がオブジェクトを覆っていました。この問題を解消するためにステンシルバッファーを使用しようとしましたが、次のようになりました(輪郭は緑です)。 http://goo.gl/OI5uc(評判のため、画像を投稿できません) 線の一部がオブジェクトの背後にあり、一部が上にあることが(矢印が指しているところ)わかります。これはカメラを動かすと変化しますが、常にそれを覆っている部分があります。これが、オブジェクトの描画に使用するコードです。 glColorMask(1,1,1,1); std::list<CObjectOnScene*>::iterator objIter=ptr->objects.begin(),objEnd=ptr->objects.end(); int countStencilBit=1; while(objIter!=objEnd) { glColorMask(1,1,1,1); glStencilFunc(GL_ALWAYS,countStencilBit,countStencilBit); glStencilOp(GL_REPLACE,GL_KEEP,GL_REPLACE ); (*objIter)->DrawYourVertices(); glStencilFunc(GL_NOTEQUAL,countStencilBit,countStencilBit); glStencilOp(GL_KEEP,GL_KEEP,GL_REPLACE); (*objIter)->DrawYourBorder(); ++objIter; ++countStencilBit; } 私はステンシルバッファーのさまざまな設定を試しましたが、常にそのようなsthを取得していました。ここに質問があります: 1.ステンシルバッファを間違って設定していますか? 2.そのようなオブジェクトに輪郭を作成する他の簡単な方法はありますか? 前もって感謝します。 編集: 1.オブジェクトの法線がありません。 2.物体は凹面である可能性があります。 3.シェーダーを使用できません(以下の理由を参照してください)。

1
自分で最適化したモデル形式を実際に作成する必要がありますか?
だから私はゲーム開発の世界の真新しいnoobであり、私はC ++とopenGLを使って自分のゲームを書こうとすることから始めています。モデルなどの読み込みに取り掛かっていますが、「最適な形式」を探していると、一般的な形式のほとんどがモデリングアプリケーション間の移植用であり、必ずしもゲーム環境に読み込むときのデータの最終的な表現ではないことがわかりました。最終的にはコラダなどのフォーマットを使用して、ゲームに最適化されたカスタムバイナリフォーマットに変換したいとさまざまな情報源から言われています。これは絶対に必要ですか?大きなXMLやその他のASCII形式の解析は、バイナリファイルタイプの読み取りよりも遅くなるという考えを理解していますが、そうしないと、パフォーマンスが大幅に低下しますか?見えない、
8 opengl  c++  models 

1
LinuxのSDLでOpenGLハードウェアアクセラレーションを取得する
SDL + OpenGLを使用しようとしていますが、約18000ポリゴンのフレームレートはクアッドコアマシンでは約24fpsですが、Intel Atomでは希望しない1-2fpsであるため、ハードウェアアクセラレーションが機能しているとは思いません。ポリゴン数がこれを超えると、クアッドコアでさえ苦労し始めます。 私は自分のコードをチェックしましたが、明らかな何かが欠けています。SDL OpenGLテストと同じコードを使用するようにSDL初期化コードを変更しました。SDL_GL_ACCELERATED_VISUALは1ですが、SDL_VideoInfoのhw_availableは0であると報告されています また、両方のマシンのNvidiaとCompizやglxgearsなどの高速化されたアプリが正常に動作するため、ベンダーは正しく報告されます。 何を試すかについてのアイデアはありますか? ありがとう
8 opengl  c++  sdl  linux 

4
GLUTを使用してOpenGLのウィンドウ内でマウスをトラッピングしますか?
GLUTが制限されており、次の問題はおそらくOpenGL / GLUTで解決できないことを私は完全に理解していますが、それができるかどうか正確にわからないので、私は尋ねるほうがよいでしょう。多分私は何か間違ったことをしている、または何か重要なことを忘れています。またはおそらくそうではなく、GLUTはこれより良くなりません。 私の問題は、ウィンドウ内にマウスを閉じ込められないことです。まあ、実際には、私はできる、以下のコードはそれだけを行います。マウスをウィンドウ内に閉じ込め、マウスを自由に使用して世界を回転させることができます。問題?マウスの動きが速すぎると、窓の刑務所から抜け出すことができます。 OpenGL / GLUTでこれを回避する方法はありますか、または唯一のオプションは別のライブラリか、Windows APIを直接呼び出すことですか?十分な言葉、これが私の現在のコードです: void processPassiveMouseMotion(int x, int y) { static int centerX = glutGet(GLUT_WINDOW_WIDTH) / 2; static int centerY = glutGet(GLUT_WINDOW_HEIGHT) / 2; CameraAngle.x = -1.0f * (y - centerY); CameraAngle.y = -1.0f * (x - centerX); if(CameraAngle.x != 0.0f || CameraAngle.y != 0.0f) { …
8 opengl  windows  glut 

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