9 string read_file(const string &filename)
11 const string full_pathname = filename;
13 FILE *fp = fopen(full_pathname.c_str(), "r");
15 perror(full_pathname.c_str());
19 int ret = fseek(fp, 0, SEEK_END);
21 perror("fseek(SEEK_END)");
27 ret = fseek(fp, 0, SEEK_SET);
29 perror("fseek(SEEK_SET)");
35 ret = fread(&str[0], size, 1, fp);
41 fprintf(stderr, "Short read when trying to read %d bytes from %s\n",
42 size, full_pathname.c_str());
50 GLuint compile_shader(const string &shader_src, GLenum type)
52 GLuint obj = glCreateShader(type);
53 const GLchar* source[] = { shader_src.data() };
54 const GLint length[] = { (GLint)shader_src.size() };
55 glShaderSource(obj, 1, source, length);
58 GLchar info_log[4096];
59 GLsizei log_length = sizeof(info_log) - 1;
60 glGetShaderInfoLog(obj, log_length, &log_length, info_log);
61 info_log[log_length] = 0;
62 if (strlen(info_log) > 0) {
63 fprintf(stderr, "Shader compile log: %s\n", info_log);
67 glGetShaderiv(obj, GL_COMPILE_STATUS, &status);
68 if (status == GL_FALSE) {
69 fprintf(stderr, "Failed to compile shader: %s\n", shader_src.c_str());