/* San Angeles Observation OpenGL ES version example * Copyright 2004-2005 Jetro Lauha * All rights reserved. * Web: http://iki.fi/jetro/ * * This source is free software; you can redistribute it and/or * modify it under the terms of EITHER: * (1) The GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at * your option) any later version. The text of the GNU Lesser * General Public License is included with this source in the * file LICENSE-LGPL.txt. * (2) The BSD-style license that is included with this source in * the file LICENSE-BSD.txt. * * This source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. * * $Id: importgl.c,v 1.4 2005/02/08 18:42:55 tonic Exp $ * $Revision: 1.4 $ */ #ifndef DISABLE_IMPORTGL #include #include #include "waffle.h" #define IMPORTGL_NO_FNPTR_DEFS #define IMPORTGL_API #define IMPORTGL_FNPTRINIT = NULL #include "importgl.h" /* Imports function pointers to selected function calls in GLES DLL * or shared object. The function pointers are stored as global symbols with * equivalent function name but prefixed with "funcPtr_". Standard gl * calls are redirected to the function pointers with preprocessor macros * (see importgl.h). */ int importGLInit() { int result = 1; #undef IMPORT_FUNC_GL #define IMPORT_FUNC_GL(funcName) do { \ void *procAddress = waffle_dl_sym(WAFFLE_DL_OPENGL_ES2, #funcName); \ if (procAddress == NULL) result = 0; \ FNPTR(funcName) = (funcType_##funcName)procAddress; } while (0) IMPORT_FUNC_GL(glAttachShader); IMPORT_FUNC_GL(glBindBuffer); IMPORT_FUNC_GL(glBlendFunc); IMPORT_FUNC_GL(glBufferData); IMPORT_FUNC_GL(glBufferSubData); IMPORT_FUNC_GL(glClear); IMPORT_FUNC_GL(glClearColor); IMPORT_FUNC_GL(glCompileShader); IMPORT_FUNC_GL(glCreateProgram); IMPORT_FUNC_GL(glCreateShader); IMPORT_FUNC_GL(glDeleteBuffers); IMPORT_FUNC_GL(glDeleteProgram); IMPORT_FUNC_GL(glDeleteShader); IMPORT_FUNC_GL(glDisable); IMPORT_FUNC_GL(glDisableVertexAttribArray); IMPORT_FUNC_GL(glDrawArrays); IMPORT_FUNC_GL(glEnable); IMPORT_FUNC_GL(glEnableVertexAttribArray); IMPORT_FUNC_GL(glGenBuffers); IMPORT_FUNC_GL(glGetAttribLocation); IMPORT_FUNC_GL(glGetError); IMPORT_FUNC_GL(glGetShaderiv); IMPORT_FUNC_GL(glGetShaderInfoLog); IMPORT_FUNC_GL(glGetUniformLocation); IMPORT_FUNC_GL(glLinkProgram); IMPORT_FUNC_GL(glShaderSource); IMPORT_FUNC_GL(glUniform1f); IMPORT_FUNC_GL(glUniform3fv); IMPORT_FUNC_GL(glUniform4fv); IMPORT_FUNC_GL(glUniformMatrix3fv); IMPORT_FUNC_GL(glUniformMatrix4fv); IMPORT_FUNC_GL(glUseProgram); IMPORT_FUNC_GL(glVertexAttribPointer); IMPORT_FUNC_GL(glViewport); return result; } #endif // !DISABLE_IMPORTGL