Derelict3와 함께 놀았습니다 & this에 따라 D에서 OpenGL을 사용하려면 glfw를 사용하고 확장 프로그램을 사용하려면 먼저 컨텍스트를 만들어야합니다. glfw를 사용하여 창을 만들고 현재 컨텍스트로 설정합니다. 컨텍스트를 만들고 설정 한 후에 모든 확장을로드하려면 DerelictGL3.reload()
을 사용해야합니다.확장 용로드를 위해 가짜 OpenGL 컨텍스트 만들기
이제 창을 만들기 전에 모든 준비를하고 싶습니다. 이러한 준비 중 하나는 모든 셰이더 프로그램을로드하고 컴파일하는 것입니다. 그러나이 컨텍스트없이 실행을 거부 Derelict3GL.reload()
을 필요로하는 쉐이더 확장, ... 그래서
, 나는이 hackish 해킹 사용했습니다 필요 :이 작동
auto tmpWindow=glfwCreateWindow(1,1,"",null,null);
glfwMakeContextCurrent(tmpWindow);
DerelictGL3.reload();
glfwDestroyWindow(tmpWindow);
을 - 지금로드 할 수 있습니다 셰이더 프로그램 을 컴파일 한 다음 실제 창을 엽니 다. 그러나 이것은 나에게 너무 익숙하지 않은 것처럼 보입니다. 컨텍스트 가짜 또는 컨텍스트없이 확장을로드하는 적절한 방법이 있습니까?
아마도 더 좋은 방법은 먼저 창을 만드는 것이지만 보여주지 않는 것입니다. 그런 다음 확장을로드하고 쉐이더를 컴파일 한 다음 창을 표시하십시오. 왜 창 만들기를 연기해야하는지 잘 모르겠다. 그래서이 솔루션이 당신의 목적에 부합하는지 알지 못한다. – Kevin
주된 문제는 내 개체 디자인과 일치하지 않는다는 것입니다. 나는 각각의 컨텍스트와 함께 여러 개의 창을 만들 수 있기를 원한다. 즉,'Window' 객체의 생성을 모든 라이브러리의 초기화와 분리해야합니다. –
그렇다면 실제로 언급 된 해결책이 가장 좋습니다. – Kevin