Home | History | Annotate | Download | only in jni
      1 /* San Angeles Observation OpenGL ES version example
      2  * Copyright 2004-2005 Jetro Lauha
      3  * All rights reserved.
      4  * Web: http://iki.fi/jetro/
      5  *
      6  * This source is free software; you can redistribute it and/or
      7  * modify it under the terms of EITHER:
      8  *   (1) The GNU Lesser General Public License as published by the Free
      9  *       Software Foundation; either version 2.1 of the License, or (at
     10  *       your option) any later version. The text of the GNU Lesser
     11  *       General Public License is included with this source in the
     12  *       file LICENSE-LGPL.txt.
     13  *   (2) The BSD-style license that is included with this source in
     14  *       the file LICENSE-BSD.txt.
     15  *
     16  * This source is distributed in the hope that it will be useful,
     17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
     19  * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
     20  *
     21  * $Id: importgl.h,v 1.4 2005/02/24 20:29:33 tonic Exp $
     22  * $Revision: 1.4 $
     23  */
     24 
     25 #ifndef IMPORTGL_H_INCLUDED
     26 #define IMPORTGL_H_INCLUDED
     27 
     28 
     29 #ifdef __cplusplus
     30 extern "C" {
     31 #endif
     32 
     33 
     34 #include <GLES/gl.h>
     35 #ifndef ANDROID_NDK
     36 #include <GLES/egl.h>
     37 #endif /* !ANDROID_NDK */
     38 
     39 /* Use DISABLE_IMPORTGL if you want to link the OpenGL ES at
     40  * compile/link time and not import it dynamically runtime.
     41  */
     42 #ifndef DISABLE_IMPORTGL
     43 
     44 
     45 /* Dynamically fetches pointers to the egl & gl functions.
     46  * Should be called once on application initialization.
     47  * Returns non-zero on success and 0 on failure.
     48  */
     49 extern int importGLInit();
     50 
     51 /* Frees the handle to egl & gl functions library.
     52  */
     53 extern void importGLDeinit();
     54 
     55 
     56 #ifndef IMPORTGL_API
     57 #define IMPORTGL_API extern
     58 #endif
     59 #ifndef IMPORTGL_FNPTRINIT
     60 #define IMPORTGL_FNPTRINIT
     61 #endif
     62 
     63 #define FNDEF(retType, funcName, args) IMPORTGL_API retType (*funcPtr_##funcName) args IMPORTGL_FNPTRINIT
     64 
     65 #ifndef ANDROID_NDK
     66 FNDEF(EGLBoolean, eglChooseConfig, (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config));
     67 FNDEF(EGLContext, eglCreateContext, (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list));
     68 FNDEF(EGLSurface, eglCreateWindowSurface, (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list));
     69 FNDEF(EGLBoolean, eglDestroyContext, (EGLDisplay dpy, EGLContext ctx));
     70 FNDEF(EGLBoolean, eglDestroySurface, (EGLDisplay dpy, EGLSurface surface));
     71 FNDEF(EGLBoolean, eglGetConfigAttrib, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value));
     72 FNDEF(EGLBoolean, eglGetConfigs, (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config));
     73 FNDEF(EGLDisplay, eglGetDisplay, (NativeDisplayType display));
     74 FNDEF(EGLint, eglGetError, (void));
     75 FNDEF(EGLBoolean, eglInitialize, (EGLDisplay dpy, EGLint *major, EGLint *minor));
     76 FNDEF(EGLBoolean, eglMakeCurrent, (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx));
     77 FNDEF(EGLBoolean, eglSwapBuffers, (EGLDisplay dpy, EGLSurface draw));
     78 FNDEF(EGLBoolean, eglTerminate, (EGLDisplay dpy));
     79 #endif /* !ANDROID_NDK */
     80 
     81 FNDEF(void, glBlendFunc, (GLenum sfactor, GLenum dfactor));
     82 FNDEF(void, glClear, (GLbitfield mask));
     83 FNDEF(void, glClearColorx, (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha));
     84 FNDEF(void, glColor4x, (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha));
     85 FNDEF(void, glColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer));
     86 FNDEF(void, glDisable, (GLenum cap));
     87 FNDEF(void, glDisableClientState, (GLenum array));
     88 FNDEF(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count));
     89 FNDEF(void, glEnable, (GLenum cap));
     90 FNDEF(void, glEnableClientState, (GLenum array));
     91 FNDEF(void, glFrustumx, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar));
     92 FNDEF(GLenum, glGetError, (void));
     93 FNDEF(void, glLightxv, (GLenum light, GLenum pname, const GLfixed *params));
     94 FNDEF(void, glLoadIdentity, (void));
     95 FNDEF(void, glMaterialx, (GLenum face, GLenum pname, GLfixed param));
     96 FNDEF(void, glMaterialxv, (GLenum face, GLenum pname, const GLfixed *params));
     97 FNDEF(void, glMatrixMode, (GLenum mode));
     98 FNDEF(void, glMultMatrixx, (const GLfixed *m));
     99 FNDEF(void, glNormalPointer, (GLenum type, GLsizei stride, const GLvoid *pointer));
    100 FNDEF(void, glPopMatrix, (void));
    101 FNDEF(void, glPushMatrix, (void));
    102 FNDEF(void, glRotatex, (GLfixed angle, GLfixed x, GLfixed y, GLfixed z));
    103 FNDEF(void, glScalex, (GLfixed x, GLfixed y, GLfixed z));
    104 FNDEF(void, glShadeModel, (GLenum mode));
    105 FNDEF(void, glTranslatex, (GLfixed x, GLfixed y, GLfixed z));
    106 FNDEF(void, glVertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer));
    107 FNDEF(void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height));
    108 
    109 
    110 #undef FN
    111 #define FNPTR(name) funcPtr_##name
    112 
    113 #ifndef IMPORTGL_NO_FNPTR_DEFS
    114 
    115 // Redirect egl* and gl* function calls to funcPtr_egl* and funcPtr_gl*.
    116 
    117 #ifndef ANDROID_NDK
    118 #define eglChooseConfig         FNPTR(eglChooseConfig)
    119 #define eglCreateContext        FNPTR(eglCreateContext)
    120 #define eglCreateWindowSurface  FNPTR(eglCreateWindowSurface)
    121 #define eglDestroyContext       FNPTR(eglDestroyContext)
    122 #define eglDestroySurface       FNPTR(eglDestroySurface)
    123 #define eglGetConfigAttrib      FNPTR(eglGetConfigAttrib)
    124 #define eglGetConfigs           FNPTR(eglGetConfigs)
    125 #define eglGetDisplay           FNPTR(eglGetDisplay)
    126 #define eglGetError             FNPTR(eglGetError)
    127 #define eglInitialize           FNPTR(eglInitialize)
    128 #define eglMakeCurrent          FNPTR(eglMakeCurrent)
    129 #define eglSwapBuffers          FNPTR(eglSwapBuffers)
    130 #define eglTerminate            FNPTR(eglTerminate)
    131 #endif /* !ANDROID_NDK */
    132 
    133 #define glBlendFunc             FNPTR(glBlendFunc)
    134 #define glClear                 FNPTR(glClear)
    135 #define glClearColorx           FNPTR(glClearColorx)
    136 #define glColor4x               FNPTR(glColor4x)
    137 #define glColorPointer          FNPTR(glColorPointer)
    138 #define glDisable               FNPTR(glDisable)
    139 #define glDisableClientState    FNPTR(glDisableClientState)
    140 #define glDrawArrays            FNPTR(glDrawArrays)
    141 #define glEnable                FNPTR(glEnable)
    142 #define glEnableClientState     FNPTR(glEnableClientState)
    143 #define glFrustumx              FNPTR(glFrustumx)
    144 #define glGetError              FNPTR(glGetError)
    145 #define glLightxv               FNPTR(glLightxv)
    146 #define glLoadIdentity          FNPTR(glLoadIdentity)
    147 #define glMaterialx             FNPTR(glMaterialx)
    148 #define glMaterialxv            FNPTR(glMaterialxv)
    149 #define glMatrixMode            FNPTR(glMatrixMode)
    150 #define glMultMatrixx           FNPTR(glMultMatrixx)
    151 #define glNormalPointer         FNPTR(glNormalPointer)
    152 #define glPopMatrix             FNPTR(glPopMatrix)
    153 #define glPushMatrix            FNPTR(glPushMatrix)
    154 #define glRotatex               FNPTR(glRotatex)
    155 #define glScalex                FNPTR(glScalex)
    156 #define glShadeModel            FNPTR(glShadeModel)
    157 #define glTranslatex            FNPTR(glTranslatex)
    158 #define glVertexPointer         FNPTR(glVertexPointer)
    159 #define glViewport              FNPTR(glViewport)
    160 
    161 #endif // !IMPORTGL_NO_FNPTR_DEFS
    162 
    163 
    164 #endif // !DISABLE_IMPORTGL
    165 
    166 
    167 #ifdef __cplusplus
    168 }
    169 #endif
    170 
    171 
    172 #endif // !IMPORTGL_H_INCLUDED
    173