2014-09-18 38 views
1

我正在使用顶点和GL_LINES的VBO在opengl中绘制3D球形网格。我想达到的目标是让一条线 - 天顶线比其他线更亮。OpenGL 440 - 控制frag中的线条粗细。

我明明商店X,Y,Z COORDS和法线,那么我还不能够使用,其中在创建纹理坐标“标签”的位置 - 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; 
} 

而且结果看起来有点可怕: Print Screen

我意识到这可能是因为片段着色器不得不在两点之间进行插值,你们能否想出一个确定天顶线并使其更明亮的好方法?我宁愿避免使用几何着色器...

+1

在您的片段着色器中,请尝试执行if(vs_st [0]> 0.5)'。 – 2014-09-18 17:50:29

+0

@ColonelThirtyTwo - 如果球体在任何时候都处于原始位置,那么它就可以工作 - 我旋转它,然后我该怎么办? – mike 2014-09-18 19:29:48

回答

0

解决方案是这样的:

if (round(y) == 0.0f) _varray[nr].tex[0] = -2; // set arb. number. 

然后不setthat变量任何地方别的!然后在片段:

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

不知道如何整洁,但它的工作原理。