2017-04-19 6 views
0

私はgl_PointSize = mix(0. , 5. , step(foo,bar));を設定する頂点シェーダーを持っています。インテルHDグラフィックス5000を搭載した私のマックは、0ではなく5である点だけをレンダリングします。ある種のradeonを搭載した別のMacでは、ゼロのようにレンダリングされます。WebGLでgl_PointSizeを0に設定

gl_PointSizeを読んだところ、gl_PointSize = 0.;で目的の動作がわからず、エイリアシングと丸めについてのビットが理解できませんでした。

ポイントを非表示にする場合は、gl_PointSize = 0.;を使用してポイントをラスタライズしないでください。そうでない場合は別のものを使用する必要がありますか?

2つのことが頭に浮かぶ:

//frag 

... 
if(vSomeVarying < 0.5) discard; //but why even rasterize, and this is still like rendering all the points regardless of the discard? 
... 


//vert 

if(someValue < 0.5){ 

    gl_Position.z = 2.; //should clip it? 

} 
+1

は、クリップスペースの外でZ(またはXまたはY)を設定すると、2番目の解決策のように見えます。 – gman

答えて

2

私は特定のポイントを "非表示" にしたい場合は、私はgl_PointSize = 0に依存している必要があります;ポイントをラスタライズしない、または私は別の何かを使うべきですか?

使用何か他のもの、P51にGLES 2.0.25でいるので:

gl_PointSizeに書き込まれた値がゼロ以下である場合、結果は未定義です。

強制的にクリップされる作品。

関連する問題