OLD | NEW |
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <fcntl.h> | 5 #include <fcntl.h> |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <string.h> | 7 #include <string.h> |
8 #include <sys/mman.h> | 8 #include <sys/mman.h> |
9 #include <unistd.h> | 9 #include <unistd.h> |
10 | 10 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 if (newline) | 158 if (newline) |
159 *newline = '\0'; | 159 *newline = '\0'; |
160 printf("# Log: %s\n", p); | 160 printf("# Log: %s\n", p); |
161 if (!newline) | 161 if (!newline) |
162 break; | 162 break; |
163 p = newline + 1; | 163 p = newline + 1; |
164 } | 164 } |
165 } | 165 } |
166 | 166 |
167 GLuint InitShaderProgram(const char *vertex_src, const char *fragment_src) { | 167 GLuint InitShaderProgram(const char *vertex_src, const char *fragment_src) { |
| 168 return InitShaderProgramWithHeader(NULL, vertex_src, fragment_src); |
| 169 } |
| 170 |
| 171 GLuint InitShaderProgramWithHeader(const char* header, |
| 172 const char* vertex_src, |
| 173 const char* fragment_src) { |
168 GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); | 174 GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); |
169 GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); | 175 GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); |
170 | 176 |
171 glShaderSource(vertex_shader, 1, &vertex_src, NULL); | 177 const char* header_and_body[2]; |
172 glShaderSource(fragment_shader, 1, &fragment_src, NULL); | 178 header_and_body[0] = header ? header : ""; |
| 179 header_and_body[1] = vertex_src; |
| 180 glShaderSource(vertex_shader, |
| 181 arraysize(header_and_body), header_and_body, NULL); |
| 182 header_and_body[1] = fragment_src; |
| 183 glShaderSource(fragment_shader, |
| 184 arraysize(header_and_body), header_and_body, NULL); |
173 | 185 |
174 glCompileShader(vertex_shader); | 186 glCompileShader(vertex_shader); |
175 print_info_log(vertex_shader); | 187 print_info_log(vertex_shader); |
176 glCompileShader(fragment_shader); | 188 glCompileShader(fragment_shader); |
177 print_info_log(fragment_shader); | 189 print_info_log(fragment_shader); |
178 | 190 |
179 GLuint program = glCreateProgram(); | 191 GLuint program = glCreateProgram(); |
180 glAttachShader(program, vertex_shader); | 192 glAttachShader(program, vertex_shader); |
181 glAttachShader(program, fragment_shader); | 193 glAttachShader(program, fragment_shader); |
182 glLinkProgram(program); | 194 glLinkProgram(program); |
183 print_info_log(program); | 195 print_info_log(program); |
184 glUseProgram(program); | 196 glUseProgram(program); |
185 | 197 |
186 glDeleteShader(vertex_shader); | 198 glDeleteShader(vertex_shader); |
187 glDeleteShader(fragment_shader); | 199 glDeleteShader(fragment_shader); |
188 | 200 |
189 return program; | 201 return program; |
190 } | 202 } |
191 | 203 |
192 } // namespace glbench | 204 } // namespace glbench |
OLD | NEW |