From 6cc37e61450906ac26167869fd634bdf3c6e8fd7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 2 May 2008 20:33:10 -0400 Subject: [PATCH] Added glcaps.c ... --HG-- branch : trunk --- CMakeLists.txt | 2 + glcaps.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 glcaps.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 74ef1b1a..10aac769 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,8 @@ FIND_PACKAGE(SDL) IF(SDL_FOUND) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) ADD_DEFINITIONS(-DFINDERRORS_COMPILE_SHADERS=1) + ADD_EXECUTABLE(glcaps glcaps.c) + TARGET_LINK_LIBRARIES(glcaps ${SDL_LIBRARY}) ENDIF(SDL_FOUND) ADD_EXECUTABLE(testparse testparse.c mojoshader.c) diff --git a/glcaps.c b/glcaps.c new file mode 100644 index 00000000..3a65d61d --- /dev/null +++ b/glcaps.c @@ -0,0 +1,103 @@ +#ifdef _WINDOWS +#define WIN32_LEAN_AND_MEAN 1 +#include +#endif + +#include +#define GL_GLEXT_PROTOTYPES 1 +#include "GL/gl.h" +#include "GL/glext.h" +#include "SDL.h" + +typedef WINGDIAPI const GLubyte * (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params); +typedef WINGDIAPI const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); + +int main(int argc, char **argv) +{ + GLint val = 0; + + SDL_Init(SDL_INIT_VIDEO); + SDL_GL_LoadLibrary(NULL); + SDL_SetVideoMode(640, 480, 0, SDL_OPENGL); + + PFNGLGETSTRINGPROC pglGetString = (PFNGLGETSTRINGPROC) SDL_GL_GetProcAddress("glGetString"); + PFNGLGETINTEGERVPROC pglGetIntegerv = (PFNGLGETINTEGERVPROC) SDL_GL_GetProcAddress("glGetIntegerv"); + PFNGLGETPROGRAMIVARBPROC pglGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC) SDL_GL_GetProcAddress("glGetProgramivARB"); + + printf("Basic strings...\n\n"); + + #define getval(x) printf(#x ": %s\n", pglGetString(x)) + + getval(GL_RENDERER); + getval(GL_VERSION); + getval(GL_VENDOR); + + #undef getval + + printf("\nExtensions...\n\n"); + + const GLubyte *ext = pglGetString(GL_EXTENSIONS); + while (*ext) + { + fputc((*ext == ' ') ? '\n' : ((int) *ext), stdout); + ext++; + } // while + + ext--; + if (*ext != ' ') + printf("\n"); + + printf("\nARB1 values...\n\n"); + + if (pglGetProgramivARB == NULL) + printf(" (unsupported.)\n"); + else + { + #define getval(x) \ + val = -1; \ + pglGetProgramivARB(GL_VERTEX_PROGRAM_ARB, x, &val); \ + printf(#x ": %d\n", (int) val); + + getval(GL_MAX_PROGRAM_INSTRUCTIONS_ARB); + getval(GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB); + getval(GL_MAX_PROGRAM_TEMPORARIES_ARB); + getval(GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB); + getval(GL_MAX_PROGRAM_PARAMETERS_ARB); + getval(GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB); + getval(GL_MAX_PROGRAM_ATTRIBS_ARB); + getval(GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB); + getval(GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB); + getval(GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB); + getval(GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB); + getval(GL_MAX_PROGRAM_ENV_PARAMETERS_ARB); + getval(GL_MAX_PROGRAM_PARAMETERS_ARB); + + #undef getval + } // else + + printf("\nGLSL values...\n\n"); + + #define getval(x) \ + val = -1; \ + pglGetIntegerv(x, &val); \ + printf(#x ": %d\n", (int) val); + + getval(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB); + getval(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB); + getval(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB); + getval(GL_MAX_VARYING_FLOATS_ARB); + getval(GL_MAX_VERTEX_ATTRIBS_ARB); + getval(GL_MAX_TEXTURE_IMAGE_UNITS_ARB); + getval(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB); + getval(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB); + getval(GL_MAX_TEXTURE_COORDS_ARB); + + #undef getval + + SDL_Quit(); + printf("\n"); + + return 0; +} + +