OpenGL440-控制frag中的线厚度。

OpenGL440-控制frag中的线厚度。,opengl,glsl,lines,vbo,aliasing,Opengl,Glsl,Lines,Vbo,Aliasing,我正在使用顶点和GL_线的VBO在opengl中绘制一个3D球形网格。我想要达到的是有一条线——天顶线——比其他线更亮 我显然存储了x、y、z坐标和法线,然后我想我可能能够使用纹理坐标来“标记”创建时-y坐标为0的位置。像这样: if (round(y) == 0.0f){ _varray[nr].tex[0] = -1.0; // setting the s variable (s,t texcoord),

我正在使用顶点和GL_线的VBO在opengl中绘制一个3D球形网格。我想要达到的是有一条线——天顶线——比其他线更亮

我显然存储了x、y、z坐标和法线,然后我想我可能能够使用纹理坐标来“标记”创建时-y坐标为0的位置。像这样:

        if (round(y) == 0.0f){ 
            _varray[nr].tex[0] = -1.0; // setting the s variable (s,t texcoord),
                                       // passed in with vbo
        }
现在在片段着色器中,我接收该值并执行以下操作:

if(vs_st[0] == -1){
    diffuse = gridColor*2.f;
}else{
    diffuse = gridColor;
}
结果看起来有点糟糕:

我意识到这很可能是由于碎片着色器必须在两点之间插值,你们能想出一个好方法来识别天顶线并使其更亮吗?我宁愿避免使用几何体着色器…

解决方案是:

if (round(y) == 0.0f) _varray[nr].tex[0] = -2; // set arb. number. 
然后不要将该变量设置到任何地方!然后在片段中:

if( floor(vs_st[0]) == -2){
    diffuse = gridColor*2.f;
}else{
    diffuse = gridColor;
}

我不知道这有多整洁,但它很管用

在片段着色器中,尝试执行
if(vs_st[0]>0.5)
。@ColonelThirtyTwo-这会起作用,如果球体始终处于其原始位置-我旋转它,我该怎么办?