コード例 #1
0
ファイル: render.c プロジェクト: suzuren/ejoy2d
RID 
render_shader_create(struct render *R, struct shader_init_args *args) {
	struct shader * s = (struct shader *)array_alloc(&R->shader);
	if (s == NULL) {
		return 0;
	}
	s->glid = glCreateProgram();
	if (!compile_link(R, s, args->vs, args->fs)) {
		glDeleteProgram(s->glid);
		array_free(&R->shader, s);
		return 0;
	}

	s->texture_n = args->texture;
	int i;
	for (i=0;i<s->texture_n;i++) {
		s->texture_uniform[i] = glGetUniformLocation(s->glid, args->texture_uniform[i]);
	}

#ifdef VAO_ENABLE
	glGenVertexArrays(1, &s->glvao);
	for (i=0;i<MAX_VB_SLOT;i++) {
		s->vbslot[i] = 0;
	}
	s->ib = 0;
#endif

	CHECK_GL_ERROR

	return array_id(&R->shader, s);
}
コード例 #2
0
ファイル: render.c プロジェクト: lvshaco/ejoy2d
RID 
render_shader_create(struct render *R, struct shader_init_args *args) {
	struct shader * s = (struct shader *)array_alloc(&R->shader);
	if (s == NULL) {
		return 0;
	}
	s->glid = glCreateProgram();
	if (!compile_link(R, s, args->vs, args->fs)) {
		glDeleteProgram(s->glid);
		array_free(&R->shader, s);
		return 0;
	}

	s->texture_n = args->texture;
	int i;
	for (i=0;i<s->texture_n;i++) {
		s->texture_uniform[i] = glGetUniformLocation(s->glid, args->texture_uniform[i]);
	}

	CHECK_GL_ERROR

	return array_id(&R->shader, s);
}