問題タブ [opengl-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - テクスチャ付きのトゥーン シェーダー
OpenGL 3+ で C++ を使用してテクスチャ付きのトゥーン シェーダを実装しようとしていますが、1 週間後にはテクスチャのないカラー トゥーン シェードしか取得できませんでした。
頂点ファイル:
フラグメント ファイル:
このシェーダをテクスチャで動作させるために誰か手を貸してもらえますか?
どうも
c++ - 三角形を使用して OpenGL 3.3+ コアで四角形を描画するために使用されるコードを理解する
OpenGL 3.x+ を使用して、背景 (2D) のクワッドを描画しようとしています。四角形は非推奨であるため、目標は 2 つの三角形を使用して画面いっぱいの四角形を作成することです。動作していますが、ここにあるすべてについて 100% 明確ではありません。
設定
- はわかり
vertexPositions
ました。頂点の配列です。 glGenBuffers()
と言っているのですが、1 つのバッファが必要で、id を&positionBufferObject
?に割り当てます。glBufferData()
vertexPositions
を GPU のメモリにアップロードします。しかし、私が ID を与えなかったので、どうやってそれをアップロードしたことを知るのでしょうか?
- はわかり
描く
glEnableVertexAttribArray()
配列0で描画するつもりだと言っているだけですか?glDrawArrays()
- 2 つの頂点配列を描画したい場合はどうすればよいですか? レンダリングするものをどのように知るのですか? 上記のコマンドからそれを知っていますか?- よくわから
glVertexAttribPointer()
ない? glDrawArrays()
明らかです。
クリーンアップ、私はこれが正しいと思いますか?
セットアップ/クリーンアップは一度だけ行います。
ボーナスポイント:
- これはこれをレンダリングする最も効果的な方法ですか? 3.x+ では即時モードが使用されなくなったため、送信して「バッチ」でレンダリングすることになっていることを読みました [?]。また、配列は 1 つしかないため、この場合、バッチ処理はパフォーマンスに役立ちませんが、描画する vertxArrays が「非常に多数」であるとしたら、同じプロセスでしょうか?
- セットアップでは、配列 ID を positionBufferObject として格納していますが、レンダリング ループでハードコードされています。十数個の配列を使用すると混乱するように思えますが、変数をハードコーディングする代わりに変数を使用するのが良い方法ではないのはなぜですか?
c++ - 頂点配列オブジェクトについて(glGenVertexArrays)
頂点配列オブジェクト(VAO)を生成/作成する際のポイントと混同しています。
と
頂点などのバッファオブジェクトを作成し、VAOを作成する場合と作成しないglVertexAttribPointer
場合でそのバッファオブジェクトを記述できるためです。glEnableVertexAttribArray
私の質問は、バッファオブジェクト内のデータを記述するために実際にVAOを作成する必要がない場合、OpenGL SuperBible 5edなどのソースにVBOの作成時にVAOを作成するための呼び出しが含まれるのはなぜですか?それらは私がまだ発見していないより高度なトピックにのみ使用されていますか、私は完全に混乱していますか?
また、VBOのウィキペディアのエントリを読んでいるときにこの質問に最初に遭遇しました。サンプルコードにはへの呼び出しは含まれていませんがglGenVertexArrays()
、データはで記述されていますglVertexAttribPointer()
。Wiki VBOエントリ-VAO
がどのような理由で作成される例?
opengl-3 - GL_Painterの起動方法
誰かがOpenGlでこのプログラムを開始するのを手伝ってくれることを願っています。開始点をクリックして表示ウィンドウの描画領域をドラッグすることで線を描画するOpenGLプログラム(インタラクティブプログラム)を作成します。ユーザーが選択できるメニューをユーザーに提供します。メニューには次のオプションが含まれています。1-表示ウィンドウをクリアします。2-少なくとも色(赤、緑、青、黒)を含む線画の色を選択します。3-(一点鎖線、一点鎖線、一点鎖線、実線)を含む線パターンを選択します。4-線の太さを選択します。(1から4までの線幅)。5-プログラムを終了します。
opengl - glDrawElements とフラット シェーディング
glDrawElements を使用してオブジェクトを描画する場合、OpenGL でフラット シェーディングを実現することは可能ですか? 理想的な方法は、可能であれば、各三角形の法線を 1 回だけ計算することです。
ソリューションは、プログラマブル パイプライン (コア プロファイル) のみを使用する必要があります。
opengl - glDrawArraysを使用したVBOの描画は、OpenGL 2.1では機能しますが、OpenGL3.xでは機能しません。
コードのコア(赤い長方形を表示):
コンテキストをOpenGL3.xに切り替えると、このコードは機能しなくなります(背景の色しか表示されません)が、上記のコードと同じ方法でVAOを初期化してから、VAOをバインドしてglDrawArraysを呼び出すと、その後、それは動作します。
何が問題なのですか?VAOを使用せずにVBOを描画するにはどうすればよいですか?
(シェーダーは本当に単純ですが、複数の行列とpsのみが赤色を出力します)
c++ - OGL ESv2 の同じゲームが OGL3 では動作しない
OpenGL ESv2 または OpenGL 3 Core Profile API で描画できるエンジンをコーディングしました。しかし最近、OpenGL 3 の部分が壊れてしまい、何を変更したか思い出せず、svn コミットログも確認できません。これは、現在ダウンしている bountysource でホストしていたので、Google に引き継いだためです (ただし、OGL3 ポートが壊れています)。 )。
OpenGL ESv2 ではすべて正常に動作しますが、OpenGL 3 ではすべてが水平方向に引き伸ばされてミラーリングされます。どちらも同じ行列と頂点を使用しています。
混乱しないでください。OpenGL ESv2 および OpenGL 3 レンダラーは、異なる方法でレンダリングします。
OpenGL ESv2 は VBO を使用します。OpenGL 3 は VAO と VBO を使用します。
私のエンジンはオープン ソースなので、ここで調べることができます: Source Code。
これらは重要な部分です: Sprite Class、Base Window Class、GL3 Window Class、GL ESv2 Window Class
シェーダー:
ここにいくつかの例の写真があります:
誰かがこの問題の解決策を私に届けてくれたら、私は本当に、本当に嬉しく、感謝しています。
編集: 480x800 ウィンドウでは、gldebugger はこのマトリックスを表示します:
modviewmat
{1, -0, 0, 0}
{0, 1, 0, 0}
{0, 0, 1, 0}
{5, 770, 0, 1}
projmat
{2, 0, 0, 0}
{0, 2, 0, 0}
{0, 0, -1, 0}
{-1, -1, -0, 1}
vbo - OpenGL 3.0: VBO が原因のアクセス違反例外
かなり古い OpenGL プロジェクトを更新しています。そのため、頂点配列から VBO に移行しようとしていますが、追跡できないアクセス違反の例外があります。
したがって、クラス コンストラクターで生成する VBO と IBO を使用しています。
(gewInit() は既に呼び出されています)
さまざまなレンダリング オブジェクトは次のように定義されます。
次に、描画機能で次のことを行います。
glVertexPointer への古いスタイルの呼び出しですべてが正常に機能しました...しかし、アクセス違反の例外でプログラムがクラッシュします。それはどこから来るのでしょうか?
ありがとう
c++ - OpenGL3を適切にサポートするGUIツールキット
OpenGL3 を適切にサポートし、前方互換性のあるプロファイルを作成できる GUI ツールキットが必要です。
通常は wxWidgets を使用します。しかし、エンジンで使用するコンテキストを wxWindow または wxPanel で作成しようとすると、Window に CS_OWNDC がないため、GetDC() が失敗します。私は本当にQTを学びたくありませんが、私の最初の見た目からもサポートしていません.
では、wxWindow で適切な Canvas を作成するにはどうすればよいでしょうか、または私のニーズをサポートするツールキットはどれでしょうか? ご意見ありがとうございます。
opengl - opengl - ポイント スプライトのレンダリングの問題
ポイント スプライトをレンダリングしようとしていますが、ポイントが得られます。問題はどこだ ?(glUniform3f で色を変更すると機能します)
頂点シェーダー:
フラグメント シェーダー:
レンダリング: