ㆍ 랜더링 파이프라인을 통해 고화질 고퀄리티의 모델링을 2D화면에 뿌려주는 기술은 요즘 이야기... 그럼 과거엔?
ㆍ 1024kb*768kb 화면에 비트맵 한장으로 저장한다고 하면 용량이 3.xMB 정도 될것이다. 그 당시 그래픽카드의 메모리 용량은 4mb정도 되었다
ㆍ Bitmap
▶ 렌더링 시점
ㆍ 렌더링은 말 그대로 그린다고 생각하자. GDI프로그래밍의 핵심은 선그리고 도형그리고 칠하고 글자쓰고.... 도구를 줄태니 그림을 그려보게 해주는 프레임워크
# 언제 그릴것인가? - 운영체제가 결정해서 메세지로 알려준다.
WM_ERASEBKGND - erasebackgroun의 약자 : 말 그대로 화면을 싹 하얗게 지워준다.
-> 근데 이거 빠르게하면 깜빡거리는 문제가 발생한다. 이걸 해결하기 위한 기법이 더블버퍼링 Duble Buffering
WM_PAINT - 화면 그려 : ㅇㅇ 다 그렷어 CPaintDC로 알림
ㆍ 만약 CPaintDC로 완료통지가 가지않으면? -> 응답없음이 뜨게 된다 (메시지 큐 수행불가)
DC (디바이스 컨텍스트)
ㆍ 윈도우에 그릴라면 DC(디바이스 컨텍스트)가 필요하다.
ㆍ 이런 느낌이다. 이 bit stream을 실제 장치에다 blit한다. 그걸 Blt 라고 부른다. BitBlit이 이거다.
ㄴ> 즉 bmp이미지를 DC에다 대고 그리고 그게 화면에 출력되는것을 blit한다 라고 부르는 것
ㆍ DC는 대리자 느낌으로 이해된다. 이 DC가 선이든 색이든 브러쉬든 Select 해주고 비트맵에 대신 그려주는 느낌(우리는 코드로 명령하고 DC가 명령받은대로 도구를 선택해 그린다)
ㆍ Strock object는 os가 만들어 둔 자주쓰는 색
ㆍ DC는 new delete 같은 느낌. 생성했으면 반드시 삭제도 해야된다.
ㆍ Select를 이용해 bmp를 쥐어주어야 함. 없으면 안그려짐 (도화지)
ARGB...RGB
# 렌더링 코드 실습
ㆍ 위 dc에게 SelectObject로 쥐어주어야 한다는 모습이 코드로 보면 이런 모습이다.
ㆍ 굵게 하니까 안티엘리어싱 기능이 없어 삐뚤삐뚤한 모습ㅋㅋ
ㆍ 정석으론 이게 FM이다. DC에게 원래 펜으로 돌려줄게~ 라는 소린데 비스타 이후 버전부턴 안해도 된다.
ㆍ 만약 xp 이하의 운영체제에서 구동을 해야된다고 하면 반드시 위 방식처럼 해야된다.
# 도형과 브러시 사용
ㆍ RECT, POINT, SIZE 구조체를 클레스로 바꾼것. 구형과도 호환도 되고 연산자도 지원함
'C++프로그래밍 > MFC' 카테고리의 다른 글
비트맵 다루기 (0) | 2025.03.10 |
---|---|
글꼴과 문자열 (0) | 2025.03.10 |
윈도우 그래픽 시스템 (0) | 2025.03.10 |
컨트롤바 - 툴바 , 상태바 (0) | 2025.03.10 |
팝업메뉴 (0) | 2025.03.10 |