問題タブ [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.

0 投票する
1 に答える
193 参照

c++ - 深度非依存ブレンディングを行うにはどうすればよいですか?

Gwenと呼ばれる GUI ツールキット用の OpenGL 3 レンダラーに取り組んでいます。ほとんどすべてが機能していますが、すべてを正しくブレンドするのに問題があります。使用するテクスチャによって三角形を並べ替え、VBO にパックしたので、単体テストでは、基本的に 3 つのレイヤーに要約されます。肌の質感。

Filled Rects は通常、他のすべてのものの上に描画され、ブレンドされますが、すべての背後の背景も Filled Rect であるため、当てにできません。それらを最後に描画すると Z 値の競合が発生し (例: ウィンドウのエッジの周りにテクスチャ付きの影があり、背景が深度テストに失敗したために黒くなる)、最初に描画するとブレンド/Z 値の競合が発生します (例: : 選択したハイライトの一部が、本来のようにブレンドされるのではなく、上に描画されます)。

Filled Rects 以外の特定のレイヤーを識別できるとは期待できません。さまざまなレイヤーにはさまざまな Z 値が含まれているため、特定の順序でレイヤーを描画して機能させることはできません。これを書いているときに、三角形を後ろから前に並べて描画する簡単な方法を考えましたが、それは多くの小さな描画呼び出しを意味する可能性があるため、避けたいと考えています。三角形の大きなバッチを保持できるブードゥー魔法のブレンドを含む方法はありますか?

0 投票する
3 に答える
4755 参照

interface-builder - OpenGL 3.2 コアを使用した NSOpenGLView

この質問が些細なことやナンセンスである場合は、事前にお詫び申し上げます...これは私が開発している最初のアプリの 1 つです。(残念ながら) 私は開発者ではありません。

のサブクラスであるカスタム ビューを含む NSWindow がありますNSOpenGLView

NSWindowと はNSOpenGLViewInterface Builder で作成されるため、どちらも必要ありinitませNSOpenGLContextNSOpenGLPixelFormat

最近 OS X Lion に切り替えたので、新しい OpenGL 3.2 を活用したいと考えています。

Appleのドキュメントから、OpenGL 3.2を有効にするには、次のように書くだけでよいことがわかりました。

を初期化する前にNSOpenGLContext.

これは(私にとっても)非常に簡単ですが、アプリにこれを実装するにはどうすればよいinit NSOpenGLContextですか?

NSOpenGLViewは Interface Builder から作成されるため、メソッドは-initWithFormat:shareContext:呼び出されません。

-initWithCoder:したがって、私は次のような方法でメソッドをオーバーライドしようとしました:

OpenGL 3.2 は、によって報告されたように正しく読み込まれますglGetString(GL_VERSION)が、作成されたコンテキストはアプリと対話しなくなりました...ビューには何も描画されません..

知っていることはすべて試しました...しかし、これを解決できません。

代わりにどうすればいいですか?

0 投票する
1 に答える
771 参照

opengl - フレームバッファ ストレージとしてのテクスチャ バッファ オブジェクト

テクスチャ バッファ オブジェクト (ARB_texture_buffer_object) をフレーム バッファ (EXT_framebuffer_object) にアタッチして、テクスチャ バッファ オブジェクトに直接レンダリングできるようにする方法はありますか?

マルチサンプル フレームバッファ (カラー バッファ、深度バッファ、ステンシル バッファ) の正確なビット単位のコピーを作成し、このコピーを VRAM ではなくメイン メモリに常駐させるために、これが必要です。

更新: 問題は、マルチ サンプリングされたフレーム バッファーで glReadPixels を直接呼び出して、その内容をコピーできないことです。代わりに、マルチ サンプリングされたフレーム バッファーを中間フレーム バッファーにブリットし、その上で glReadPixels を呼び出す必要があります。このプロセス中に、複数のサンプルが平均化され、中間バッファーに書き込まれます。もちろん、このバッファを glWritePixels で復元すると、精度が低下します。

マルチ サンプル テクスチャをフレーム バッファ オブジェクトのバッキング ストレージとして使用できることはわかっていますが、このテクスチャは VRAM に常駐し、同じ精度の損失なしにメイン メモリにコピーする方法はないようです。具体的には、カラー バッファーではなく、マルチ サンプリングされた深度バッファーのアタッチメントに関連する精度の低下が心配です。

OpenGL でマルチサンプリング フレーム バッファの正確なコピーを作成 (およびこのコピーを復元) する別の方法はありますか?

TL;DR: マルチ サンプル フレーム バッファー (具体的には深度バッファー) の正確な内容をメイン メモリにコピーし、精度を落とさずにそれらの内容を後で復元する方法。

0 投票する
1 に答える
2042 参照

opengl - バージョンが異なる複数のコンテキスト

複数の OpenGL コンテキスト間でリストを共有する実験を行っています。並列レンダリング スレッドを実行できるため、これは優れた機能です。

しかし、私は CreateContextAttribs を使用しているので、特定の OpenGL 実装を要求する可能性を提供します。そのため、一部のコンテキストがバージョン 3.2+ を実装している一方で、別のコンテキストがバージョン 2.1 を実装している場合があります。

実際には非常にうまく機能しますが、この手口には何らかの副作用が隠されているのではないかと思います。異なるバージョンを持つコンテキストを使用しているときに発生する可能性のある問題のリストは何ですか?

これを超えて、コンテキスト バージョンごとに実装された拡張機能を照会します。異なるバージョンは異なる拡張機能をサポートできると思うので、これは正しいですか? 関数ポインタはどうですか?バージョンが異なるコンテキストごとにそれらを再クエリする必要があります(実際、ポインターはバージョンによって異なります)?

0 投票する
3 に答える
2609 参照

c++ - RendertoTextureを実装しようとしています

OpenGL3でテクスチャへのレンダリングを実装するのに問題があります。

私の問題は、フレームバッファにレンダリングした後、レンダリングされたオブジェクトが変形したように見えることです。これは、どこかで不正な変換が発生したことを意味している可能性があります。フレームバッファを使用していないときにオブジェクトが正常にレンダリングされるため、これは意味がありません(投稿の下部を参照)。

現在の結果は次のとおりです。

現在の結果http://k.minus.com/jZVgUuLYRtapv.jpg

そして期待される結果はこれでした(または同様のもの、これはちょうどGIMPされました): 期待されるhttp://k.minus.com/jA5rLM8lmXQYL.jpg

したがって、フレームバッファのセットアップコードなどで何か問題が発生していることを意味します。しかし、私は何を見ることができません。


FBOは、次の機能を介して設定されます。

これが私の描画ボックスコードです。これは、変換行列を受け取り、適切な関数を呼び出します。Pの現在の値は、射影行列であり、ビュー行列(V)の単位行列です。

そして、GLUTによって呼び出される表示関数。


そして...必須のテクスチャシェーダーコード

バーテックス

断片


以下は、FBOロジックを使用しない場合にレンダリングされるものです。FBOに レンダリングされるものhttp://k.minus.com/jiP7kTOSLLvHk.jpg


... ヘルプ?

私が間違っているかもしれないことについて何か考えはありますか?リクエストに応じて利用可能なさらなるソース。

0 投票する
1 に答える
267 参照

opengl - ARBプログラム(シェーダーペア)は、非ARBバッファーオブジェクトと頂点配列を使用できますか?

ARBプログラム(シェーダーペア)は、非ARBバッファーオブジェクトと頂点配列を使用できますか?非ARBとは、NV、ATI、ARB、EXTなどの拡張子がないことを意味します。

0 投票する
1 に答える
3619 参照

c++ - glBindFramebufferは、GL_DRAW_FRAMEBUFFERターゲットを使用すると、「無効な操作」GLエラーを引き起こします

GeForce9800GTXでOpenGL3.3を使用しています。3.3のリファレンスページには、glBindFramebufferを使用した無効な操作は、glGenFramebuffersから返されていないフレームバッファーIDを示していると記載されています。それでも、glGenFramebuffersによって返されたIDと後でglBindFramebufferに送信するIDを出力しましたが、これらは同じです。

ただし、glBindFramebufferのターゲットパラメータをGL_DRAW_FRAMEBUFFERからGL_FRAMEBUFFERに変更すると、GLエラーはなくなります。ドキュメントには、GL_DRAW_FRAMEBUFFERを使用できるはずだと書かれています。GL_DRAW_FRAMEBUFFERにバインドできない場合はありますか?GL_DRAW_FRAMEBUFFERの代わりにGL_FRAMEBUFFERを使用することによる害はありますか?これはより大きな問題の症状ですか?

0 投票する
1 に答える
9203 参照

c++ - wglCreateContextAttribsARB が NVIDIA ハードウェアで失敗する

これが問題のコードです。属性を設定しようとすると、77 行目で失敗します。しかし、まったく同じコードが私の ATI でも動作します。私は NVIDIA 製品を所有しておらず、再現できませんが、もちろん修正する必要があります。誰でも問題を解決できますか? 私は何を見落としましたか?

私の定義:

#define が間違っているのではないでしょうか?

どんな入力でも大歓迎です。

ps .: AttribList[3] = 0 に関する小さな不具合。は今では修正されており、1 でなければなりません。しかし、それは問題ではありませんでした。

0 投票する
1 に答える
454 参照

c - OpenGLでネストされたループを使用して、小さな正方形のリストで平面を埋める方法は?

小さな正方形で埋められた平面をどのように設定できるかわかりません(これにより、より良い照明効果を得ることができます)。

単一の正方形を描画するための私のコードは次のとおりです。

では、ネストされたループを実行して、サーフェスを小さな正方形の数で埋めるにはどうすればよいでしょうか。小さい正方形の座標については少しわかりません。

0 投票する
1 に答える
607 参照

c++ - OpenGL-特定のグラフィックカードの問題

さまざまなコンピューターでのOpenGLレンダリングで問題が発生しています。

動作:Intel HD3000 / Sandyブリッジ:ATI 6950 ATI 6970m ATI 5670m Quadro FX 2000

動作しません:Nvidiaモビリティ9600 gt Quadro FX 1800

コード行「renderLines()」が呼び出されると、「機能しない」グラフィックカードの画面には何も表示されません。「renderLines()」がないと、テストしたすべてのグラフィックカードですべてが期待どおりに機能します。

「renderSprites()」はrenderLines()と非常によく似ていますが、唯一の違いは、線ではなく画面にクワッドをレンダリングすることです。