mirror of https://github.com/alibaba/MNN.git
45 lines
1.3 KiB
Python
Executable File
45 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python
|
|
import sys
|
|
import os
|
|
gDefaultPath = sys.argv[1]#"glsl"
|
|
gOutputHeadFile = sys.argv[2]#"AllShader.hpp"
|
|
gOutputSourceFile = sys.argv[3]#"AllShader.cpp"
|
|
def findAllShader(path):
|
|
cmd = "find " + path + " -name \"*.glsl\""
|
|
vexs = os.popen(cmd).read().split('\n')
|
|
output = []
|
|
for f in vexs:
|
|
if len(f)>1:
|
|
output.append(f)
|
|
return output
|
|
|
|
def getName(fileName):
|
|
s1 = fileName.replace("/", "_")
|
|
s1 = s1.replace(".", "_")
|
|
return s1
|
|
|
|
def generateFile(headfile, sourcefile, shaders):
|
|
h = "#ifndef OPENGL_GLSL_SHADER_AUTO_GENERATE_H\n#define OPENGL_GLSL_SHADER_AUTO_GENERATE_H\n"
|
|
cpp = "#include \"AllShader.hpp\"\n"
|
|
for s in shaders:
|
|
name = getName(s)
|
|
print(name)
|
|
h += "extern const char* " + name + ";\n";
|
|
cpp += "const char* " + name + " = \n";
|
|
with open(s) as f:
|
|
lines = f.read().split("\n")
|
|
for l in lines:
|
|
if (len(l) < 1):
|
|
continue
|
|
cpp += "\""+l+"\\n\"\n"
|
|
cpp += ";\n"
|
|
h+= "#endif"
|
|
with open(headfile, "w") as f:
|
|
f.write(h);
|
|
with open(sourcefile, "w") as f:
|
|
f.write(cpp);
|
|
|
|
if __name__ == '__main__':
|
|
shaders = findAllShader(gDefaultPath)
|
|
generateFile(gOutputHeadFile, gOutputSourceFile, shaders);
|