프로젝트를 Qt 4.8에서 5.4로 마이그레이션하고 있습니다. 다중 스레드에서 다중 컨텍스트를 사용합니다. 우리는이 목적을 위해 GLEW MX를 사용합니다 (현재 원하는 컨텍스트를 만든 다음 GLEWContextStruct의 로컬 인스턴스에서 glewInit()을 호출합니다).Qt5 및 GLEW MX => glewInit 실패
QGLWidget 및 QGLContext를 QOpenGLWidget 및 QOpenGLContext로 변경하려고 시도했지만 더 이상 glew를 초기화 할 수 없게되었습니다. GLEW는 오류를 반환하지 않지만 glGetError()는 오류를 반환합니다.
Qt 5.4 64를 OpenGL 버전으로 설치했습니다. 여기
코드는 최소로 감소된다 :#include <QtWidgets/QApplication>
#define GLEW_MX
#define GLEW_STATIC
#include <GL/glew.h>
#include <qopenglcontext.h>
#include <qwindow.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
bool errQt;
int errGlew;
GLenum errorGL;
QSurfaceFormat requestedFormat;
requestedFormat.setVersion(3, 3);
requestedFormat.setProfile(QSurfaceFormat::OpenGLContextProfile::CoreProfile);
//Creates the QGLWidget using the current context:
QWindow window;
window.setSurfaceType(QSurface::OpenGLSurface);
window.setFormat(requestedFormat);
window.create();
//Create context
QOpenGLContext context;
context.setFormat(requestedFormat);
errQt = context.create(); //true
//Bind context
context.makeCurrent(&window);
//Glew context creation
GLEWContext* pCtx = new GLEWContext; //All forwards undefined
//Release context
context.doneCurrent();
return 1;
}
어떤 제안을? Qt5.4에서 GLEW는 괜찮습니까?
편집 1 :
문제는 QT와 관련이없는 것으로 보입니다. 생성 된 GLEWContext에는 앞으로 정의 된 함수가 없습니다 (모든 함수 포인터는 정의되지 않습니다). 리뷰어가 포커스를 잃지 않도록 코드가 업데이트되었습니다.
어떤 OS입니까? GPU? 운전자? Qt는 OpenGL 옵션으로 컴파일 되었습니까? 니가 전화 했어? (별도의 뉴스로서 Qt는 QOpenGLContext :: versionFunctions, QOpenGLExtensions 및 다양한 QOpenGL * 래퍼를 통해 GLEW가 제공하는 것을 제공합니다. – peppe