-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglslInjection.py
More file actions
99 lines (75 loc) · 2.94 KB
/
glslInjection.py
File metadata and controls
99 lines (75 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import os
# 定义文件路径
MeshBasicMaterialVSCode_file_path = 'engine/render/driver/glsl/vs/meshBasicMaterialVS.glsl'
MeshBasicMaterialFSCode_file_path = 'engine/render/driver/glsl/fs/meshBasicMaterialFS.glsl'
CubeMaterialVSCode_file_path = 'engine/render/driver/glsl/vs/cubeMaterialVS.glsl'
CubeMaterialFSCode_file_path = 'engine/render/driver/glsl/fs/cubeMaterialFS.glsl'
PhongLightingMaterialVSCode_file_path = 'engine/render/driver/glsl/vs/phongLightingMaterialVS.glsl'
PhongLightingMaterialFSCode_file_path = 'engine/render/driver/glsl/fs/phongLightingMaterialFS.glsl'
DepthMaterialVSCode_file_path = 'engine/render/driver/glsl/vs/depthMaterialVS.glsl'
DepthMaterialFSCode_file_path = 'engine/render/driver/glsl/fs/depthMaterialFS.glsl'
cpp_file_path = 'engine/render/driver/driverGLSL.cpp'
# CPP模板字符串
cpp_template = '''
#include "driverGLSL.h"
namespace JB
{
std::string MeshBasicMaterialVSCode =
R"(
{MeshBasicMaterialVSCode}
)";
std::string MeshBasicMaterialFSCode =
R"(
{MeshBasicMaterialFSCode}
)";
std::string CubeMaterialVSCode =
R"(
{CubeMaterialVSCode}
)";
std::string CubeMaterialFSCode =
R"(
{CubeMaterialFSCode}
)";
std::string PhongLightingMaterialVSCode =
R"(
{PhongLightingMaterialVSCode}
)";
std::string PhongLightingMaterialFSCode =
R"(
{PhongLightingMaterialFSCode}
)";
std::string DepthMaterialVSCode =
R"(
{DepthMaterialVSCode}
)";
std::string DepthMaterialFSCode =
R"(
{DepthMaterialFSCode}
)";
}
'''
# 读取GLSL文件内容
def read_glsl_file(file_path):
with open(file_path, 'r') as file:
return file.read()
# 将结果写入CPP文件
def write_cpp_file(file_path, content):
with open(file_path, 'w') as file:
file.write(content)
# 主函数
def main():
# 替换占位符
cpp_content = cpp_template
cpp_content = cpp_content.replace('{MeshBasicMaterialVSCode}', read_glsl_file(MeshBasicMaterialVSCode_file_path))
cpp_content = cpp_content.replace('{MeshBasicMaterialFSCode}', read_glsl_file(MeshBasicMaterialFSCode_file_path))
cpp_content = cpp_content.replace('{CubeMaterialVSCode}', read_glsl_file(CubeMaterialVSCode_file_path))
cpp_content = cpp_content.replace('{CubeMaterialFSCode}', read_glsl_file(CubeMaterialFSCode_file_path))
cpp_content = cpp_content.replace('{PhongLightingMaterialVSCode}', read_glsl_file(PhongLightingMaterialVSCode_file_path))
cpp_content = cpp_content.replace('{PhongLightingMaterialFSCode}', read_glsl_file(PhongLightingMaterialFSCode_file_path))
cpp_content = cpp_content.replace('{DepthMaterialVSCode}', read_glsl_file(DepthMaterialVSCode_file_path))
cpp_content = cpp_content.replace('{DepthMaterialFSCode}', read_glsl_file(DepthMaterialFSCode_file_path))
# 写入更新后的内容到CPP文件
write_cpp_file(cpp_file_path, cpp_content)
print("GLSL注入成功。")
if __name__ == '__main__':
main()