2014-09-18 36 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; 
} 

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