2 augusti, 2019 admin

glfw 예제

GLUT와 달리 GLFW는 자체 기본 루프 기능을 제공하지 않습니다. 따라서 GLFWBackendRun()이라고 하는 래퍼 함수의 일부인 위의 코드를 사용하여 생성합니다. s_pWindow는 glfwCreateWindow()를 사용하여 이전에 만든 GLFW 창에 대한 포인터입니다. 응용 프로그램이이 루프의 끝을 신호하기 위해 기능 glfwSetWindow닫기 래퍼 기능 GLFWBackendLeaveMainLoop()를 통해 응용 프로그램에 사용할 수 있습니다. g +++-o hellot.exe main.cpp glfw32.dll.a -I 포함 -L./ -lglew32 -lglfw3 -lopengl32 메인() 기능 프리앰블은 GLFW 예제 코드와 크게 다르지 않습니다: 또 다른, 매우 까다로운 발견, 오류의 소스는 상태에 설정 하는 상태를 알고 있다 특정 함수를 호출하기 전에 기계. 나는 그들이 나타나는대로이 모든 것을 가리키려고 노력할 것이다. 위의 코드의 예는 glDrawArrays 함수입니다. 가장 최근에 바인딩된 정점 배열과 가장 최근에 사용한 샤더 프로그램을 사용하여 그립니다. 다른 버퍼 집합을 그리려면 다시 그리기 전에 바인딩해야 합니다.

상태 컴퓨터에 유효한 버퍼 또는 섀도가 설정되지 않은 경우 충돌합니다. 창을 완료하면 glfwDestroyWindow 함수로 삭제합니다. GLFW 및 GLEW 라이브러리 파일을 로컬 폴더에 넣고 -L ./이 있는 동적 라이브러리를 찾아보라고 했습니다. 시스템 경로에서 opengl32 라이브러리를 찾아야 합니다. Linux에서는 리포지토리를 통해 설치할 가능성이 높으며 -I 또는 -L 경로 비트가 필요하지 않습니다. 또한 glfw3dll.a 및 libglew32.dll.a 파일이 필요하지 않습니다. OpenGL 라이브러리를 libGL이라고 합니다. 리눅스에서 나는이 명령을 가지고 : GLFW 라이브러리를 aginst 물건을 구축하기 위해 당신은 헤더와 라이브러리가있는 컴파일러를 알려야합니다.

리눅스에서 내 추천은 pkg-config 유틸리티를 사용하는 것입니다 : pkg-config –cflags –libs glfw3 `–cflags`플래그는 GCC가 GLFW를 사용하는 파일을 컴파일하는 데 필요한 플래그를 출력하기 위해 pkg-config를 알려줍니다. `–libs` 플래그는 연결에 필요한 플래그를 출력합니다. 나는 리눅스에 제공하는 Netbeans 프로젝트에서 이러한 플래그를 사용하고 있으며 자신의 메이크 파일에서 사용할 수 있습니다. 자동 도구, cmake 또는 스콘과 같은 빌드 시스템 중 하나를 사용하는 경우 자세한 내용은 해당 시스템 설명서를 확인해야 합니다. 창(및 해당 컨텍스트)은 생성된 창에 핸들을 반환하는 glfwCreateWindow를 사용하여 만들어집니다. 예를 들어 640 by 480 창 모드 창을 만듭니다: 이 프로그램은 640 by 480 창 모드 창을 만들고 사용자가 창을 닫을 때까지 삼각형을 렌더링하고 이벤트를 처리하는 루프를 실행합니다. 소스 배포에서 예제/simple.c로 찾을 수 있으며 GLFW를 빌드할 때 다른 모든 예제와 함께 기본적으로 컴파일됩니다. 대신 새 입력을 받은 후에만 렌더링을 업데이트해야 하는 경우 glfwWaitEvents가 더 나은 선택입니다. 하나 이상의 이벤트가 수신될 때까지 기다렸다가 스레드를 절전 모드로 이동한 다음 glfwPollEvents와 마찬가지로 수신된 모든 이벤트를 처리합니다. 이렇게 하면 많은 CPU 주기가 절약되며 여러 종류의 편집 도구와 같은 유용한 작업을 할 수 있습니다.

보류 중인 이벤트를 처리하는 방법에는 두 가지가 있습니다. glfwPollEvents는 이미 수신된 이벤트만 처리한 다음 즉시 반환합니다. 대부분의 게임처럼 지속적으로 렌더링할 때 가장 좋은 선택입니다. 각 창에는 창을 닫아야 하는지 여부를 나타내는 플래그가 있습니다. 이것은 glfwWindow로 확인할 수 있습니다닫아야합니다. 사용자가 제목 표시줄에서 닫기 위젯을 누르거나 Alt+F4와 같은 키 조합을 사용하여 창을 닫려고 하면 이 플래그가 1로 설정됩니다. 창이 실제로 닫히지 않으므로 이 플래그를 모니터링하고 창을 파괴하거나 사용자에게 일종의 피드백을 제공해야 합니다. 첫 번째 튜토리얼에서 우리는 OpenGL이 창을 직접 처리하지 않으며이 책임은 다른 API (GLX, WGL 등)에 남아 있다는 것을 배웠습니다.