問題タブ [multisampling]
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.
opengl - wxWidgets OpenGL プログラムのマルチサンプリングを有効にする方法は?
マルチサンプリングは、 3D アプリケーションでフルスクリーン アンチエイリアシング(FSAA) を適用する方法です。現在wxWidgets GUIに組み込まれている OpenGL プログラムでマルチサンプリングを使用する必要がありますこれを行う方法はありますか?これを達成するための詳細な手順を知っている場合にのみ回答してください。
WGL (OpenGL の Win32 拡張機能) を使用してマルチサンプリングを有効にしていることは認識しています。ただし、私の OpenGL プログラムは MFC で書かれていないため (そしてコードをマルチプラットフォームで移植できるようにしたいので)、それは私にとって選択肢ではありません。
opengl - FBOのglReadPixelsがマルチサンプリングで失敗する
色と深さのアタッチメントが付いたFBOオブジェクトがあり、レンダリングしてから読み取り、glReadPixels()
マルチサンプリングサポートを追加しようとしています。
代わりに、カラーアタッチメントとデプスアタッチメントの両方glRenderbufferStorage()
を求めています。glRenderbufferStorageMultisampleEXT()
フレームバッファオブジェクトは正常に作成されたようで、完了として報告されます。
レンダリングした後、私はそれから読み込もうとしていglReadPixels()
ます。サンプル数が0の場合、つまりマルチサンプリングが無効になっている場合、完全に機能し、必要な画像が得られます。サンプル数を別の値、たとえば4に設定すると、フレームバッファーは正常に構築されますが、glReadPixels()
失敗します。INVALID_OPERATION
誰かがここで何が間違っている可能性があるか考えていますか?
編集:glReadPixelsのコード:
ここで、ptrはwidth *heightuintsの配列を指します。
opengl - マルチサンプリング時にOpenGLテクスチャで深度値はどのように解決されますか?
FBOを使用して、シーンをデプステクスチャにレンダリングしています(GL_DEPTH_COMPONENT
)。アプリケーションでマルチサンプリングを有効にすると、それらのサンプルは単一のテクセルに解決されますが、どのように結合されますか?最も近いサンプルの深さはテクスチャに保存されていますか、それともサンプルの平均ですか?この動作はベンダーに依存しますか?
directx - D3D9でのアンチエイリアシング/マルチサンプリング
私はD3D9で3Dモデリングアプリケーションを作成しており、可能な限り広く互換性を持たせたいと考えています。これは、ハードウェアに依存する機能、つまりマルチサンプリングをほとんど使用しないことを意味します。ただし、リアルタイムレンダリングは完璧である必要はありませんが、見栄えの良い画面キャプチャを提供する必要があります。マルチサンプリングを行わないと、エイリアシングが発生し、見栄えが悪くなります。
画面キャプチャを作成するには、メモリ内に一時的なサーフェスを作成し、シーンを1回レンダリングしてから、ファイルに保存します。アンチエイリアスキャプチャを実現する方法について最初に考えたのは、オフスクリーンのステンシルサーフェスをマルチサンプルとして作成することでしたが、デバイス自体がD3DMULTISAMPLE_NONEで初期化されていたため、もちろんDXではそれができませんでした。
まず、スクリーンキャプチャを作成する方法のサンプルを次に示します。すでにレンダリングされたフレームのバックバッファを保存する方が簡単なことはわかっていますが、実際のレンダリングウィンドウとは異なるサイズの画像を保存する機能が必要です。そのため、この方法で保存します。エラーチェック、状態を復元するためのコード、およびリソースの解放は、簡潔にするためにここでは省略されています。m_d3ddevは私のLPDIRECT3DDEVICE9です。
CreateDepthStencilSurface()の呼び出しを見ることができます。これは、pp.MultiSampleTypeをieD3DMULTISAMPLE_4_SAMPLES
に置き換えることができると期待していた場所ですが、機能しませんでした。
私の次の考えは、(ビデオカードに関係なく)D3DDEVTYPE_REF
常にサポートする、まったく異なるLPDIRECT3DDEVICE9を作成することでした。D3DMULTISAMPLE_4_SAMPLES
ただし、すべてのリソース(メッシュ、テクスチャ)がHALデバイスであるm_d3ddevにロードされているため、REFデバイスでシーンをレンダリングするためにそれらを使用することはできませんでした。Direct3d9ex(Vista)ではデバイス間でリソースを共有できますが、私はXPで作業していることに注意してください。非常に多くのリソースがあるため、この1つのフレームをレンダリングするためにすべてをリロードしてからアンロードすることは、私のアプリケーションにとって時間効率が悪すぎます。
キャプチャ後に画像をアンチエイリアスするための他のオプション(つまり、3x3ブラーフィルター)を調べましたが、それらはすべてかなりひどい結果を生成したので、可能であれば、D3Dからアンチエイリアスされたシーンを取得してみてください。
どんな知恵や指針も大歓迎です...
ありがとう!
opengl - WGL: ダブルバッファリングなし + マルチサンプリング = FAIL?
私は通常、これらの引数を使用してピクセル形式を作成しwglChoosePixelFormatARB()
ます (特に):
つまり、ダブル バッファリングと x4 マルチサンプリングです。これはうまくいきます。
しかし、ダブルバッファリングをオフにしようとすると:
への呼び出しがwglChoosePixelFormatARB()
失敗します (または、何も作成されなかったことを示します)
マルチサンプリングを効果的にオフにすると:
また元気に働いています。
非ダブルバッファピクセルフォーマットがマルチサンプリングで動作するのを妨げる固有のものはありますか?
ダブル バッファリングをオフにする理由は、制約のないフレーム レートを実現するためです。ダブル バッファリングを使用すると、フレーム レートは最大 60 FPS になります (このラップトップ LCD は 60 Hz で動作します)。しかし、ダブル バッファリングをオフにすると、最大 1500 FPS を得ることができます。ダブルバッファリングをオンにしてこれを達成する方法はありますか?
opengl - OpenGL で複数のカラー アタッチメントを使用してマルチサンプリングされた FBO をブリッティングする
OpenGL プログラムに複数のカラー アタッチメントを持つフレーム バッファ オブジェクトがあり、それをマルチサンプル FBO にアップグレードしようとしています。
私が理解しているように、マルチサンプリングされた FBO はレンダー バッファー、特に を使用して作成されたもののみを使用できますglRenderbufferStorageMultisampleEXT
。テクスチャでこの FBO に何かをレンダリングしたい場合は、付属のテクスチャを使用して 2 番目の FBO を作成し、次に を使用してマルチサンプリングされた FBO を通常の FBO にブリットする必要がありますglBlitFramebufferEXT
。
私が見た非常にまばらな例は、単色のアタッチメントを想定しています。複数の色のアタッチメントをブリットしたい場合はどうすればよいですか?
xna - XNAアンチエイリアスの質問!
XNAとアンチエイリアスに問題があります。を使用してアクティブ化できます
ただし、アンチエイリアスは2倍にすぎません。設定しても
アンチエイリアシングは2倍にとどまります。グラフィックスドライバーの設定(NVIDIA GeForce 9800 GT)に移動し、アプリケーションのアンチエイリアスタイプを16倍に設定すると、きれいできれいなアンチエイリアスが得られます。しかし、それが「アプリケーションが決定する」に設定されている場合、私は2倍を超えることはありません
なぜだれか考えますか?ありがとう!
c++ - OpenGL: マルチサンプリング描画を有効にすると、高ズーム レベルでポリゴンのエッジがめちゃくちゃになる
この次のコードを使用する場合:
次に、マルチサンプリングを有効にすると、プログラムが最大ミップ レベルを気にしなくなったことに気付きました。
編集:最後のミップレベルもレンダリングします。これが問題です。レンダリングしたくありません。
Edit3: ミップ制限をまったく忘れないことをテストして確認したため、GL_TEXTURE_MAX_LEVEL 設定に従います。...だから、問題はミップマップに関連していない、と思う...
Edit2:スクリーンショット、これは世界地図を大幅に縮小し、低角度を使用して効果を可能な限り最悪の方法で表示します。また、地図の下に水平面がレンダリングされているため、地図以外の場所から黒いピクセルを取得する可能性はありませんテクスチャ:
代替テキスト http://img511.imageshack.us/img511/6635/multisamplingtexturelim.png
Edit4:これらの写真はすべて右上隅の写真のように見えるはずです (マルチサンプリングに応じてエッジが滑らかになります)。しかし、どうやら私のコードには何かひどく間違っているようです。ミップマップを使用する必要があります。ミップマップは問題ではなく、完全に機能します。
何が間違っているのですか、どうすればこれを修正できますか?
iphone - iPhone の OpenGL ES でマルチサンプリングを有効にするにはどうすればよいですか?
私は、OpenGL ES ベースのアプリの「解像度」を改善することを試みています。Apple はここ(developer.apple.com) で、iOS 4 の OpenGL ES がマルチサンプリングをサポートしていると述べています...これにより、グラフィックスが多少改善される可能性があります。 マルチサンプリングを有効にするにはどうすればよいですか?
opengl - マルチサンプリングopengl?
マルチ サンプリングのサンプルを実行しましたが、正しく動作しません。サンプル バッファーとサンプルが 0 のため、マルチ サンプリングが適用されていないようです。正しくするにはどうすればよいですか?
ありがとう。
これは私のコードです: