nkeynes@635 | 1 | /**
|
nkeynes@636 | 2 | * $Id$
|
nkeynes@635 | 3 | *
|
nkeynes@635 | 4 | * GL-based support functions
|
nkeynes@635 | 5 | *
|
nkeynes@635 | 6 | * Copyright (c) 2005 Nathan Keynes.
|
nkeynes@635 | 7 | *
|
nkeynes@635 | 8 | * This program is free software; you can redistribute it and/or modify
|
nkeynes@635 | 9 | * it under the terms of the GNU General Public License as published by
|
nkeynes@635 | 10 | * the Free Software Foundation; either version 2 of the License, or
|
nkeynes@635 | 11 | * (at your option) any later version.
|
nkeynes@635 | 12 | *
|
nkeynes@635 | 13 | * This program is distributed in the hope that it will be useful,
|
nkeynes@635 | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
nkeynes@635 | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
nkeynes@635 | 16 | * GNU General Public License for more details.
|
nkeynes@635 | 17 | */
|
nkeynes@635 | 18 |
|
nkeynes@635 | 19 | #ifndef lxdream_glutil_H
|
nkeynes@635 | 20 | #define lxdream_glutil_H
|
nkeynes@635 | 21 |
|
nkeynes@687 | 22 | #include <stdio.h>
|
nkeynes@635 | 23 | #include "display.h"
|
nkeynes@1130 | 24 | #include "pvr2/shaders.h"
|
nkeynes@635 | 25 |
|
nkeynes@736 | 26 | #ifdef __cplusplus
|
nkeynes@736 | 27 | extern "C" {
|
nkeynes@736 | 28 | #endif
|
nkeynes@736 | 29 |
|
nkeynes@635 | 30 | /**
|
nkeynes@635 | 31 | * Test if a specific extension is supported. From opengl.org
|
nkeynes@635 | 32 | * @param extension extension name to check for
|
nkeynes@635 | 33 | * @return TRUE if supported, otherwise FALSE.
|
nkeynes@635 | 34 | */
|
nkeynes@635 | 35 | gboolean isGLExtensionSupported( const char *extension );
|
nkeynes@635 | 36 |
|
nkeynes@667 | 37 | /**
|
nkeynes@687 | 38 | * Dump GL information to the output stream, usually for debugging purposes
|
nkeynes@687 | 39 | */
|
nkeynes@687 | 40 | void glPrintInfo( FILE *out );
|
nkeynes@687 | 41 |
|
nkeynes@687 | 42 | /**
|
nkeynes@1150 | 43 | * Check for a GL error and print a message if there is one
|
nkeynes@1150 | 44 | * @param context If not null, a string to be printed along side an error message
|
nkeynes@1150 | 45 | * @return TRUE if there was an error, otherwise FALSE
|
nkeynes@1150 | 46 | */
|
nkeynes@1150 | 47 | gboolean gl_check_error( const char *context );
|
nkeynes@1150 | 48 | /**
|
nkeynes@667 | 49 | * Test if secondary color (GL_COLOR_SUM) is supported.
|
nkeynes@667 | 50 | */
|
nkeynes@667 | 51 | gboolean isGLSecondaryColorSupported();
|
nkeynes@667 | 52 |
|
nkeynes@667 | 53 | gboolean isGLVertexBufferSupported();
|
nkeynes@1134 | 54 | gboolean isGLVertexRangeSupported();
|
nkeynes@667 | 55 | gboolean isGLPixelBufferSupported();
|
nkeynes@1140 | 56 | gboolean isGLMultitextureSupported();
|
nkeynes@667 | 57 | gboolean isGLMirroredTextureSupported();
|
nkeynes@635 | 58 |
|
nkeynes@635 | 59 | /****** Shader handling (gl_sl.c) *****/
|
nkeynes@635 | 60 | gboolean glsl_is_supported(void);
|
nkeynes@1134 | 61 | const char *glsl_get_version(void);
|
nkeynes@1130 | 62 | gboolean glsl_load_shaders( );
|
nkeynes@635 | 63 | void glsl_unload_shaders(void);
|
nkeynes@1130 | 64 | gboolean glsl_set_shader( unsigned program_id );
|
nkeynes@1130 | 65 | void glsl_clear_shader();
|
nkeynes@1140 | 66 | GLint glsl_get_uniform_location( unsigned program, const char *name );
|
nkeynes@1140 | 67 | void glsl_set_uniform_int( unsigned program, const char *name, GLint value );
|
nkeynes@635 | 68 |
|
nkeynes@1134 | 69 | /* Convenience formatting function for driver use */
|
nkeynes@1134 | 70 | void fprint_extensions( FILE *out, const char *extensions );
|
nkeynes@1134 | 71 |
|
nkeynes@736 | 72 | #ifdef __cplusplus
|
nkeynes@736 | 73 | }
|
nkeynes@736 | 74 | #endif
|
nkeynes@736 | 75 |
|
nkeynes@635 | 76 | #endif /* !lxdream_glutil_H */
|