OpenGL에서 LED VU 미터와 비슷한 것을 그렸습니다.정확하게 픽셀 래스터에 맞지 않는 2D OpenGL 드로잉 라인
불행하게도, 내 도면 공간이 제한되어있는 경우, 나는 그것을 정확히 18 바 맞게해야한다 : 결과는 다음의 수직 막대에 같이 있어야한다. 3.6 픽셀 막대 사이에 간격이 생깁니다.
그릴 때, 간격이 2 픽셀 또는 1 픽셀이므로 줄 사이의 눈에 띄는 차이가 발생합니다. 나는 서브 픽셀 렌더링을 사용하고 어떤 종류의 앤티 앨리어싱을 사용하여 선을 "가짜"로 만드는 대신 모든 간격이 같은 너비로 표시되도록하는 솔루션을 찾고 있습니다.
이 지금까지
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH, GL_NICEST);
for (int i = 0; i < 18; ++i) {
float bBottom = barBottom + i*3.6f;
glBegin(GL_LINES);
glLineWidth(2);
glVertex2f(bRight,bBottom);
glVertex2f(bLeft,bBottom);
glEnd();
}
glDisable(GL_LINE_SMOOTH);
불행하게도, 라인 스무딩 켜면 눈에 보이는 효과를 보이지 않았다 내 코드입니다. 어떤 제안?
픽셀 값을 정수로 반올림합니다. –
'GL_LINE_SMOOTH'는 모든 구현에서 지원되지 않습니다. 그리고 @Matt Ball 에선 선을 정수 픽셀로 반올림하고 경계선을 그리거나 꼭대기에 간격을 두어야한다고 동의합니다 (이 경우 약 10px). – gavinb
+1 애니메이션의 경우 –