C# 용 래퍼를 사용하여 C++로 다중 인스턴스 엔진을 만들려고합니다.
In에서는 CreateEngine과 같은 함수를 사용하여 엔진을 초기화 할 창이나 컨트롤에 대한 핸들을 매개 변수로 사용합니다.
C#에서는 그리기를 위해 OpenGL을 초기화하고 렌더링 이벤트가있는 사용자 지정 컨트롤을 만들었습니다.
컨트롤의 인스턴스를 하나만 만들면 모든 것이 제대로 작동하지만 다른 창에 배치 된 다른 하나를 만들면 두 번째는 검정색으로 깜박입니다 (코드에 검은 색 참조가 없지만 검정색으로 화면 색이 번갈아 바뀝니다). 둘 다 아무것도 그려지지 않습니다. 대신 화면의 색상을 지우십시오. 첫 번째 컨트롤은 공간을 파란색으로, 두 번째 컨트롤은 빨간색으로 (이론적으로) 지 웁니다. 그릴 것이 없으므로 wgl 목록이나 다른 것을 공유해야한다고 생각하지 않습니다 (어쨌든 코드의 일부는 아무 것도 해결하지 못할 것이라고 말했습니다).OpenGL 깜박임 문제
좀 더 생각해보십시오 : 저는 OpenGL n00b가 아니지만 정말 저를 괴롭 힙니다. 나는 또한 내가 아는 모든 것에 대해서도 조사했다. 이 문제는 컨트롤의 인스턴스가 더 많은 경우에만 나타납니다. C#에서는 뷰포트를 지우는 OnPaint 이벤트를 덮어 썼고 33 밀리 초마다이를 무효화했습니다. OnPaintBackground는 깜박 거리는 문제를 발생시키는 것처럼 보였으므로 덮어 씁니다.
OpenGL 명령을 사용하기 전에 각 컨텍스트를 최신으로 설정하고 있습니까? – genpfault
예. 나는 각 렌더링 전에 호출하고 그 함수가 wglMakeCurrent를 호출하는 SetCurrentEngine 명령을 가지고있다. – Sanctus2099