glfinish()는 이전 명령어가 모두 완수 될때까지(픽셀이 모두 그려질때까지) return 하지 않음
glflush()는 즉시반환함. 물론 모든명령어가 실행된다는것은 보증하지만 실행속도는 모른다.
GLvoid display2(GLvoid)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f); // (0,0,255)
glClear(GL_COLOR_BUFFER_BIT); // 컬러버퍼 지우기
glFlush(); // 화면에 출력하기(버퍼코드 실행)
}
해당함수를 displayFunc 인자로 넣으면 검은색 사각형이 출력된다.
하지만 크기를 변경하면 파란색으로 바뀐다.
이유를 도저히 모르겠는데 display2 함수 마지막줄에 glFinish(); 를 추가하니 바로 파란색이 출력되었다.
위에서 썼던 glfinish 와 glfush의 차이점으로 추측해보면
glfinish함수는 이전코드가 모두 실행되고 '완료'까지 확인하고 반환했지만
glflush함수는 실행만 보증할 뿐 속도 혹은 실행타이밍을 정할 수 없는것 같다.
glflush만 사용할 경우 첫 출력된 사각형은 검정색이지만
사각형의 크기를 조정하는순간 바로 파란색으로 바뀌게 된다. (command 는 ensure함)