OPENGL: Add functionality to query OpenGL functions on runtime.

This can and will be used for future extension usage support.

Tizen changes have been untested.
This commit is contained in:
Johannes Schickel 2015-12-11 23:51:21 +01:00
parent e5e234b864
commit 8f3783da09
6 changed files with 33 additions and 0 deletions

View file

@ -286,6 +286,21 @@ private:
*/
void initializeGLExtensions();
protected:
/**
* Query the address of an OpenGL function by name.
*
* This can only be used after a context has been created.
* Please note that this function can return valid addresses even if the
* OpenGL context does not support the function.
*
* @param name The name of the OpenGL function.
* @return An function pointer for the requested OpenGL function or
* nullptr in case of failure.
*/
virtual void *getProcAddress(const char *name) const = 0;
private:
/**
* Try to determine the internal parameters for a given pixel format.
*

View file

@ -54,4 +54,10 @@ using namespace Tizen::Graphics::Opengl;
#include <GL/gl.h>
#endif
#ifdef SDL_BACKEND
#define GLCALLCONV APIENTRY
#else
#define GLCALLCONV
#endif
#endif

View file

@ -305,6 +305,10 @@ void OpenGLSdlGraphicsManager::refreshScreen() {
#endif
}
void *OpenGLSdlGraphicsManager::getProcAddress(const char *name) const {
return SDL_GL_GetProcAddress(name);
}
bool OpenGLSdlGraphicsManager::setupMode(uint width, uint height) {
// In case we request a fullscreen mode we will use the mode the user
// has chosen last time or the biggest mode available.

View file

@ -67,6 +67,8 @@ protected:
virtual bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format);
virtual void refreshScreen();
virtual void *getProcAddress(const char *name) const;
private:
bool setupMode(uint width, uint height);

View file

@ -206,3 +206,7 @@ bool TizenGraphicsManager::loadVideoMode(uint requestedWidth, uint requestedHeig
void TizenGraphicsManager::refreshScreen() {
eglSwapBuffers(_eglDisplay, _eglSurface);
}
void *TizenGraphicsManager::getProcAddress(const char *name) const {
return eglGetProcAddress(name);
}

View file

@ -63,6 +63,8 @@ protected:
void refreshScreen();
void *getProcAddress(const char *name) const;
const Graphics::Font *getFontOSD();
private: