2013-08-16 2 views
0

동일한 OpenGL 컨텍스트를 가진 두 개의 UserControl을 동일한 하나의 형식으로 구현 (즉, 그립)하려고했습니다. 즉, 두 개의 동일한 그림을 동시에 양식에 표시하고 싶습니다. 내 도구는 VC6이며 C++을 사용합니다.C++과 동일한 하나의 폼에서 두 개의 동일한 OpenGL UserControl을 구현하는 방법은 무엇입니까?

많은 방법을 시도했지만 실패했습니다. 누군가 간단한 샘플 코드 나 조언을 줄 수 있습니까?

+5

는 "UserControl을"무엇 ? –

+0

VC6이 너무 오래되어서 Qt 5 + mingw를 얻으면 폼과 UserControl이 생기게됩니다. – user1095108

+0

귀하의 질문을 이해하는 방식으로, 당신은 OpenGL 캔버스에 두 개의 이미지를 표시하고 이러한 이미지 위에 버튼과 같은 동작을 구현하고자합니다. 그 맞습니까? – didierc

답변

-2

편집 그것은 두 가지 가능성이처럼 보이는

- 두 번째 GUI 요소에 최종 이미지를 복사하거나 두 번째 요소에 대한 두 번째 "장치 컨텍스트를"만들 중 하나를 사용 *의 MakeCurrent 볼 (IT로 변경 링크 및 토론을 참조하십시오) 결과를 다시 렌더링하거나 블리트합니다.

복사 : GL 컨텍스트를 가정 는 glReadPixels을 통해 데이터를 복사하거나 프레임 버퍼를 통해 텍스처 드로잉 조사 할 수 있습니다 (복사 작업을 수행 할 GUI 라이브러리를 사용하여 당신을 막을 것이다) 기본 GUI 요소에 직접 그립니다 개체 및 사용 glGetTexImage2D. 그런 다음 두 번째 GUI 요소 (이 부분은 경험이없는 부분)에 원시 이미지 데이터를 표시하는 방법을 찾은 것 같습니다.

MakeCurrent : Make current OpenGL context on Linux

+0

이것은 정확하지 않습니다 :'OpenGL은 단 하나의 메인 프레임 버퍼만을 지원합니다. ' 실제로 OpenGL은 메인 프레임 버퍼를 전혀 정의하지 않습니다. drawable에 바인딩 될 때 어떤 종류의 보이는 프레임 버퍼가 있지만 그 중 하나는 컨텍스트에만 해당하지 않는다고 선언합니다. OpenGL 컨텍스트는 프레임 워크와 호환되는 모든 드로어 블에 바인딩 될 수 있습니다. 각 드로잉 블은 독립적 인 프레임 버퍼입니다. – datenwolf

+0

@datenwolf 알겠습니다. 내가 OpenGL (webgl, android, java, python, c/C++)을 사용했을 때, 항상 (스펙에 관계없이) 그릴 수있는 기본 버퍼가 있습니다. webgl을 제외하고는 명시 적으로 이중 버퍼링을 요청할 수 있습니다. 또한 기본 (또는 "메인") 목표를 호출하는 대신 렌더 타겟을 변경하기 위해 FBO를 바인딩 할 수 있습니다. 내가 본 적이없는 것은 여러 가지 기본/"주요"목표이며, 나는 OP에 대해 묻고 있습니다. 이게 가능하면 도와 줄 수 있니? – jozxyqk

+0

WebGL은 OpenGL이 아닙니다. 그리고 OpenGL을위한 Android/Java 바인딩은 제약 조건으로 감싸고 있습니다. 그러나 시스템 레벨에서 OpenGL을 사용하면 (예 : WGL, GLX 또는 EGL을 사용하여 컨텍스트를 만드는 경우) 컨텍스트 ** 및 ** 드로어 블을 매개 변수로 사용하는'{wgl, glX, egl} MakeCurrent'라는 특정 함수가 있습니다. 그것은 활성화되어야합니다. 컨텍스트가 드로어 블과 호환되는 한 다른 최상위 창에있을 수도있는 드로어 블간에 컨텍스트를 임의로 전환하거나 오프 스크린 상태로 전환 할 수 있습니다. 당신이 대답 해 준 것처럼 대답은 틀린 것입니다. – datenwolf