2011-02-28 6 views
3

알고리즘으로 원을 그릴 수 있습니다. 그러나 경계가 이상하게 보입니다. 픽셀은 서로 너무 뚜렷하게 보입니다. 나는 그들이 더 가까이 있기를 바란다. 포인트 크기를 늘리려고 노력했습니다. 그러나 그 결과는별로 좋지 않습니다. 그래서 픽셀을 완전히 채울 수 있다면 더 좋을지도 모른다고 생각했습니다. (정사각형이라고 가정합니다.) 어떻게하면 좋을까요, 아니면 더 좋은 아이디어가 있습니까? 다음과 같이 표시됩니다. http://img690.imageshack.us/i/circlev.jpg/OpenGL에서 Bresenham의 알고리즘을 사용한 그리기

대단히 감사합니다.

+0

더 많은 점을 그리십시오. – Goz

+1

왜 Bresenham을 OpenGL로 다시 구현하겠습니까? OpenGL은 이미 라인 프리미티브를 제공합니다. – datenwolf

+1

@datenwolf, 이것은 입문 컴퓨터 그래픽 클래스의 고전적인 숙제 문제입니다. –

답변

0

죄/코사인 방법을 사용하면 한 지점에서 다른 지점으로 선을 그릴 수 있습니다. 또한 원을 채우기가 훨씬 쉬울뿐만 아니라 다각형 상세도 변경할 수 있습니다 (가운데에서 삼각형 그리기). 가장자리).

세부 사항을 사용하면 결과는 Bresenham과 거의 동일합니다.

+1

-1 : OP는 클래스 요구 사항 때문에 특히 Bresenham의 알고리즘을 사용해야합니다. 그래서 이것은 정말로 그 질문에 답하지 않습니다. – Omnifarious

2

귀하의 jpeg로 판단하면, 나는 당신이 생각하는 것이 세계 공간에서 한 픽셀인지, 실제로는 아닌지 궁금합니다. 아마도 당신의 투영 행렬이 당신이 생각하는대로하지 않을 수도 있습니다.

GL_POINT_SMOOTH가 활성화되어 있습니까? -이 일이 어지러운 것이 가능합니다. 그 픽셀은 이상하게 둥글게 보입니다.

이 알고리즘을 사용하는 것이 중요하다고 가정하고 (더 효율적인 방법에 관심이 없다는 가정하에) GL_POINTS를 사용하는 대신 각 "픽셀"에 대해 쿼드를 그릴 수 있습니다.

5

코드가 없으면 문제를 진단하기가 어렵습니다. 픽셀의 실제 레이아웃은 해당 알고리즘에 대해 올바르게 보입니다. 그래도 세계 공간을 스크린 공간으로 직접 변환하지 않는 투영 매트릭스를 사용하고있는 것으로 보입니다.

세계 좌표에서 한 오프셋이 화면 공간에서 정확히 한 픽셀 가치가 있다는 것을 확신 할 수있는 직교 투영을 사용해보십시오.

관련 문제