예제 #1
0
void texture_set_properties(texture_t texture, struct texture_properties* properties)
{
	glBindTexture(GL_TEXTURE_2D, texture->id);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, texture_wrap_opengl(properties->wrap_s));
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texture_wrap_opengl(properties->wrap_t));
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texture_filter_opengl(properties->filter_min));
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texture_filter_opengl(properties->filter_max));

	GLenum err = glGetError();
	if (err != GL_NO_ERROR)
		texture_error("glTexParameteri failed: %s\n", err);
}
예제 #2
0
texture_t texture_create_rgba(int width, int height)
{
	struct texture* texture = malloc(sizeof(struct texture));

	glGenTextures(1, &texture->id);
	glBindTexture(GL_TEXTURE_2D, texture->id);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

	GLenum err = glGetError();
	if (err != GL_NO_ERROR)
		texture_error("glTexImage2D failed: %s\n", err);

	texture_properties_set_default(texture);

	return texture;
}
예제 #3
0
파일: texture.c 프로젝트: phaninho/wolf3d
void	init_texture(t_env *e)
{
	int		i;
printf("llaa init texture\n");
	e->tex = malloc(sizeof(t_image) * 63);
	e->file = malloc(sizeof(char *) * 63);
	init_texture_parser1(e);
	init_texture_parser2(e);
	init_texture_parser3(e);
	i = 0;
	while (++i < 63)
	{
		e->tex[i].i = mlx_xpm_file_to_image(e->mlx, e->file[i],
				&e->tex[i].width, &e->tex[i].height);
		if (e->tex[i].i == NULL)
			texture_error();
		e->tex[i].data = mlx_get_data_addr(e->tex[i].i,
				&e->tex[i].bpp, &e->tex[i].szline,
				&e->tex[i].endian);
	}
}
예제 #4
0
void framebuffer_attach_texture(framebuffer_t framebuffer, texture_t texture, enum framebuffer_target target)
{
	GLint gl_target;

	switch (target)
	{
	case FRAMEBUFFER_TARGET_COLOR:
		gl_target = GL_COLOR_ATTACHMENT0;
		break;
	case FRAMEBUFFER_TARGET_DEPTH:
		gl_target = GL_DEPTH_ATTACHMENT;
		break;
	case FRAMEBUFFER_TARGET_STENCIL:
		gl_target = GL_STENCIL_ATTACHMENT;
		break;
	}

	glFramebufferTexture2D(GL_FRAMEBUFFER, gl_target, GL_TEXTURE_2D, texture->id, 0);

	GLenum err = glGetError();
	if (err != GL_NO_ERROR)
		texture_error("glFramebufferTexture2D failed: %s\n", err);
}