2017-08-08 3 views
0

は、私は2つの単純なGLSLシェーダを使用してフル画面で画像を表示しようとしていますglEnable(GL_MULTISAMPLE)が自分のテクスチャで機能しているかどうかを調べるには?</p> <p>バーテックスシェーダ:

#version 330 

layout (location = 0) in vec3 aPos; 
layout (location = 1) in vec2 aTexCoord; 

out vec3 ourColor; 
out vec2 TexCoord; 

void main() 
{ 
    TexCoord = aTexCoord; 
    gl_Position = vec4(aPos, 1.0); 
} 

とフラグメントシェーダ:OpenGLのコードで

#version 330 

uniform sampler2D tex0; // loading the texture here 

in vec3 TexCoord; // texture coordinates 
out vec4 fColor; // fragment shader output 

void main(){ 
    fColor = texture2D(tex0,TexCoord); 
} 

、OpenGLの中プロパティ設定、実行する

glEnable(GL_MULTISAMPLE); 

OpenGLはドライバがこれをサポートしている場合にのみマルチサンプリングを実行することをオンラインで読んでいます。

OpenGLに上記の呼び出しが機能していることを確認できますか? 私のマシングラフィックスカードがこの呼び出しをサポートしているかどうかはわかりますか?

+0

これはドライバの機能に依存していることに気付かないでしょう。レンダリングターゲットがマルチサンプリングをサポートしているかどうかは、ドライバに直接関係していないかどうかによって異なります。 **ため、この検索で​​は [サンプルコード](https://learnopengl.com/code_viewer.php?code=advanced/anti_aliasing_multisampling) : – BDL

+0

私はこれを実行するにはいくつかの例のコードをチェックしていたし、私は、このファイルに出くわしましたglEnable(GL_MULTISAMPLE)** ドライバベースのコメントがあります。 レンダーターゲットがマルチサンプリングをサポートしているかどうかを確認する方法はありますか? –

+0

最初のビューからは、あなたの太いテキストと似た何かがあなたのリンクにあります。私が見ているのは、マルチサンプリングがデフォルトで有効になっているかどうかだけです。あなたのウィンドウシステムがあなたにマルチサンプルウィンドウ/バックバッファとOpenGLコンテキスト> 1.3を与えることができるならば、マルチサンプリングが機能しなければなりません。 – BDL

答えて

1

一般的なケースでは、実装がマルチサンプリングをサポートしているかどうかを確認するのは簡単です。

マルチサンプルは、マルチサンプルされたデフォルトフレームバッファまたはマルチサンプルFBOの2つの方法で取得できます。後者は、 FBOのマルチサンプル画像を明示的に作成することによってのみ発生します。私はあなたがglRenderbufferStorageMultisampleまたはglTexStorage2DMultisampleと呼んでいる時を知ることができると思いますが、複数のサンプルがある場合はフレームバッファ(FBOまたはデフォルト)を尋ねることができるので、問題はありません。

これを行うには、フレームバッファをGL_DRAW_FRAMEBUFFERにバインドし、glGetIntegervGL_SAMPLE_BUFFERSと呼ぶことができます。その値が1の場合、バッファはマルチサンプルされます。 GL_SAMPLESを照会することで、サンプル数を取得できます。

GL 4.5以上では、glGet(Named)FramebufferParameterivを使用してこれらのパラメータを照会できるため、FBOをバインドする必要はありません。


すべてのことに言えば、大きな問題が1つあります。レンダリングで行ったことは、マルチサンプルされません。マルチサンプリングできませんアンチエイリアステクスチャクワッド。これは、三角形のエッジでのみアンチエイリアスを実行します。パフォーマンスが気に入らない限り、サンプルごとのシェーディングをオンにしない限り、テクセルからフェッチされたデータは影響を受けません。

したがって、マルチサンプリングが行われている場合でも、の特定のレンダリング操作では、その効果は表示されません。

関連する問題