【发布时间】: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