Witam,
Chciałbym napisać prostą aplikację w Qt 5.5.0 i OpenGL 3.0. Napisałem program na bazie dokumentacji Qt korzystający z klasy QOpenGLFunctions (która de facto zawiera funkcje z ES) poprzez dziedziczenie po tej klasie. Gdy jednak chcę dziedziczyć po np. QOpenGLFunctions_3_0 mam błędy segmentacji pamięci.
Spróbowałem innego podejścia - w metodzie inicjalizacji dopisałem taki kod:
QOpenGLVersionProfile prof;
prof.setVersion(3,0);
prof.setProfile(QSurfaceFormat::CoreProfile);
m_func = (QOpenGLFunctions_3_0*)QOpenGLContext::currentContext()->versionFunctions(prof);
if ( !m_func )
{
qFatal("Requires OpenGL >= 3.0");
exit( 1 );
}
m_func->initializeOpenGLFunctions();
i wydawać by się mogło, że wszystko jest ok bo program się wykonuje. Gdy jednak próbuję dobrać się do jakiejś funkcji z obiektu m_func, np.
unsigned arr;
m_func->glGenVertexArrays(1, &arr);
Znowu mam segmentation fault.
Siedzę na lapku z intel HD graphics ale na bank mam wparcie dla OpenGL 3.0 bo już pisałem aplikacje korzystające np. z glGenVertexArrays tylko w Visual Studio i wszystko działało. Pobrałem nawet program OpenGL Extension Viewer i też mi pokazuje wersję OpenGL 3.1. Nie mam pojęcia dla czego w Qt jest to takie zakombinowane i nie mogę uzyskać głupiego wskaźnika na funkcje. Ktoś pomoże?