2014-09-18 3 views
1

나는 vertex 점과 GL_LINES의 VBO를 사용하여 OpenGL에서 3D 구형 그리드를 그려 냈다. 내가 성취하고자하는 것은 한 라인 - 천정 -을 나머지보다 밝게 만드는 것입니다. OpenGL 440 - 파편의 선 두께 제어.

는 I 분명히 상점 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; 
} 

을 그리고 그 결과는 끔찍한의 종류 같습니다 Print Screen

I을 이것이 두 점 사이를 보간해야하는 프래그먼트 쉐이더 때문에 가능하다는 것을 알고 있습니다. 여러분은 꼭두각시 선을 식별하고 더 밝게 만드는 좋은 방법을 생각할 수 있습니까? 어디 다른 변수 setthat하지 않는 다음

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

그리고 : 차라리

+1

조각 쉐이더에서'if (vs_st [0]> 0.5)'를 대신 사용해보십시오. –

+0

@ColonelThirtyTwo - 구가 항상 원래 위치에 있다면, 회전 할 수 있습니다. 회전하면 어떻게됩니까? – mike

답변

0

솔루션이되었다 ... 지오메트리 쉐이더를 사용하지 않는 것! 그런 다음 단편으로 :

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

얼마나 깔끔한 지 알지만 작동합니다.