2012-08-30 48 views
0

我已經寫了一些基於Qt的dll和一些OpenGL調用。如果我使用用於渲染的QGLWidget加載我的Qt應用程序中的DLL,則從DLL中調用QGLContext :: currentContext將返回正確的上下文。但是,如果在非基於Qt的程序中使用我的DLL,則不會返回QGLContext。因此,我無法在非基於Qt的應用程序中使用QGLShaderProgram。用Qt抓取當前的OpenGL上下文

我做錯了什麼?

P.S.直接調用glCreateProgram等在我的庫似乎工作正常,但我想使用Qt類。

回答

1

我想使用Qt類。

然後你應該在使用Qt的應用程序中使用你的DLL。通過要求Qt類,您的DLL現在需要Qt。如果你想讓你的DLL在Qt不可用時工作,那麼你不應該使用Qt。

此外,着色器和程序的Qt類不是你在30分鐘內無法掀起的任何東西。

+0

「通過要求Qt類,你的DLL現在需要Qt」這不是問題。問題是如何使用QGLShader類來渲染從非Qt程序創建的現有OpenGL上下文。 你提供的相關Qt 5(un stable)的不幸鏈接,所以我不能使用它們 – Jeka

+0

你不這樣做。要麼使用Qt要麼不要使用它。你也許可以跳過箍來使它工作,但你爲什麼? – Bart

+0

@Jeka:「這不是問題,問題是如何使用QGLShader類來渲染從非Qt程序創建的現有OpenGL上下文。」那*就是你的問題。你不能*使用Qt(或者至少,不是OpenGL部件)。 * *應用程序整體*使用Qt或不。如果您的DLL正在被非Qt應用程序使用,那麼您的*應用程序*不會使用Qt。所以你也不能。 –

相關問題