Added bestprofile program. trunk
authorRyan C. Gordon <icculus@icculus.org>
Sun, 29 Jun 2008 00:15:52 -0400
branchtrunk
changeset 406 682e9073a9cf
parent 405 e2cffb40e8b8
child 407 620d48c5d13a
Added bestprofile program.
.hgignore
CMakeLists.txt
bestprofile.c
--- a/.hgignore	Sat Jun 28 22:53:55 2008 -0400
+++ b/.hgignore	Sun Jun 29 00:15:52 2008 -0400
@@ -5,6 +5,7 @@
 cmake_install.cmake
 testparse
 testoutput
+bestprofile
 finderrors
 glcaps
 *.exe
--- a/CMakeLists.txt	Sat Jun 28 22:53:55 2008 -0400
+++ b/CMakeLists.txt	Sun Jun 29 00:15:52 2008 -0400
@@ -19,6 +19,8 @@
     ADD_DEFINITIONS(-DFINDERRORS_COMPILE_SHADERS=1)
     ADD_EXECUTABLE(glcaps glcaps.c)
     TARGET_LINK_LIBRARIES(glcaps ${SDL_LIBRARY})
+    ADD_EXECUTABLE(bestprofile bestprofile.c mojoshader.c mojoshader_opengl.c)
+    TARGET_LINK_LIBRARIES(bestprofile ${SDL_LIBRARY})
 ENDIF(SDL_FOUND)
 
 ADD_EXECUTABLE(testparse testparse.c mojoshader.c)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bestprofile.c	Sun Jun 29 00:15:52 2008 -0400
@@ -0,0 +1,53 @@
+/**
+ * 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"
+
+int main(int argc, char **argv)
+{
+    int retval = 1;
+
+    #if 0
+    printf("MojoShader bestprofile\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
+        {
+            const char *best = MOJOSHADER_glBestProfile(SDL_GL_GetProcAddress);
+            MOJOSHADER_glContext *ctx;
+            ctx = MOJOSHADER_glCreateContext(best, SDL_GL_GetProcAddress, 0, 0, 0);
+            if (ctx == NULL)
+                printf("MOJOSHADER_glCreateContext() fail: %s\n", MOJOSHADER_glGetError());
+            else
+            {
+                printf("%s\n", best);
+                retval = 0;  // success.
+                MOJOSHADER_glDestroyContext(ctx);
+            } // else
+        } // else
+        SDL_Quit();
+    } // else
+
+    return retval;
+} // main
+
+// end of bestprofile.c ...
+