問題タブ [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.
graphics - 3D グラフィックスでは、テクスチャを使用してアンチエイリアシングを実現しないことが多いのはなぜですか?
一般に、スーパーサンプリングやマルチサンプリングなどの手法を使用して、忠実度の高い画像を生成します。
私は最近、CSS3 3D を使用してモバイル デバイスをいじっていますが、このトリックは、四角形で高品質の非エイリアス エッジを取得する素晴らしい仕事をします。
トリックが機能する方法は、クワッドのテクスチャが各次元で 2 つの余分なピクセルを獲得し、境界の外側に透明な 1 ピクセル幅のアウトラインを形成することです。テクスチャ サンプリング補間により、変換によってカメラがエッジに近づきすぎない限り、その効果は事前にフィルター処理されたアンチエイリアス レンダリング アプローチと同じです。
たとえば、3D モデルをレンダリングするためにこの種のアプローチを採用することの概念的および技術的な制限は何ですか?
私は、一般的なケースでこの種のトリックを使用することを排除する 1 つのポイントを既に持っていると思います。ジオメトリが長方形でないときは、エイリアシングを減らすことは何もしません: CSS3 を使用した HTML5 で透明な 1 ピクセルのアウトライン ボーダーを使用した結果が滑らかであるという事実は、これらの要素が長方形であり、ピクセル グリッドにきれいにラスタライズされることに依存しています。
opengl - 正規化されていないテクスチャ形式のglTexImage2DMultisample
GL_RGBA32UI
、などの正規化されていない内部形式でマルチサンプルテクスチャをレンダリングするのに問題がありますGL_RGBA32I
。これが私のコードです:
フラグメントシェーダーでテクスチャデータを手動で正規化するには:for GL_RGBA16UI
:factor = 65535
このコードを使用して、ジオメトリ全体に白いテクスチャを取得しています。ただし、正規化されたテクスチャ形式では正常に機能します。正規化されていないテクスチャの場合、フレームバッファに書き込む正しい方法は何ですか?
opengl - ドライバーによって割り当てられたサンプルの数を取得します
マルチサンプルテクスチャを使用しているアプリケーションに取り組んでいます。ここで、ドライバーによって割り当てられた実際のサンプルの数を取得したいと思います。たとえば、アプリケーションが1Xマルチサンプルテクスチャを要求した場合、ドライバーは2Xマルチサンプルテクスチャを合法的に割り当てます。ドライバーによって合法的に割り当てられたこの番号を取得するにはどうすればよいですか?glGetで対応する引数を検索しましたが、見つかりませんでした。
ios - iPad OpenGL ES が非常に遅い glResolveMultisampleFramebufferAPPLE()
OpenGL ES アナライザーを使用しています。glResolveMultisampleFramebufferAPPLE() の呼び出しに実行時間の約 90% がかかっていることがわかります。これは典型的なものですか、それともコードに非効率性がありますか? ここに私の描画コードがあります:
シーンは複雑で、各フレームに 100 万を超える三角形がレンダリングされています。私の遅いフレーム レート (10 fps) は、マルチサンプリングではなく、ドロー コールによるものだと思いました。何かご意見は?
opengl - FBOS をマルチサンプリングする方法
注意: LWJGL を使用しています。
新しい FBO を作成するためのコードは次のとおりです。
FBOを画面に描画する方法は次のとおりです。
基本的に、その関数の引数として out[2] を使用します。
では、ここでマルチサンプリングを適用するにはどうすればよいでしょうか。得られた結果のぎざぎざした外観はあまり好きではありません。描画するときに FBO の複数のサンプルを取得したいと考えています。コードを書いていただけるととても嬉しいのですが、チュートリアルなどへのリンクでもいいと思います。
ios - マルチサンプリングを使用した iOS の glReadPixels
マルチサンプリングでフレームバッファからピクセルを取得しようとしています。ゼロのみを返します。こことここで提案されているように glResolveMultisampleFramebufferAPPLE を呼び出しますが、私の場合は何が問題なのかわかりません。
まず最初に、カラー アタッチメントを使用してマルチサンプリングされていないフレーム バッファを作成します。
次に、色と深度が添付されたマルチサンプル フレームバッファを作成します。
次に、フレームバッファをクリアします:
描画を行います (これは Cocos3D 描画コードです):
次にバッファを解決します。
次に、すべてゼロを取得します。
フレームバッファの作成に成功するため、2 つの gl チェックをスキップしました。私のコードのどこにエラーがありますか?
opengl - サンプル数を超えてマルチサンプリングされたテクスチャからテクセルを取得するにはどうすればよいですか
8 つのサンプルでマルチサンプル テクスチャを作成したとします。
そして私のフラグメントシェーダーは
これはうまくいきます。ただし、上記の for ループを次のように置き換えると、
これはまだ機能します。(作品によって、私はまだ正しい画像を取得していることを意味します)
なんで?OpenGL が無効な操作エラーを生成するべきではありません。
同様に、テクスチャには 8 つのサンプルがありますが、i = 9 の場合、9 番目のサンプルを取得できますか? 私には正しく聞こえません。Fragment シェーダは実行時に失敗するはずです。
opengl - glXChooseFBConfig() アンチエイリアシングの設定?
この投稿によると、次のように述べられています
XLibを使用したマルチサンプリングでビジュアルをリクエストするには、リスト内の次の 2 つの属性を glXChooseFBConfig() に使用します。
GLX_SAMPLE_BUFFERS - その値は True でなければなりません。これはオン/オフの切り替えです。
GLX_SAMPLES - サンプル数。
これらのうち、opengl.org のマルチサンプリング セクションに関するウィキによると、glXChooseFBConfig() はこれらの属性を受け入れます。ただし、GLX_SAMPLE_BUFFERS/GLX_SAMPLES は、ここの SDK で指定されていないようです。理由がわかりますか?