int xgl_init(void) { const char *libGLName = "libGL.so"; const char *libGLUName = "libGLU.so"; if (!loadGLLibrary(libGLName, libGLUName)) { fprintf(stderr, "Use of OpenGL mode disabled\n"); return 0; } fetch_GL_FUNCS(libGLName, libGLUName, 0); return SYSDEP_DISPLAY_WINDOWED|SYSDEP_DISPLAY_FULLSCREEN| SYSDEP_DISPLAY_HWSCALE; }
/** * do not call this one directly, * use fetch_GL_FUNCS (gltool.c) instead */ void LIBAPIENTRY fetch_WGL_FUNCS (const char * libGLName, const char * libGLUName, int force) { static int _firstRun = 1; if(force) _firstRun = 1; if(!_firstRun) return; if(!loadGLLibrary (libGLName, libGLUName)) return; #define GET_GL_PROCADDRESS(a) getGLProcAddressHelper (libGLName, libGLUName, (a), NULL, 1, 0); #include "wgl-disp-fetch.hc" _firstRun=0; }
void init() { static bool s_bInitialized = false; if (s_bInitialized) { return; } s_bInitialized = true; loadGLLibrary(); GenBuffers = (PFNGLGENBUFFERSPROC)getFuzzyProcAddress("glGenBuffers"); BufferData = (PFNGLBUFFERDATAPROC)getFuzzyProcAddress("glBufferData"); DeleteBuffers = (PFNGLDELETEBUFFERSPROC)getFuzzyProcAddress("glDeleteBuffers"); BindBuffer = (PFNGLBINDBUFFERPROC)getFuzzyProcAddress("glBindBuffer"); MapBuffer = (PFNGLMAPBUFFERPROC)getFuzzyProcAddress("glMapBuffer"); UnmapBuffer = (PFNGLUNMAPBUFFERPROC)getFuzzyProcAddress("glUnmapBuffer"); CreateShader = (PFNGLCREATESHADERPROC)getFuzzyProcAddress("glCreateShader"); ShaderSource = (PFNGLSHADERSOURCEPROC)getFuzzyProcAddress("glShaderSource"); CompileShader = (PFNGLCOMPILESHADERPROC)getFuzzyProcAddress("glCompileShader"); CreateProgram= (PFNGLCREATEPROGRAMPROC)getFuzzyProcAddress("glCreateProgram"); AttachShader = (PFNGLATTACHSHADERPROC)getFuzzyProcAddress("glAttachShader"); LinkProgram = (PFNGLLINKPROGRAMPROC)getFuzzyProcAddress("glLinkProgram"); GetShaderiv = (PFNGLGETSHADERIVPROC)getFuzzyProcAddress("glGetShaderiv"); GetProgramiv = (PFNGLGETPROGRAMIVPROC)getFuzzyProcAddress("glGetProgramiv"); GetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) getFuzzyProcAddress("glGetShaderInfoLog"); GetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) getFuzzyProcAddress("glGetProgramInfoLog"); UseProgram =(PFNGLUSEPROGRAMPROC) getFuzzyProcAddress("glUseProgram"); GetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) getFuzzyProcAddress("glGetUniformLocation"); Uniform1i = (PFNGLUNIFORM1IPROC)getFuzzyProcAddress("glUniform1i"); Uniform1f = (PFNGLUNIFORM1FPROC)getFuzzyProcAddress("glUniform1f"); Uniform2f = (PFNGLUNIFORM2FPROC)getFuzzyProcAddress("glUniform2f"); Uniform3f = (PFNGLUNIFORM3FPROC)getFuzzyProcAddress("glUniform3f"); Uniform4f = (PFNGLUNIFORM4FPROC)getFuzzyProcAddress("glUniform4f"); Uniform1fv = (PFNGLUNIFORM1FVPROC)getFuzzyProcAddress("glUniform1fv"); UniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) getFuzzyProcAddress("glUniformMatrix4fv"); BlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) getFuzzyProcAddress("glBlendFuncSeparate"); BlendEquation = (PFNGLBLENDEQUATIONPROC)getFuzzyProcAddress("glBlendEquation"); BlendColor = (PFNGLBLENDCOLORPROC)getFuzzyProcAddress("glBlendColor"); ActiveTexture = (PFNGLACTIVETEXTUREPROC)getFuzzyProcAddress("glActiveTexture"); GenerateMipmap = (PFNGLGENERATEMIPMAPPROC)getFuzzyProcAddress ("glGenerateMipmap"); CheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) getFuzzyProcAddress("glCheckFramebufferStatus"); GenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) getFuzzyProcAddress("glGenFramebuffers"); BindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) getFuzzyProcAddress("glBindFramebuffer"); FramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) getFuzzyProcAddress("glFramebufferTexture2D"); DeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) getFuzzyProcAddress("glDeleteFramebuffers"); GenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) getFuzzyProcAddress("glGenRenderbuffers"); BindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) getFuzzyProcAddress("glBindRenderbuffer"); RenderbufferStorage= (PFNGLRENDERBUFFERSTORAGEPROC) getFuzzyProcAddress("glRenderbufferStorage"); RenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) getFuzzyProcAddress("glRenderbufferStorageMultisample"); FramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) getFuzzyProcAddress("glFramebufferRenderbuffer"); DeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) getFuzzyProcAddress("glDeleteRenderbuffers"); #ifndef AVG_ENABLE_EGL BufferSubData = (PFNGLBUFFERSUBDATAPROC)getFuzzyProcAddress("glBufferSubData"); GetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)getFuzzyProcAddress ("glGetBufferSubData"); GetObjectParameteriv = (PFNGLGETOBJECTPARAMETERIVARBPROC) getFuzzyProcAddress("glGetObjectParameteriv"); BlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) getFuzzyProcAddress("glBlitFramebuffer"); DrawBuffers = (PFNGLDRAWBUFFERSPROC)getFuzzyProcAddress("glDrawBuffers"); DrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) getFuzzyProcAddress("glDrawRangeElements"); DebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKARBPROC) getFuzzyProcAddress("glDebugMessageCallback"); #endif VertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) getFuzzyProcAddress("glVertexAttribPointer"); EnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) getFuzzyProcAddress("glEnableVertexAttribArray"); BindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) getFuzzyProcAddress("glBindAttribLocation"); #if defined(linux) && !defined(AVG_ENABLE_EGL) SwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC) getglXProcAddress("glXSwapIntervalEXT"); #endif #ifdef _WIN32 GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) getwglProcAddress("wglGetExtensionsStringARB"); GetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) getwglProcAddress("wglGetSwapIntervalEXT"); SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) getwglProcAddress("wglSwapIntervalEXT"); #endif }