【问题标题】:gl_PointSize zero in WebGLWebGL 中的 gl_PointSize 为零
【发布时间】:2017-04-19 02:02:09
【问题描述】:

我有一个设置gl_PointSize = mix( 0. , 5. , step(foo,bar) ); 的顶点着色器。我的带有 Intel HD Graphics 5000 的 Mac 只渲染 5 点,而不是 0。另一台带有某种 radeon 的 Mac 渲染了 0,就好像它们是 1 一样。

我已通读 gl_PointSize,但不明白 gl_PointSize = 0.; 的期望行为是什么,也不了解关于别名和舍入的一点。

如果我想“隐藏”某些点,我应该依靠gl_PointSize = 0.; 甚至不栅格化这些点,还是应该使用其他东西?

想到两件事:

//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?

}

【问题讨论】:

  • 似乎您的第二个解决方案,将 Z(或 X 或 Y)设置在剪辑空间之外,会起作用。

标签: webgl fragment-shader vertex-shader glsles


【解决方案1】:

如果我想“隐藏”某些点,我应该依赖 gl_PointSize = 0.;甚至不栅格化点,还是我应该使用其他东西?

使用其他东西,因为在 p51 上的GLES 2.0.25

如果写入gl_PointSize 的值小于或等于零,则结果未定义。

强制裁剪顶点有效。

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2019-06-24
    • 2017-08-06
    • 2021-11-02
    相关资源
    最近更新 更多