Added 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 ...
+