2012-08-30 6 views
0

일부 OpenGL 호출과 함께 Qt 기반 dll을 작성했습니다. 렌더링에 사용 된 QGLWidget을 사용하여 내 Qt 응용 프로그램에서 내 DLL을로드하면 DLL에서 QGLContext :: currentContext를 호출하면 올바른 컨텍스트가 반환됩니다. 그러나 비 Qt 기반 프로그램에서 DLL을 사용할 경우 QGLContext는 반환되지 않습니다. 결과적으로 비 Qt 기반 앱에서 QGLShaderProgram을 사용할 수 없었습니다.Qt로 현재 OpenGL 컨텍스트 잡기

내가 뭘 잘못하고 있니?

P. 내 라이브러리에서 glCreateProgram 등을 직접 호출하는 것은 정상적으로 작동하지만 Qt 클래스를 사용하고 싶습니다.

답변

1

Qt 클래스를 사용하고 싶습니다.

그런 다음 Qt를 사용하는 응용 프로그램에서 DLL을 사용해야합니다. Qt 클래스를 요구하면 DLL에 Qt이 필요합니다. Qt를 사용할 수 없을 때 DLL을 사용하려면 Qt를 사용하지 않아야합니다.

게다가 셰이더와 프로그램을위한 Qt 클래스는 30 분 내에 채찍질 할 수없는 것이 아닙니다.

+0

"Qt 클래스가 필요하므로 DLL에 Qt가 필요합니다."문제가되지 않습니다. 문제는 QGLShader 클래스를 사용하여 비 Qt 프로그램에서 생성 된 기존 OpenGL 컨텍스트를 렌더링하는 방법입니다. 불행하게도 관련 Qt 5 (불안정한) 링크를 제공하므로 사용할 수 없습니다. – Jeka

+0

그렇지 않습니다. Qt를 사용하거나 사용하지 마십시오. 아마 농구를 뛰어 다니면 효과가있을 수 있지만 왜 그럴까요? – Bart

+0

@Jeka : "문제가 아닙니다. 문제는 QGLShader 클래스를 사용하여 비 Qt 프로그램에서 생성 된 기존 OpenGL 컨텍스트를 렌더링하는 방법입니다." 그러면 그게 * 네 문제 야. Qt (또는 적어도 OpenGL 부품이 아닌)를 사용할 수는 없습니다. * 응용 프로그램 전체가 * Qt를 사용하거나 그렇지 않습니다. 그리고 DLL이 비 Qt 응용 프로그램에서 사용되고 있다면 * 응용 프로그램 *은 Qt를 사용하지 않습니다. 그래서 당신도 할 수 없습니다. –

관련 문제