Пример #1
0
void test_read_file(char *filename)
{
    long size;
    char *content;

    content = io_read_file(filename, &size);
    assert(content != NULL);
    assert(size != 0);
    free(content);
}
Пример #2
0
void test_write_file()
{
    long size;
    char *content;

    io_write_file(TEST_PATH, TEST_CONTENT);

    content = io_read_file(TEST_PATH, &size);
    assert(strncmp(TEST_CONTENT, content, size) == 0);
    free(content);

    remove(TEST_PATH);
}
Пример #3
0
int shader_load(GLenum type, const char *file, GLuint *id) {
	GLuint shader;
	GLint status, len;
	char *data;

	assert((type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER) && file != NULL && id != NULL);

	data = io_read_file(file);

	if (!data)
		return 0;

	shader = glCreateShader(type);
	glShaderSource(shader, 1, (const GLchar **)&data, NULL);
	glCompileShader(shader);

#ifdef DEBUG_GL
	fprintf(stderr, "Compile %s\n", file);
	fprintf(stderr, "Shader {\n%s\n}", *((const GLchar **)&data));
#endif // DEBUG_GL

	free(data);

	glGetShaderiv(shader, GL_COMPILE_STATUS, &status);

	if (status == GL_FALSE) {
		glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len);
		data = malloc(len);
		if (!data) {
			puts("Insufficient memory!");
			glDeleteShader(shader);
			return 0;
		}
		glGetShaderInfoLog(shader, len, NULL, data);
		fputs("*** SHADER COMPILATION FAILED ***\n", stderr);
		fprintf(stderr, "%s\n", data);
		free(data);
		return 0;
	}

	*id = shader;

	return 1;
}
Пример #4
0
wavefront_obj_t *wavefront_load(const char *file) {
	wavefront_obj_t *obj;
	char *data;

	data = io_read_file(file);

	if (!data)
		return NULL;

	obj = malloc(sizeof(wavefront_obj_t));

    memset(obj, 0, sizeof(wavefront_obj_t));

	if(wavefront_parse(obj, data)) {
		free(obj);
		return NULL;
	}

	free(data);

	return obj;
}