2D Software Rendering
프로그램 소개 |
l 점/선/원/사각형/삼각형/클리핑/곡선/텍스쳐매핑을 DIBSection을 이용해 도트그래픽으로 구현한 프로그램 입니다.
개발 내역 |
l 개발 환경 : Windows XP / VS2003
l 개발 언어 : C/C++, Win32 API
구현 내용 |
l Pixel(점)
¡ BMP텍스쳐를 DIBSection으로 메모리에 연결시켜 점을 출력할 메모리 비트에 원하는 색상값을 BGR순으로 입력하여 점을 출력
l Line(선)
¡ 직선 방정식
¡ DDA(Dightal Differential Analyzer) 알고리즘
¡ MidPoint 알고리즘
l 원(Circle)¡ Sin(y), Cos(x) 함수를 이용한 방법
¡ 원의 방정식을 이용한 방법
¡ MidPoint 알고리즘(조금 더 깔끔함)
¡ MidPoint With 2nd-Order Difference(float 연산을 줄여 속도를 높이기 위해 사용)
l 사각형(Rectangle)
¡ 라인으로 사각형 그리기
¡ 사각형 영역을 단색으로 채우기
¡ 사각형 영역을 그라데이션으로 채우기(선형 보간)
l 삼각형(Triangle)
¡ 라인으로 삼각형 그리기
¡ 삼각형 영역을 단색으로 채우기
¡ 삼각형 영역을 그라데이션으로 채우기(선형 보간)
¡ 삼각형 영역을 텍스쳐로 매핑하기
l 클리핑(Clipping)
¡ Cohen-Surtherland 알고리즘(클리핑 영역을 # 모양으로 나누고 영역별 비트값을 두어 처리)
¡ Parameter 알고리즘(교차점에 대한 비율로 경계를 잘라냄)
l 곡선(Curve)
¡ Hermite 알고리즘(끝점 2개와 접선벡터 2개를 이용)
¡ Bezier 알고리즘(끝점 2개와 접선벡터를 조절하는 2개의 제어점을 이용)
l 변환(Transformation) : Scale / Translate / Rotate
¡ Point = Vertex * Scale * Rotate * Translate
¡ V : Local상 점의 위치(x, y)
Sx | 0 | 0 |
0 | Sy | 0 |
0 | 0 | 1 |
¡ Rotate
Cosθ | -Sinθ | 0 |
Sinθ | Cosθ | 0 |
0 | 0 | 1 |
¡ Translate
1 | 0 | 0 |
0 | 1 | 0 |
dx | dy | 1 |
'Portfolio > Personal Project' 카테고리의 다른 글
그림판 / ScreenPen (0) | 2010.03.08 |
---|---|
3D Software Rendering (0) | 2010.03.08 |
Ray Casting (0) | 2010.03.08 |
Software Physics (0) | 2010.03.08 |
ASE/MD2 Viewer(DirectX) (0) | 2010.03.07 |