[OpenGL, C++] wglGetProcAddress - error: invalid conversion from ‘const char*’ to ‘const GLubyte*’
Witam, ucze sie samodzielnie bilbioteki OpenGL korzystajac z kursu dostepnego na tej stronie oraz ksiazki "OpenGL w praktyce" J. Ganczarskiego
Mam problem z programem z rozdz. "Światła i materiały":
http://cpp0x.pl/kursy/Kurs-OpenGL-C++/Swiatla-i-materialy/226. Ten sam blad wystepuje mi w pliku: "swiatlo_kierunkowe.cpp" oraz "reflektor.cpp" Kod ze strony skopiowalem bez wprowadzania zmian.
Problem lezy w tej czesci kodu:
void ExtensionSetup()
{
const char * version =( char * ) glGetString( GL_VERSION );
int major = 0, minor = 0;
if( sscanf( version, "%d.%d", & major, & minor ) != 2 )
{
#ifndef WIN32
printf( "Błędny format wersji OpenGL\n" );
#else
printf( "Bledny format wersji OpenGL\n" );
#endif
exit( 0 );
}
if( major > 1 || minor >= 4 )
{
glWindowPos2i =( PFNGLWINDOWPOS2IPROC ) wglGetProcAddress( "glWindowPos2i" );
}
else
if( glutExtensionSupported( "GL_ARB_window_pos" ) )
{
glWindowPos2i =( PFNGLWINDOWPOS2IPROC ) wglGetProcAddress( "glWindowPos2iARB" );
}
else
{
printf( "Brak rozszerzenia ARB_window_pos!\n" );
exit( 0 );
}
}
Otrzymuje blad:
13d.cpp: In function ‘void ExtensionSetup()’:
13d.cpp:669: error: invalid conversion from ‘const char*’ to ‘const GLubyte*’
13d.cpp:669: error: initializing argument 1 of ‘void (* glXGetProcAddressARB(const GLubyte*))()’
13d.cpp:676: error: invalid conversion from ‘const char*’ to ‘const GLubyte*’
13d.cpp:676: error: initializing argument 1 of ‘void (* glXGetProcAddressARB(const GLubyte*))()’
Programy pisze i kompiluje na Linuxie Debian na VirtualBoxie, korzystam z takich flag przy kompliowaniu: -lGL -lGLU -lglut
EDIT:
Sprawdziłem pliki również na Windowsie 7 przy pomocy Microsoft Visual C++ 2010 Express. W przypadku Windowsa, występują inne błędy przy linijkach 669 i 676:
669: error C2659: '=' : function as left operand
676: error C2659: '=' : function as left operand
Ponadto występuje też dodatkowy błąd:
main.cpp(22): error C2365: 'glWindowPos2i' : redefinition; previous definition was 'function'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glext.h(444) : see declaration of 'glWindowPos2i'
A oto linijka odpowiadająca temu błędowi:
PFNGLWINDOWPOS2IPROC glWindowPos2i = NULL;