char filepath[strlen(textures_path) + 1 + strlen(texture) + 1];
sprintf(filepath, "%s/%s", textures_path, texture);
- Texture *texture = texture_load_cubemap(filepath);
+ Texture *texture = texture_load_cubemap(filepath, false);
model_node_add_mesh(node, &(ModelMesh) {
.mesh = cube,
skybox_loc_VP = glGetUniformLocation(skybox_prog, "VP"); GL_DEBUG
skybox_loc_daylight = glGetUniformLocation(skybox_prog, "daylight"); GL_DEBUG
- skybox_texture_day = texture_load_cubemap(RESSOURCE_PATH "textures/skybox/day")->txo;
- skybox_texture_night = texture_load_cubemap(RESSOURCE_PATH "textures/skybox/night")->txo;
+ skybox_texture_day = texture_load_cubemap(RESSOURCE_PATH "textures/skybox/day", true)->txo;
+ skybox_texture_night = texture_load_cubemap(RESSOURCE_PATH "textures/skybox/night", true)->txo;
skybox_mesh.data = skybox_vertices;
mesh_upload(&skybox_mesh);
return lcm;
}
-Texture *texture_load_cubemap(char *path)
+Texture *texture_load_cubemap(char *path, bool bilinear_filter)
{
Texture *texture;
if (lookup_texture(path, &texture))
stbi_image_free(data);
}
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GL_DEBUG
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GL_DEBUG
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, bilinear_filter ? GL_LINEAR : GL_NEAREST); GL_DEBUG
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, bilinear_filter ? GL_LINEAR : GL_NEAREST); GL_DEBUG
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); GL_DEBUG
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GL_DEBUG
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); GL_DEBUG
} Texture;
Texture *texture_load(char *path, bool mipmap);
-Texture *texture_load_cubemap(char *path);
+Texture *texture_load_cubemap(char *path, bool linear_filter);
void texture_upload(Texture *texture, unsigned char *data, GLenum format, bool mipmap);
void texture_destroy(Texture *texture);