mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
make sure we #define after #version
This commit is contained in:
parent
87450e320f
commit
f5384dc560
44
src/opengl.c
44
src/opengl.c
@ -157,11 +157,8 @@ GLuint OpenGL_BuildProgram(const GLchar *vertSource, const GLchar *fragSource)
|
|||||||
if (!vertShader || !fragShader)
|
if (!vertShader || !fragShader)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const GLchar *vertSrc[2] = { "#define VERTEX\n", vertSource };
|
glShaderSource(vertShader, 1, &vertSource, NULL);
|
||||||
const GLchar *fragSrc[2] = { "#define FRAGMENT\n", fragSource };
|
glShaderSource(fragShader, 1, &fragSource, NULL);
|
||||||
|
|
||||||
glShaderSource(vertShader, 2, vertSrc, NULL);
|
|
||||||
glShaderSource(fragShader, 2, fragSrc, NULL);
|
|
||||||
|
|
||||||
GLint isCompiled = 0;
|
GLint isCompiled = 0;
|
||||||
|
|
||||||
@ -232,15 +229,46 @@ GLuint OpenGL_BuildProgramFromFile(const char *filePath)
|
|||||||
long fileSize = ftell(file);
|
long fileSize = ftell(file);
|
||||||
fseek(file, 0, SEEK_SET);
|
fseek(file, 0, SEEK_SET);
|
||||||
|
|
||||||
char *source = malloc(fileSize + 1);
|
char *source = calloc(fileSize + 1, 1);
|
||||||
if (source)
|
if (source)
|
||||||
{
|
{
|
||||||
fread(source, fileSize, 1, file);
|
fread(source, fileSize, 1, file);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
source[fileSize] = 0;
|
char *vertSource = calloc(fileSize + 50, 1);
|
||||||
|
char *fragSource = calloc(fileSize + 50, 1);
|
||||||
|
|
||||||
|
if (fragSource && vertSource)
|
||||||
|
{
|
||||||
|
const char *versionStart = strstr(source, "#version");
|
||||||
|
if (versionStart)
|
||||||
|
{
|
||||||
|
const char deli[2] = "\n";
|
||||||
|
char *version = strtok(versionStart, deli);
|
||||||
|
|
||||||
|
strcpy(vertSource, source);
|
||||||
|
strcpy(fragSource, source);
|
||||||
|
strcat(vertSource, "\n#define VERTEX\n");
|
||||||
|
strcat(fragSource, "\n#define FRAGMENT\n");
|
||||||
|
strcat(vertSource, version + strlen(version) + 1);
|
||||||
|
strcat(fragSource, version + strlen(version) + 1);
|
||||||
|
|
||||||
|
program = OpenGL_BuildProgram(vertSource, fragSource);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(vertSource, "#define VERTEX\n");
|
||||||
|
strcpy(fragSource, "#define FRAGMENT\n");
|
||||||
|
strcat(vertSource, source);
|
||||||
|
strcat(fragSource, source);
|
||||||
|
|
||||||
|
program = OpenGL_BuildProgram(vertSource, fragSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(vertSource);
|
||||||
|
free(fragSource);
|
||||||
|
}
|
||||||
|
|
||||||
program = OpenGL_BuildProgram(source, source);
|
|
||||||
free(source);
|
free(source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user