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

OpenGL(Open Graphics Library)はグラフィックス標準であり、プラットフォームに依存しないAPIであり、デスクトップ、ワークステーション、モバイルデバイスで利用できます。ハードウェアアクセラレーションによるレンダリングを提供するように設計されているため、従来のソフトウェアレンダリングよりもパフォーマンスが大幅に向上します。OpenGLは、CADソフトウェアやコンピューターゲームなどのアプリケーションに使用されます。OpenGL標準とOpenGL ESは、Khronosグループによって制御されています。

4
むかしむかしに>が<よりも速いとき…ちょっと待って、何?
私は読んでいます 素晴らしいOpenGLチュートリアルをいます。それは本当に素晴らしいです、私を信頼してください。私が現在取り組んでいるトピックはZバッファです。それが何であるかを説明するだけでなく、著者は、GL_LESS、GL_ALWAYSなどのカスタム深度テストを実行できることを述べています。深度値の実際の意味(上と下ではない)も可能であることも説明しています。カスタマイズ。私はこれまで理解しました。そして、著者は信じられないようなことを言っています: 範囲zNearは、範囲zFarより大きくすることができます。そうである場合、ウィンドウ空間の値は、ビューアから最も近いまたは最も遠いものを構成するものに関して逆になります。 以前は、ウィンドウ空間のZ値0が最も近く、1が最も遠いと言われていました。ただし、クリップ空間のZ値を無効にすると、深度1はビューに最も近く、深度0は最も遠くなります。ただし、深度テストの方向を逆にしても(GL_LESSからGL_GREATERなど)、まったく同じ結果が得られます。だから、それは本当に単なる慣習です。実際、Zの符号と深度テストを反転させることは、かつて多くのゲームにとって重要なパフォーマンス最適化でした。 私が正しく理解していれば、パフォーマンスに関して、Zの符号と深度テストを反転させることは、&lt;比較を比較に変更することに他なりません&gt;。だから、私が正しく理解していて、作者が嘘をついていたり、物事を構成していなかったりした場合は、重要な最適化に変更&lt;する&gt;、多くのゲームでした。 著者は、物事を作っている私が何かを誤解していますか、それはかつての場合、確かである&lt;(遅かった極めてよりも、著者が言うように、) &gt;? このかなり興味深い問題を明確にしてくれてありがとう! 免責事項:アルゴリズムの複雑さが最適化の主な原因であることを十分に承知しています。さらに、今日は間違いなく何の違いもないだろうと私は疑っています。これを最適化するように求めているわけではありません。私は非常に、苦痛に、おそらく法外に好奇心が強いのです。
280 c  optimization  opengl  cpu  gpu 


5
バージョン4.1のOpenGLでのテキストレンダリングの最先端技術とは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する OpenGLでのテキストのレンダリングについては、すでに次のような多くの質問があります。 GUIのOpenGLライブテキストレンダリングを行う方法 しかし、主に説明されているのは、固定機能パイプラインを使用したテクスチャ付きクワッドのレンダリングです。確かにシェーダーはより良い方法を作らなければなりません。 私は国際化については特に心配していません。ほとんどの文字列はプロットの目盛りラベル(日付と時刻または純粋に数値)です。しかし、プロットは画面のリフレッシュレートで再レンダリングされ、かなりの量のテキストが表示される可能性があります(画面上のグリフは数千以下ですが、ハードウェアアクセラレーションレイアウトが適切であることには十分です)。 最新のOpenGLを使用したテキストレンダリングの推奨アプローチは何ですか?(アプローチを使用して既存のソフトウェアを引用することは、それがうまく機能することの良い証拠です) たとえば、位置と方向および文字シーケンスを受け入れ、テクスチャ化された四角形を放出するジオメトリシェーダー ベクターフォントをレンダリングするジオメトリシェーダー 上記と同じですが、代わりにテッセレーションシェーダーを使用します フォントのラスタライズを行う計算シェーダー
199 opengl  text  glsl  shader  opengl-4 


17
3Dゲームはどの程度効率的ですか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4ヶ月前に閉鎖。 この質問を改善する 私が理解したことがないものがあります。GTA IVのような大きなPCゲームは、CPUの50%を使用して60fpsで実行できますが、回転するティーポット@ 60fpsのDXデモはなんと30%を使用しますか?

4
glActiveTextureとglBindTextureの違いと関係
私が集めたものからglActiveTexture、アクティブな「テクスチャユニット」を設定します。各テクスチャユニットは複数のテクスチャターゲットを持つことができます(通常はGL_TEXTURE_1D、2D、3D、またはCUBE_MAP)。 私が正しく理解している場合、glActiveTexture最初にテクスチャユニットを設定するために(初期化してGL_TEXTURE0)呼び出す必要があり、次に(1つ以上の)「テクスチャターゲット」をそのテクスチャユニットにバインドしますか? 使用可能なテクスチャユニットの数はシステムに依存します。ライブラリに最大32個の列挙型が表示されます。これは本質的に、GPUの制限を小さくできることを意味します(これは168)およびGPUメモリ内の32のテクスチャーを同時に使用しますか?GPUの最大メモリ(おそらく1 GB)を超えないように、追加の制限があると思います。 テクスチャターゲットとテクスチャユニットの関係を正しく理解していますか?たとえば、16ユニットとそれぞれ4つのターゲットが許可されているとしましょう。それは、16 * 4 = 64ターゲットの余地があることを意味しますか、それともそのように機能しませんか? 次に、通常はテクスチャをロードします。これはを介して行うことができますglTexImage2D。最初の引数はテクスチャターゲットです。これがのようglBufferDataに機能する場合、基本的に「ハンドル」/「テクスチャ名」をテクスチャターゲットにバインドし、テクスチャデータをそのターゲットにロードして、間接的にそれをそのハンドルに関連付けます。 どうglTexParameterですか?テクスチャターゲットをバインドしてから、同じターゲットを最初の引数として再度選択する必要がありますか?または、正しいアクティブなテクスチャユニットがある限り、テクスチャターゲットをバインドする必要はありませんか? glGenerateMipmap ターゲットでも動作します...そのターゲットを成功させるには、そのターゲットをテクスチャ名にバインドする必要がありますか? 次に、テクスチャのあるオブジェクトを描画する場合、アクティブなテクスチャユニットとテクスチャターゲットの両方を選択する必要がありますか?または、テクスチャユニットを選択してから、そのユニットに関連付けられた4つのターゲットのいずれかからデータを取得できますか?これは本当に私を混乱させている部分です。
137 opengl  textures 

2
OpenGLのフレームバッファーとレンダーバッファーの概念と違いは何ですか?
フレームバッファーとレンダーバッファーの概念について混乱しています。レンダリングする必要があることは知っていますが、使用する前に理解したいと思います。 一時的な描画結果を保存するために、ビットマップバッファーが必要であることを知っています。バックバッファー。そして、それらの描画が進行中は、他のバッファが画面に表示される必要があります。フロントバッファ。そして、それらをめくって、もう一度描きます。私はこの概念を知っていますが、それらのオブジェクトをこの概念に関連付けるのは困難です。 それらの概念と違いは何ですか?

6
OpenGLでglLoadIdentity()は何をしますか?
私はOpenGLを初めて使用するので、コードにあるランダム関数のすべてに少し圧倒されます。それらは機能し、いつ使用するかはわかりますが、なぜそれらが必要なのか、実際に何をしているのかはわかりません。 glLoadIdentity()現在の行列が単位行列に置き換えられることは知っていますが、正確に何をするのですか?すべてのプログラムで必要な場合、特に指定されていない限り、なぜデフォルトで単位行列が使用されないのですか?私は自分のコードに関数を含めるのが好きではありません。リッチ2Dクライアント専用にOpenGLを使用していることに注意してください。これが3Dにとって非常に明白なものである場合、私の無知を許してください。 また、glMatrixMode(GL_PROJECTION)VS について少し混乱していglMatrixMode(GL_MODELVIEW)ます。
132 opengl  graphics 

6
GLSLシェーダーの正しいファイル拡張子は何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 12か月前に閉鎖。 この質問を改善する 私はglslシェーディングを学んでいて、さまざまなファイル形式に出くわしました。頂点とフラグメントのシェーダー.vertと.frag拡張機能を提供している人を見てきました。しかし、私はまた.vsh、.fsh拡張機能、さらには両方のシェーダーを1つの.glslファイルにまとめて見ました。それで、標準のファイル形式があるのか​​、それとも「正しい」形式なのでしょうか?
127 opengl  glsl  shader 

7
Linux上のWindows用にgcc / g ++でコンパイルする方法は?
Linuxでfreeglutを使用してC ++(g ++)でいくつかの効果を記述し、それらを g++ -Wall -lglut part8.cpp -o part8 それで、g ++が必要なすべてを含む静的にコンパイルされたWindows実行可能ファイルを作成できるかどうか疑問に思っていましたか? 私はWindowsを持っていないので、もしLinuxでそれができたら本当に素晴らしいです:)
119 c++  opengl  gcc  glut  freeglut 

9
C#でOpenGlを使用していますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 この質問を改善する C#用の無料のOpenGLサポートライブラリはありますか?その場合、どちらを使用し、サンプルプロジェクトはどこにありますか? C#はOpenGL用のクラスを提供していますか?
118 c#  opengl 

4
頂点配列オブジェクトとは何ですか?
:私はちょうどこのチュートリアルから今日OpenGLを学ぶために始めていますhttp://openglbook.com/the-book/ 私は三角形を描く第2章になった、と私はVAOs除くすべてが理解(この頭字語OKでしょうか?)。チュートリアルには次のコードがあります。 glGenVertexArrays(1, &amp;VaoId); glBindVertexArray(VaoId); コードが必要であることは理解していますが、コードが何をするのかわかりません。この時点を超えてVaoIdを使用することはありませんが(破棄する場合を除いて)、コードはそれなしでは機能しません。これは拘束する必要があるためだと思いますが、理由はわかりません。この正確なコードは、すべてのOpenGLプログラムの一部である必要がありますか?このチュートリアルでは、VAOについて次のように説明しています。 頂点配列オブジェクト(またはVAO)は、頂点属性が頂点バッファーオブジェクト(またはVBO)に格納される方法を説明するオブジェクトです。これは、VAOが頂点データを格納する実際のオブジェクトではなく、頂点データの記述子であることを意味します。頂点属性は、glVertexAttribPointer関数とその2つの姉妹関数glVertexAttribIPointerおよびglVertexAttribLPointerで記述できます。最初の関数については、以下で説明します。 VAOが頂点の属性をどのように記述するかわかりません。私はそれらをどのようにも説明していません。glVertexAttribPointerから情報を取得しますか?たぶんこれだと思います。VAOは単にglVertexAttribPointerからの情報の宛先ですか? 余談ですが、私がフォローしているチュートリアルは受け入れられますか?気をつけるべきことはありますか、それともより良いチュートリアルがありますか?
114 opengl  vbo  vertex-array  vao 

8
opengl:glFlush()とglFinish()
呼び出しの実際的な違いを区別するのに苦労しています glFlush()としglFinish()。 ドキュメントはと言うglFlush()とglFinish()1の違いは、され、それらはすべて実行されます保証することができますようにOpenGLにバッファリングされたすべての操作をプッシュしますglFlush()リターンがすぐ場合などglFinish()ブロックすべての操作が完了するまで。 定義を読んだ後、それを使用glFlush()すると、OpenGLに実行できるよりも多くの操作をOpenGLに送信するという問題が発生する可能性があると考えました。だから、試してみるために、glFinish()ために、はa glFlush()とloました。見たところ、私のプログラムは(私の知る限り)実行されましたが、まったく同じです。フレームレート、リソース使用量、すべてが同じでした。 したがって、2つの呼び出しの間に大きな違いがあるのか​​、それとも私のコードで2つの呼び出しに違いがないのかと思います。または、一方を他方に対して使用する必要がある場合。また、OpenGLが次のような呼び出しを行うこともわかりましたglIsDone() aのすべてのバッファリングされたコマンドglFlush()が完了したかどうかを確認する(そのため、実行可能な速度よりも速くOpenGLに操作を送信しないでください)が、そのような関数を見つけることができませんでした。 私のコードは典型的なゲームループです: while (running) { process_stuff(); render_stuff(); }
105 c++  c  opengl  graphics 


9
透明な背景でOpenGLレンダリングコンテキストを作成する方法
レンダリングコンテキストは通常​​、背景に単色(黒または何でも、下の画像を参照)があります。 OpenGLのものをその上にレンダリングできるようにしながら、装飾なしで透明な背景を持つウィンドウをセットアップできるかどうか疑問に思っています。 これは、三角形が画面上に浮かんでいるような錯覚を与えます。透明な背景では、背後にある可能性のあるデスクトップまたはその他のアプリケーションを確認できます。 ソースコードで例示していただけませんか? プラットフォーム:Windows(win32のみ)

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