본문 바로가기

카테고리 없음

media progrmming 12.3


 
n프레임 버퍼
n그래픽 프로세스가 프레임 버퍼에 영상을 그리는 역할을 담당한다면 비디오 컨트롤러는 그 내용을 읽어서 화면에 뿌림
n비디오 컨트롤러가 프레임 버퍼를 읽는 작업은 매우 빠른 반면 그래픽 프로세서가 프레임 버퍼에 쓰는 작업은 비디오 컨트롤러가 프레임 버퍼를 읽는 속도에 비해 휠씬 느림

그래픽프로세스<비디오컨트롤러가 훨씬빠르기때문에 ! 버퍼가 하나일경우 생기는 일에 대해서 서술형으로!★

 
n버퍼가 하나일 경우
n그림(a)같이 오른쪽에서 왼쪽으로 이동하는 애니메이션을 만들기 위해서는 화면에 그림(b)를 보여준 후 바로 그림 (d)를 그려야 함
n만약 프레임 버퍼에 기록하는 속도가 느리다면 프레임 버퍼에 아직 그림(c)의 내용이 기록되어 있을 수도 있음
n, 아직 새로운 내용이 완전히 기록되지 않은 중에 비디오 컨트롤러가 프레임 버퍼를 읽어감으로써 불완전한 프레임 내용이 출력됨


(이미지 참고!)

 
nFront Buffer, Back Buffer
n각각 영상 하나를 온전히 저장할 수 있는 용량을 가지고 있음
nDouble Buffer를 사용하면 아래 그림과 같이 비디오 컨트롤러가 Front Buffer 내용을 읽고 출력하는 동안 그래픽 프로세서는 Back Buffer에 새로운 내용을 기록
n만약 비디오 컨트롤러가 쓰기를 완전히 마치면 비디오 컨트롤러는 Back Buffer스위칭하여 새로 기록된 내용을 읽어감
o동시에 그래픽 프로세서는 Front Buffer스위칭하여 다시 새로운 내용을 기록













Document_김효진View.cpp에



void CDocument_김효진View::OnDraw(CDC* pDC)
{
 
     CDocument_김효진Doc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  pDC->SetMapMode(MM_LOMETRIC);
  pDC->Ellipse(100, -100, 600, -600);

 // TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
}






 

GetDocument :뷰클래스의 안의 멤버함수

 

GetFirstViewPosition

& GetNextView :document클래스의 멤버함수

나머지의 관계도이러함

but Afx는 전역함수임.