我有一个设置gl_PointSize = mix( 0. , 5. , step(foo,bar) );
的顶点着色器。我的Mac配有英特尔高清显卡5000,只渲染5分,而不是0分。另一个带有某种radeon的mac渲染了零,好像它们是一个。
我已经阅读了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?
}
答案 0 :(得分:2)
如果我想“隐藏”某些点,我应该依赖gl_PointSize = 0。甚至没有光栅化这些点,还是我应该使用别的东西?
使用其他内容,因为在p51上的GLES 2.0.25:
如果写入
gl_PointSize
的值小于或等于零,则结果未定义。
强制修剪顶点有效。