Added availableprofiles.c ... trunk
authorRyan C. Gordon <icculus@icculus.org>
Thu, 03 Jul 2008 15:27:05 -0400
branchtrunk
changeset 423 ee393c1cf3b4
parent 422 1d5eaf3a4c98
child 424 f8ab84a91329
Added availableprofiles.c ...
.hgignore
CMakeLists.txt
availableprofiles.c
--- a/.hgignore	Thu Jul 03 15:25:12 2008 -0400
+++ b/.hgignore	Thu Jul 03 15:27:05 2008 -0400
@@ -6,6 +6,7 @@
 testparse
 testoutput
 bestprofile
+availableprofiles
 finderrors
 glcaps
 *.exe
--- a/CMakeLists.txt	Thu Jul 03 15:25:12 2008 -0400
+++ b/CMakeLists.txt	Thu Jul 03 15:27:05 2008 -0400
@@ -23,6 +23,8 @@
     TARGET_LINK_LIBRARIES(glcaps ${SDL_LIBRARY})
     ADD_EXECUTABLE(bestprofile bestprofile.c)
     TARGET_LINK_LIBRARIES(bestprofile mojoshader ${SDL_LIBRARY})
+    ADD_EXECUTABLE(availableprofiles availableprofiles.c)
+    TARGET_LINK_LIBRARIES(availableprofiles mojoshader ${SDL_LIBRARY})
 ENDIF(SDL_FOUND)
 
 ADD_EXECUTABLE(testparse testparse.c)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/availableprofiles.c	Thu Jul 03 15:27:05 2008 -0400
@@ -0,0 +1,64 @@
+/**
+ * MojoShader; generate shader programs from bytecode of compiled
+ *  Direct3D shaders.
+ *
+ * Please see the file LICENSE.txt in the source's root directory.
+ *
+ *  This file written by Ryan C. Gordon.
+ */
+
+#include <stdio.h>
+#include "mojoshader.h"
+#include "SDL.h"
+
+static int check_available(void)
+{
+    const char **avail = NULL;
+    int total = MOJOSHADER_glAvailableProfiles(SDL_GL_GetProcAddress, NULL, 0);
+    if (total > 0)
+    {
+        avail = (const char **) alloca(sizeof (const char *) * total);
+        total = MOJOSHADER_glAvailableProfiles(SDL_GL_GetProcAddress, avail, total);
+    } // if
+
+    if (total <= 0)
+        fprintf(stderr, "No profiles available.\n");
+    else
+    {
+        int i;
+        for (i = 0; i < total; i++)
+            printf("%s\n", avail[i]);
+    } // else
+
+    return 0;
+} // check_available
+
+
+int main(int argc, char **argv)
+{
+    int retval = 1;
+
+    #if 0
+    printf("MojoShader availableprofile\n");
+    printf("Compiled against version %d\n", MOJOSHADER_VERSION);
+    printf("Linked against version %d\n", MOJOSHADER_version());
+    printf("\n");
+    #endif
+
+    if (SDL_Init(SDL_INIT_VIDEO) == -1)
+        fprintf(stderr, "SDL_Init(SDL_INIT_VIDEO) error: %s\n", SDL_GetError());
+    else
+    {
+        SDL_GL_LoadLibrary(NULL);
+        if (SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL)
+            fprintf(stderr, "SDL_SetVideoMode() error: %s\n", SDL_GetError());
+        else
+            retval = check_available();
+        SDL_Quit();
+    } // else
+
+    return retval;
+} // main
+
+// end of availableprofiles.c ...
+