@@ -0,0 +1,67 @@ | |||
# progs/slang/Makefile | |||
TOP = ../.. | |||
include $(TOP)/configs/current | |||
INCDIR = $(TOP)/include | |||
LIB_DEP = $(LIB_DIR)/$(GL_LIB_NAME) | |||
# | |||
# targets | |||
# | |||
.PHONY: default tests clean | |||
default: cltest sotest vstest | |||
tests: default | |||
! ./sotest 2> /dev/null | (grep -e ^[*][*][*]) | |||
! ./vstest 2> /dev/null | (grep -e ^[*][*][*]) | |||
! ./cltest 2> /dev/null | (grep -e ^[*][*][*]) | |||
clean: | |||
rm -f cltest.o sotest.o vstest.o framework.o cltest sotest vstest | |||
# | |||
# executables | |||
# | |||
cltest: cltest.o framework.o $(LIB_DEP) | |||
$(CC) cltest.o framework.o $(APP_LIB_DEPS) -o cltest | |||
sotest: sotest.o framework.o $(LIB_DEP) | |||
$(CC) sotest.o framework.o $(APP_LIB_DEPS) -o sotest | |||
vstest: vstest.o framework.o $(LIB_DEP) | |||
$(CC) vstest.o framework.o $(APP_LIB_DEPS) -o vstest | |||
# | |||
# objects | |||
# | |||
framework.o: framework.c | |||
$(CC) -c -I$(INCDIR) framework.c -o framework.o | |||
cltest.o: cltest.c | |||
$(CC) -c -I$(INCDIR) cltest.c -o cltest.o | |||
sotest.o: sotest.c | |||
$(CC) -c -I$(INCDIR) sotest.c -o sotest.o | |||
vstest.o: vstest.c | |||
$(CC) -c -I$(INCDIR) vstest.c -o vstest.o | |||
# | |||
# sources | |||
# | |||
framework.c: framework.h | |||
cltest.c: framework.h | |||
sotest.c: framework.h | |||
vstest.c: framework.h | |||
@@ -0,0 +1,7 @@ | |||
GLSL regression tests. | |||
Type "make" to build all test apps. | |||
Type "make tests" to build and run all test apps. If any | |||
error is detected, a line starting with *** is output. | |||
@@ -76,8 +76,8 @@ static void load_test_file (const char *filename, struct PROGRAM **program) | |||
struct PROGRAM **currprog = program; | |||
FILE *f; | |||
char line[256]; | |||
enum PROGRAM_LOAD_STATE pls; | |||
enum SHADER_LOAD_STATE sls; | |||
enum PROGRAM_LOAD_STATE pls = PLS_NONE; | |||
enum SHADER_LOAD_STATE sls = SLS_NONE; | |||
f = fopen (filename, "r"); | |||
if (f == NULL) | |||
@@ -174,7 +174,7 @@ void RenderScene (void) | |||
exit (0); | |||
code = program->vertex.code; | |||
glShaderSourceARB (vert, 1, &code, NULL); | |||
glShaderSourceARB (vert, 1, (const GLcharARB **) (&code), NULL); | |||
glCompileShaderARB (vert); | |||
CheckObjectStatus (vert); | |||
@@ -3,8 +3,10 @@ | |||
/* | |||
* GL_ARB_multitexture | |||
*/ | |||
#ifndef GL_ARB_multitexture | |||
PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; | |||
PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; | |||
#endif | |||
/* | |||
* GL_ARB_shader_objects | |||
@@ -65,8 +67,10 @@ void InitFramework (int *argc, char *argv[]) | |||
glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); | |||
glutCreateWindow (argv[0]); | |||
#ifndef GL_ARB_multitexture | |||
GETPROCADDR(glClientActiveTextureARB, PFNGLCLIENTACTIVETEXTUREARBPROC); | |||
GETPROCADDR(glMultiTexCoord4fvARB, PFNGLMULTITEXCOORD4FVARBPROC); | |||
#endif | |||
GETPROCADDR(glDeleteObjectARB, PFNGLDELETEOBJECTARBPROC); | |||
GETPROCADDR(glGetHandleARB, PFNGLGETHANDLEARBPROC); | |||
@@ -100,9 +104,6 @@ void InitFramework (int *argc, char *argv[]) | |||
InitScene (); | |||
/*glutReshapeFunc (Reshape); | |||
glutKeyboardFunc (Key); | |||
glutSpecialFunc (SpecialKey);*/ | |||
glutDisplayFunc (Display); | |||
glutIdleFunc (Idle); | |||
glutMainLoop (); |
@@ -6,9 +6,10 @@ | |||
#include <windows.h> | |||
#endif | |||
#include <assert.h> | |||
#include <stdlib.h> | |||
#include <stdio.h> | |||
#include <string.h> | |||
#include <assert.h> | |||
#include <math.h> | |||
#include <GL/gl.h> | |||
#include <GL/glut.h> | |||
@@ -25,8 +26,10 @@ | |||
/* | |||
* GL_ARB_multitexture | |||
*/ | |||
#ifndef GL_ARB_multitexture | |||
extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; | |||
extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; | |||
#endif | |||
/* | |||
* GL_ARB_shader_objects | |||
@@ -68,12 +71,12 @@ extern PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT; | |||
extern PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT; | |||
extern PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT; | |||
void InitFramework (int *argc, char *argv[]); | |||
extern void InitFramework (int *argc, char *argv[]); | |||
extern void InitScene (void); | |||
extern void RenderScene (void); | |||
GLboolean CheckObjectStatus (GLhandleARB); | |||
extern GLboolean CheckObjectStatus (GLhandleARB); | |||
#endif | |||
@@ -210,7 +210,7 @@ static void dl_end () | |||
static void load_test_file (const char *filename) | |||
{ | |||
FILE *f; | |||
long size; | |||
GLint size; | |||
char *code; | |||
GLint i; | |||
@@ -230,7 +230,7 @@ static void load_test_file (const char *filename) | |||
size = fread (code, 1, size, f); | |||
fclose (f); | |||
glShaderSourceARB (vert, 1, &code, &size); | |||
glShaderSourceARB (vert, 1, (const GLcharARB **) (&code), &size); | |||
glCompileShaderARB (vert); | |||
if (!CheckObjectStatus (vert)) | |||
exit (0); |
@@ -1,68 +1,68 @@ | |||
/* | |||
* Vertex shader test. | |||
* Uses all conventional attributes and 15 generic attributes to print | |||
* their values, using printMESA() extension function, to the debugger | |||
* to compare them with the actual passed-in values. | |||
* Use different types for generic attributes to check matrix handling. | |||
* | |||
* Author: Michal Krol | |||
*/ | |||
#version 110 | |||
//#extension MESA_shader_debug: require | |||
attribute vec4 Attribute1; | |||
attribute vec4 Attribute2; | |||
attribute vec4 Attribute3; | |||
attribute float Attribute4; | |||
attribute vec2 Attribute5; | |||
attribute vec3 Attribute6; | |||
attribute mat2 Attribute7; | |||
attribute mat3 Attribute9; | |||
attribute mat4 Attribute12; | |||
void main () | |||
{ | |||
// | |||
// Do some legal stuff. | |||
// | |||
gl_Position = gl_ModelViewMatrix * gl_Vertex; | |||
gl_FrontColor = vec4 (1.0); | |||
// | |||
// Conventional attributes - except for gl_Vertex. | |||
// | |||
printMESA (gl_Color); | |||
printMESA (gl_SecondaryColor); | |||
printMESA (gl_Normal); | |||
printMESA (gl_MultiTexCoord0); | |||
printMESA (gl_MultiTexCoord1); | |||
printMESA (gl_MultiTexCoord2); | |||
printMESA (gl_MultiTexCoord3); | |||
printMESA (gl_MultiTexCoord4); | |||
printMESA (gl_MultiTexCoord5); | |||
printMESA (gl_MultiTexCoord6); | |||
printMESA (gl_MultiTexCoord7); | |||
printMESA (gl_FogCoord); | |||
// | |||
// Generic attributes - attrib with index 0 is not used because it would | |||
// alias with gl_Vertex, which is not allowed. | |||
// | |||
printMESA (Attribute1); | |||
printMESA (Attribute2); | |||
printMESA (Attribute3); | |||
printMESA (Attribute4); | |||
printMESA (Attribute5); | |||
printMESA (Attribute6); | |||
printMESA (Attribute7); | |||
printMESA (Attribute9); | |||
printMESA (Attribute12); | |||
// | |||
// Vertex position goes last. | |||
// | |||
printMESA (gl_Vertex); | |||
} | |||
/* | |||
* Vertex shader test. | |||
* Uses all conventional attributes and 15 generic attributes to print | |||
* their values, using printMESA() extension function, to the debugger | |||
* to compare them with the actual passed-in values. | |||
* Use different types for generic attributes to check matrix handling. | |||
* | |||
* Author: Michal Krol | |||
*/ | |||
#version 110 | |||
//#extension MESA_shader_debug: require | |||
attribute vec4 Attribute1; | |||
attribute vec4 Attribute2; | |||
attribute vec4 Attribute3; | |||
attribute float Attribute4; | |||
attribute vec2 Attribute5; | |||
attribute vec3 Attribute6; | |||
attribute mat2 Attribute7; | |||
attribute mat3 Attribute9; | |||
attribute mat4 Attribute12; | |||
void main () | |||
{ | |||
// | |||
// Do some legal stuff. | |||
// | |||
gl_Position = gl_ModelViewMatrix * gl_Vertex; | |||
gl_FrontColor = vec4 (1.0); | |||
// | |||
// Conventional attributes - except for gl_Vertex. | |||
// | |||
printMESA (gl_Color); | |||
printMESA (gl_SecondaryColor); | |||
printMESA (gl_Normal); | |||
printMESA (gl_MultiTexCoord0); | |||
printMESA (gl_MultiTexCoord1); | |||
printMESA (gl_MultiTexCoord2); | |||
printMESA (gl_MultiTexCoord3); | |||
printMESA (gl_MultiTexCoord4); | |||
printMESA (gl_MultiTexCoord5); | |||
printMESA (gl_MultiTexCoord6); | |||
printMESA (gl_MultiTexCoord7); | |||
printMESA (gl_FogCoord); | |||
// | |||
// Generic attributes - attrib with index 0 is not used because it would | |||
// alias with gl_Vertex, which is not allowed. | |||
// | |||
printMESA (Attribute1); | |||
printMESA (Attribute2); | |||
printMESA (Attribute3); | |||
printMESA (Attribute4); | |||
printMESA (Attribute5); | |||
printMESA (Attribute6); | |||
printMESA (Attribute7); | |||
printMESA (Attribute9); | |||
printMESA (Attribute12); | |||
// | |||
// Vertex position goes last. | |||
// | |||
printMESA (gl_Vertex); | |||
} | |||