Skip to content

Commit 44ad88e

Browse files
committed
exercise,add another material
1 parent d70684c commit 44ad88e

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

include/renderer.h

+33
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ class Renderer
2828

2929
GLuint vertex_shader;
3030
GLuint fragment_shader;
31+
GLuint fragment_shader2;
3132
GLuint program;
33+
GLuint program2;
3234
};
3335

3436
Renderer::Renderer()
@@ -99,6 +101,14 @@ void Renderer::init()
99101
" FragColor = vec4(0.5, 0.5, 0.5, 1.0);\n"
100102
"}\n";
101103

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+
102112
vertex_shader = glCreateShader(GL_VERTEX_SHADER);
103113
glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL);
104114
glCompileShader(vertex_shader);
@@ -131,15 +141,38 @@ void Renderer::init()
131141
std::cout << "ERROR::SHADER::LINK_PROJGRAM_FAILED\n" << infoLog << std::endl;
132142
}
133143

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+
134165
glDeleteShader(vertex_shader);
135166
glDeleteShader(fragment_shader);
167+
glDeleteShader(fragment_shader2);
136168
}
137169

138170
void Renderer::render()
139171
{
140172
glUseProgram(program);
141173
glBindVertexArray(VAO);
142174
glDrawArrays(GL_TRIANGLES, 0, 3);
175+
glUseProgram(program2);
143176
glBindVertexArray(VAO2);
144177
glDrawArrays(GL_TRIANGLES, 0, 3);
145178

main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ int main(void)
6363
renderer->init();
6464

6565
// uncomment this call to draw in wireframe polygons.
66-
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
66+
// glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
6767

6868
/* Loop until the user closes the window */
6969
while (!glfwWindowShouldClose(window))

0 commit comments

Comments
 (0)