146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo/* San Angeles Observation OpenGL ES version example 246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * Copyright 2004-2005 Jetro Lauha 346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * All rights reserved. 446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * Web: http://iki.fi/jetro/ 546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * 646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * This source is free software; you can redistribute it and/or 746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * modify it under the terms of EITHER: 846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * (1) The GNU Lesser General Public License as published by the Free 946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * Software Foundation; either version 2.1 of the License, or (at 1046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * your option) any later version. The text of the GNU Lesser 1146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * General Public License is included with this source in the 1246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * file LICENSE-LGPL.txt. 1346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * (2) The BSD-style license that is included with this source in 1446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * the file LICENSE-BSD.txt. 1546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * 1646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * This source is distributed in the hope that it will be useful, 1746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * but WITHOUT ANY WARRANTY; without even the implied warranty of 1846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files 1946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. 2046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * 2146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * $Id: importgl.h,v 1.4 2005/02/24 20:29:33 tonic Exp $ 2246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * $Revision: 1.4 $ 2346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo */ 2446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 2546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifndef IMPORTGL_H_INCLUDED 2646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#define IMPORTGL_H_INCLUDED 2746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 2846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 2946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifdef __cplusplus 3046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Moextern "C" { 3146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif 3246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 33c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#include <GLES2/gl2.h> 3446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 3546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo/* Use DISABLE_IMPORTGL if you want to link the OpenGL ES at 3646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * compile/link time and not import it dynamically runtime. 3746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo */ 3846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifndef DISABLE_IMPORTGL 3946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 4046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 41591e2c249ea3291b844210606dcbf19ada6fe380Frank Henigman/* Dynamically fetches pointers to the gl functions. 4246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * Should be called once on application initialization. 4346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo * Returns non-zero on success and 0 on failure. 4446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo */ 45591e2c249ea3291b844210606dcbf19ada6fe380Frank Henigmanextern int importGLInit(); 4646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 4746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 4846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifndef IMPORTGL_API 4946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#define IMPORTGL_API extern 5046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif 5146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifndef IMPORTGL_FNPTRINIT 5246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#define IMPORTGL_FNPTRINIT 5346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif 5446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 55c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define FNDEF(retType, funcName, args) \ 56c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo IMPORTGL_API retType (*funcPtr_##funcName) args IMPORTGL_FNPTRINIT;\ 57c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo typedef retType (*funcType_##funcName) args 58c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo 59c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo 60c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glAttachShader, (GLuint program, GLuint shader)); 61c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glBindBuffer, (GLenum target, GLuint buffer)); 6246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glBlendFunc, (GLenum sfactor, GLenum dfactor)); 63c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glBufferData, (GLenum target, GLsizeiptr size, 64c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo const void* data, GLenum usage)); 65c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glBufferSubData, (GLenum target, GLintptr offset, 66c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLsizeiptr size, const void* data)); 6746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glClear, (GLbitfield mask)); 68c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glClearColor, (GLclampf red, GLclampf green, GLclampf blue, 69c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLclampf alpha)); 70c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glCompileShader, (GLuint shader)); 71c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(GLuint, glCreateProgram, (void)); 72c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(GLuint, glCreateShader, (GLenum type)); 73c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glDeleteBuffers, (GLsizei n, const GLuint* buffers)); 74c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glDeleteProgram, (GLuint program)); 75c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glDeleteShader, (GLuint shader)); 7646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glDisable, (GLenum cap)); 77c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glDisableVertexAttribArray, (GLuint index)); 7846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count)); 7946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glEnable, (GLenum cap)); 80c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glEnableVertexAttribArray, (GLuint index)); 81c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glGenBuffers, (GLsizei n, GLuint* buffers)); 82c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(int, glGetAttribLocation, (GLuint program, const char* name)); 8346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(GLenum, glGetError, (void)); 84c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glGetShaderiv, (GLuint shader, GLenum pname, GLint* params)); 85c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glGetShaderInfoLog, (GLuint shader, GLsizei bufsize, 86c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLsizei* length, char* infolog)); 87c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(int, glGetUniformLocation, (GLuint program, const char* name)); 88c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glLinkProgram, (GLuint program)); 89c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glShaderSource, (GLuint shader, GLsizei count, 90c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo const char** string, const GLint* length)); 91c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUniform1f, (GLint location, GLfloat x)); 92c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUniform3fv, (GLint location, GLsizei count, const GLfloat* v)); 93c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUniform4fv, (GLint location, GLsizei count, const GLfloat* v)); 94c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUniformMatrix3fv, (GLint location, GLsizei count, 95c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLboolean transpose, const GLfloat* value)); 96c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUniformMatrix4fv, (GLint location, GLsizei count, 97c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLboolean transpose, const GLfloat* value)); 98c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glUseProgram, (GLuint program)); 99c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao MoFNDEF(void, glVertexAttribPointer, (GLuint indx, GLint size, GLenum type, 100c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo GLboolean normalized, GLsizei stride, 101c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo const void* ptr)); 10246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao MoFNDEF(void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height)); 10346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 10446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#undef FN 10546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#define FNPTR(name) funcPtr_##name 10646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 10746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifndef IMPORTGL_NO_FNPTR_DEFS 10846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 109591e2c249ea3291b844210606dcbf19ada6fe380Frank Henigman// Redirect gl* function calls to funcPtr_gl*. 110c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo 111c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glAttachShader FNPTR(glAttachShader) 112c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glBindBuffer FNPTR(glBindBuffer) 113c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glBlendFunc FNPTR(glBlendFunc) 114c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glBufferData FNPTR(glBufferData) 115c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glBufferSubData FNPTR(glBufferSubData) 116c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glClear FNPTR(glClear) 117c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glClearColor FNPTR(glClearColor) 118c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glCompileShader FNPTR(glCompileShader) 119c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glCreateProgram FNPTR(glCreateProgram) 120c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glCreateShader FNPTR(glCreateShader) 121c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDeleteBuffers FNPTR(glDeleteBuffers) 122c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDeleteProgram FNPTR(glDeleteProgram) 123c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDeleteShader FNPTR(glDeleteShader) 124c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDisable FNPTR(glDisable) 125c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDisableVertexAttribArray FNPTR(glDisableVertexAttribArray) 126c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glDrawArrays FNPTR(glDrawArrays) 127c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glEnable FNPTR(glEnable) 128c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glEnableVertexAttribArray FNPTR(glEnableVertexAttribArray) 129c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGenBuffers FNPTR(glGenBuffers) 130c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGetAttribLocation FNPTR(glGetAttribLocation) 131c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGetError FNPTR(glGetError) 132c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGetShaderiv FNPTR(glGetShaderiv) 133c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGetShaderInfoLog FNPTR(glGetShaderInfoLog) 134c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glGetUniformLocation FNPTR(glGetUniformLocation) 135c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo 136c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glLinkProgram FNPTR(glLinkProgram) 137c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glShaderSource FNPTR(glShaderSource) 138c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUniform1f FNPTR(glUniform1f) 139c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUniform3fv FNPTR(glUniform3fv) 140c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUniform4fv FNPTR(glUniform4fv) 141c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUniformMatrix3fv FNPTR(glUniformMatrix3fv) 142c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUniformMatrix4fv FNPTR(glUniformMatrix4fv) 143c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glUseProgram FNPTR(glUseProgram) 144c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glViewport FNPTR(glViewport) 145c8ab85b5ab0cf6bc500d8b31cfcb199a7107c8e8Zhenyao Mo#define glVertexAttribPointer FNPTR(glVertexAttribPointer) 14646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 14746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif // !IMPORTGL_NO_FNPTR_DEFS 14846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 14946645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 15046645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif // !DISABLE_IMPORTGL 15146645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 15246645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 15346645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#ifdef __cplusplus 15446645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo} 15546645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif 15646645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 15746645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo 15846645d3bc30237d5be6552a255c9100fd6d1c5c3Zhenyao Mo#endif // !IMPORTGL_H_INCLUDED 159