0126167
Visit Today : 306
This Month : 6590
Your IP Address: 35.173.48.224

winapi 더블버퍼링 예제

프로그램을 실행하면 버퍼링과 버퍼링 없음 간에 전환할 수 있습니다. 모드 메뉴에서 찾으세요. 두 모드를 비교하면 모든 소란이 무엇인지 쉽게 이해할 수 있습니다. 더 복잡한 애니메이션을 시도하면 두 모드 간의 차이가 훨씬 더 두드러집니다. 키가 해제된 경우 wParam을 읽음으로써 어떤 키인지 알아보십시오. 그런 다음 배열 키[] FALSE와 동일한 키 셀을 만듭니다. 그런 식으로 해당 키에 대한 셀을 읽을 때 여전히 보류중인지 아니면 출시되었는지 알 수 있습니다. 키보드의 각 키는 0-255의 숫자로 나타낼 수 있습니다. 예를 들어 숫자 40을 나타내는 키를 누르면 키[40]가 TRUE가 됩니다.

내가 놓아 두면, 그것은 거짓이 될 것입니다. 이것은 우리가 키 프레스를 저장하는 셀을 사용하는 방법입니다. API 함수를 사용하는 것은 성가신 일이기 때문에 버퍼링 프로세스를 단순화하는 사용하기 쉬운 클래스를 개발했습니다. Bitmap_OP.cpp 및 Bitmap_OP.h에서 해당 코드를 찾을 수 있습니다. 클래스 내의 프로시저 및 개체에 대해 설명하지 않고 메서드를 적용하는 방법만 설명합니다. 당신이 더 많은 세부 사항에 관심이 있다면, 내가 위에서 언급 한 웹 사이트에서 그들을 조회하시기 바랍니다. 코드의 다음 섹션의 작업은 창이 전체 화면 모드가 아닌 창을 사용하는 것으로 가정할 때마다 OpenGL 장면의 크기를 조정하는 것입니다. 창 크기를 조정할 수 없는 경우에도(예: 전체 화면 모드에 있음) 프로그램이 처음 실행되어 원근 뷰를 설정할 때 이 루틴이 적어도 한 번 호출됩니다. OpenGL 장면은 표시되는 창의 너비와 높이에 따라 크기가 조정됩니다. 프로그램이 활성화되어 있고 esc를 누르지 않은 경우 장면을 렌더링하고 버퍼를 교환합니다(이중 버퍼링을 사용하면 매끄러운 깜박임 없는 애니메이션을 얻을 수 있음). 이중 버퍼링을 사용하여 모든 것을 볼 수 없는 숨겨진 화면으로 그립니다.

버퍼를 교환하면 표시되는 화면이 숨겨진 화면이 되고 숨겨진 화면이 표시됩니다. 이렇게 하면 장면이 그려지는 것을 볼 수 없습니다. 그것은 단지 즉시 나타납니다. 마지막으로 InitGL()으로 이동하여 조명, 텍스처 및 설정해야 하는 모든 것을 설정할 수 있습니다. InitGL()에서 고유한 오류 검사를 수행하여 TRUE(모든 확인) 또는 FALSE(맞지 않은 것)를 다시 전달할 수 있습니다. 예를 들어 InitGL() 에서 텍스처를 로드하고 있고 오류가 있는 경우 프로그램을 중지할 수 있습니다. InitGL() 에서 FALSE를 다시 보내면 아래 코드 줄에 FALSE가 오류 메시지로 표시되고 프로그램이 종료됩니다. 이전 프로그래머이기 때문에, 하지만 C ++ 및 Win32에 새로운, 나는 이 예제가 매우 도움이 발견, PeekMessage 루프를 포함. 코드의 다음 섹션에서는 픽셀 형식에 대해 설명합니다. 우리는 RGBA (빨간색, 녹색, 파란색, 알파 채널)와 함께 OpenGL 및 이중 버퍼링을 지원하는 형식을 선택합니다.

우리는 우리가 결정 한 비트 (16비트,24비트,32비트)와 일치하는 픽셀 형식을 찾으려고 노력합니다. 마지막으로 우리는 16비트 Z 버퍼를 설정합니다. 나머지 매개 변수는 사용되지 않거나 중요하지 않습니다(스텐실 버퍼 및 (느린) 누적 버퍼 제외). 실제로 이중 버퍼링을 사용하기 위해서는 실시간 응용 프로그램이 됩니다. 따라서 GetMessage가 메시지를 받을 때까지 유휴 상태이기 때문에 메시지 루프를 약간 수정해야합니다.