MCPcopy Create free account
hub / github.com/Italink/ModernGraphicsEngineGuide / main

Function main

Source/1-GraphicsAPI/03-Shader/Source/main.cpp:65–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65int main(int argc, char **argv)
66{
67 QApplication app(argc, argv);
68 QDir::setCurrent(RESOURCE_DIR"/Shader");
69
70 QWidget main;
71
72 QGridLayout* layout = new QGridLayout(&main);
73
74 QPushButton* btCompile = new QPushButton("Vulkan GLSL");
75 QTextEdit* editor = new QTextEdit;
76 QTextBrowser* glslBrowser = new QTextBrowser;
77 QTextBrowser* hlslBrowser = new QTextBrowser;
78 QTextBrowser* mslBrowser = new QTextBrowser;
79
80 layout->addWidget(btCompile, 0, 0);
81 layout->addWidget(editor, 1, 0);
82
83 layout->addWidget(new QLabel("OpenGL GLSL"), 0, 1, Qt::AlignCenter);
84 layout->addWidget(glslBrowser, 1, 1);
85
86 layout->addWidget(new QLabel("HLSL"), 0, 2, Qt::AlignCenter);
87 layout->addWidget(hlslBrowser, 1, 2);
88
89 layout->addWidget(new QLabel("MSL"), 0, 3, Qt::AlignCenter);
90 layout->addWidget(mslBrowser, 1, 3);
91
92 editor->setTabStopDistance(16);
93 editor->setText(R"(#version 430
94layout(location = 0) in vec3 vColor;
95layout(location = 0) out vec4 outFragColor;
96layout(std140, binding = 0) uniform UniformBlock {
97 float opacity;
98}UBO;
99void main()
100{
101 outFragColor = vec4(vColor, UBO.opacity);
102})");
103
104 QObject::connect(btCompile, &QPushButton::clicked, [&]() {
105 QShader shader = newShaderFromCode(QShader::FragmentStage, editor->toPlainText().toLocal8Bit());
106 glslBrowser->setText(shader.shader(QShaderKey(QShader::GlslShader, QShaderVersion(430))).shader());
107 hlslBrowser->setText(shader.shader(QShaderKey(QShader::HlslShader, QShaderVersion(60))).shader());
108 mslBrowser->setText(shader.shader(QShaderKey(QShader::MslShader, QShaderVersion(12))).shader());
109 });
110
111 main.setMinimumSize(1200,800);
112 main.show();
113
114 return app.exec();
115}

Callers

nothing calls this directly

Calls 1

newShaderFromCodeFunction · 0.85

Tested by

no test coverage detected