내 프로그램은 셰이더를 컴파일하고 텍스처를로드하는 동안로드 윈도우로 시작합니다. 그런 다음 전체 화면 응용 프로그램을 시작하고 이러한 리소스를 사용할 수 있기를 원합니다. 제 이해는 OpenGL 컨텍스트가 이전과 이후에 동일해야한다는 것입니다. 나는 이것을 위해 두 가지 방법을 시도했다. 첫 번째는 전체 화면 인 두 번째 창을 만들려고했는데,이 창에서 SDL_GL_makecurrent 명령을 사용하여 컨텍스트를 가로 질러서 (이 메서드에 대해 읽은 곳을 찾을 수 없음) 두 번째로 로딩 창을 전체 화면으로 보려고했습니다. 이 두 가지 방법 모두 로딩 화면이 화면의 왼쪽 상단 모서리로 이동되었습니다. 그러나 opengl 명령은 더 이상 전체 화면으로 제대로 실행되지 않았습니다. 버퍼를 지우는 것과 같이 바탕 화면/배경 응용 프로그램의 내용이 창에 있음을 의미합니다.OpenGL을 사용하여 SDL2에서 윈도우 전체 화면 표시하기
올바른 방법이 있습니까? 아니면 sdl/opengl 드라이버에서 이상한 버그입니까?
//opengl commands work fine up to here
//now to fullscreen
SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_SetWindowSize(window, 1366, 768); //tried this on either side of line above and without either line
glViewport(0, 0, 1366, 768); //update viewport
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
//window should be whited, other draw commands tried and all fail or distort
SDL_GL_SwapWindow(window);
새 창을 생성하고 이전 컨텍스트를 사용하여 :
코드가 원래 창을 전체 화면으로
//Fine up to here
window2 = SDL_CreateWindow("Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1366, 768, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_SHOWN);
SDL_GL_MakeCurrent(window2, glContext); //created with SDL_GL_CreateContext(oldwindow);
//draw commands dont work
PS : 우분투에게
업데이트 실행 : 두 번째 코드에서를, 새 창에서 컨텍스트를 재사용하면 실패 할 때 '유효하지 않은 창'이라는 오류를 반환합니다. 언제나. 실패하면 화면이 완전히 손상되고 (이상한 흰색 사각형과 패턴이있는 검은 색) 프로그램을 종료해도 화면이 지워지지 않지만 (화면 캡처는 완벽하지만 괜찮습니까?) ctrl + 으로 복원 할 수 있습니다. 터미널에 F1 다음 Ctrl 키를 + 다시 F7