@@ -28,7 +28,9 @@ class Renderer
28
28
29
29
GLuint vertex_shader;
30
30
GLuint fragment_shader;
31
+ GLuint fragment_shader2;
31
32
GLuint program;
33
+ GLuint program2;
32
34
};
33
35
34
36
Renderer::Renderer ()
@@ -99,6 +101,14 @@ void Renderer::init()
99
101
" FragColor = vec4(0.5, 0.5, 0.5, 1.0);\n "
100
102
" }\n " ;
101
103
104
+ const char * fragment_shader_text2 =
105
+ " #version 330 core\n "
106
+ " out vec4 FragColor;"
107
+ " void main()\n "
108
+ " {\n "
109
+ " FragColor = vec4(1, 0.5, 0.5, 1.0);\n "
110
+ " }\n " ;
111
+
102
112
vertex_shader = glCreateShader (GL_VERTEX_SHADER);
103
113
glShaderSource (vertex_shader, 1 , &vertex_shader_text, NULL );
104
114
glCompileShader (vertex_shader);
@@ -131,15 +141,38 @@ void Renderer::init()
131
141
std::cout << " ERROR::SHADER::LINK_PROJGRAM_FAILED\n " << infoLog << std::endl;
132
142
}
133
143
144
+ // 第二份材质
145
+ fragment_shader2 = glCreateShader (GL_FRAGMENT_SHADER);
146
+ glShaderSource (fragment_shader2, 1 , &fragment_shader_text2, NULL );
147
+ glCompileShader (fragment_shader2);
148
+ glGetShaderiv (fragment_shader2, GL_COMPILE_STATUS, &success);
149
+ if (!success)
150
+ {
151
+ glGetShaderInfoLog (fragment_shader2, 512 , NULL , infoLog);
152
+ std::cout << " ERROR::SHADER::FRAGMENT2::COMPILATION_FAILED\n " << infoLog << std::endl;
153
+ }
154
+
155
+ program2 = glCreateProgram ();
156
+ glAttachShader (program2, vertex_shader);
157
+ glAttachShader (program2, fragment_shader2);
158
+ glLinkProgram (program2);
159
+ glGetProgramiv (program2, GL_LINK_STATUS, &success);
160
+ if (!success) {
161
+ glGetProgramInfoLog (program2, 512 , NULL , infoLog);
162
+ std::cout << " ERROR::SHADER::LINK_PROJGRAM2_FAILED\n " << infoLog << std::endl;
163
+ }
164
+
134
165
glDeleteShader (vertex_shader);
135
166
glDeleteShader (fragment_shader);
167
+ glDeleteShader (fragment_shader2);
136
168
}
137
169
138
170
void Renderer::render ()
139
171
{
140
172
glUseProgram (program);
141
173
glBindVertexArray (VAO);
142
174
glDrawArrays (GL_TRIANGLES, 0 , 3 );
175
+ glUseProgram (program2);
143
176
glBindVertexArray (VAO2);
144
177
glDrawArrays (GL_TRIANGLES, 0 , 3 );
145
178
0 commit comments