opegnl tutorial :http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-1-opening-a-window/
여기보고 처음시작하고있는대
glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
do
{
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glfwSwapBuffers(window);// 앞버퍼와 뒤버퍼의 전환
glfwPollEvents();//이벤트처리
}
while (glfwGetKey(window,GLFW_KEY_ESCAPE)!=GLFW_PRESS && glfwWindowShouldClose(window) == 0);
glfwTerminate();
return 0;
1.glfwSetInputMode 는 window에 입력모드를 설정합니다 라고 설명하고있던대 이줄이없어도 esc키를 누르면 윈도우의 종료가 가능하길래 glfwSetInputMode 있는것과 없는것의 차이를 모르겠음.
2. 반복문 색상 표현 과정인대 순서가 glClear로 색버퍼를 지움 -> glClearColor로 색버퍼에 색을 채움->버퍼스왑 ->이벤트체크(키보드입력)하고 또다시 버퍼를지우고 체우고를 반복 하는지
3.구글링하면서 더블버퍼라는걸 봤는대 그러면 저코드에서는 뒤버퍼에서는 색상그리고 앞버퍼에서 출력을 계속 반복해서 하는지? 이러한 앞버퍼 뒤버퍼의 속도가 프레임? 인건가?
1은 그냥 STICK_KEYS 하면 키가 어떻게 눌렸는지 상관없고 그냥 한 신호만 보낸다고 적혀있는데? 실제 키 인풋 받느냐 마느냐는 딴데 있는거 아닌가. 2는 컬러버퍼를 설정된 색 (glClearColor) 으로 초기화 => 컬러버퍼의 초기화 색을 새로 지정 => glfw 에서 디폴트로 만들어준 버퍼를 스왑 => 플랫폼 의존 이벤트 처리 3. 뒷버퍼에서 그래픽 초기화, 렌더링 다 한다음에 앞버퍼로 체이닝 스왑해서 보여주는걸 반복. 프레임 자체는 그냥 do while 루프가 돌아가는 속도임 저기선 동기적으로 렌더링하도록 해놨으니까 대충 버퍼 스왑 = 프레임 이라고 봐도 되지 않을까
When sticky keys mode is enabled, the pollable state of a key will remain GLFW_PRESS until the state of that key is polled with glfwGetKey. Once it has been polled, if a key release event had been processed in the meantime, the state will reset to GLFW_RELEASE, otherwise it will remain GLFW_PRESS.
즉, 네가 "a키를 누름 -> a키를 뗌 -> n초 뒤 -> glfw 함수로 a키 눌렸나 확인" 이 과정을 거쳤을 때, sticky key가 on이면 a키가 눌렸다는 결과를 얻을 것이고 off면 안 눌렸다는 결과를 얻겠지.
그리고 glClearColor는 화면을 초기화할 색깔을 지정만 하는 놈이니까 루프 밖으로 빼.
GL은 큰 상태머신이라서 glClearColor은 매번 초기화할 거 아니면 밖으로 빼서 한번만 해서 상태 갱신해줘도 됨.
두분다 답변 감사드립니다