summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorUneven Prankster <[email protected]>2023-01-19 16:53:30 -0300
committerGitHub <[email protected]>2023-01-19 20:53:30 +0100
commit76468bb8d8e4e588e1248df3a0db63f44605a24d (patch)
tree0dd438af9ca1d78fb092462bca0c412eeb6b84df /src
parent2a2f2b20b8d918f9597334efad067683ae2328b0 (diff)
downloadraylib-76468bb8d8e4e588e1248df3a0db63f44605a24d.tar.gz
raylib-76468bb8d8e4e588e1248df3a0db63f44605a24d.zip
Add rlCubemapParameters to rlgl.h (#2862)
Co-authored-by: Uneven Prankster <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/rlgl.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/rlgl.h b/src/rlgl.h
index fbf70051..3b055b23 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -596,6 +596,7 @@ RLAPI void rlDisableTexture(void); // Disable texture
RLAPI void rlEnableTextureCubemap(unsigned int id); // Enable texture cubemap
RLAPI void rlDisableTextureCubemap(void); // Disable texture cubemap
RLAPI void rlTextureParameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap)
+RLAPI void rlCubemapParameters(unsigned int id, int param, int value); // Set cubemap parameters (filter, wrap)
// Shader state
RLAPI void rlEnableShader(unsigned int id); // Enable shader program
@@ -1624,6 +1625,54 @@ void rlTextureParameters(unsigned int id, int param, int value)
glBindTexture(GL_TEXTURE_2D, 0);
}
+// Set cubemap parameters (wrap mode/filter mode)
+void rlCubemapParameters(unsigned int id, int param, int value)
+{
+ glBindTexture(GL_TEXTURE_CUBE_MAP, id);
+
+#if !defined(GRAPHICS_API_OPENGL_11)
+ // Reset anisotropy filter, in case it was set
+ glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f);
+#endif
+
+ switch (param)
+ {
+ case RL_TEXTURE_WRAP_S:
+ case RL_TEXTURE_WRAP_T:
+ {
+ if (value == RL_TEXTURE_WRAP_MIRROR_CLAMP)
+ {
+#if !defined(GRAPHICS_API_OPENGL_11)
+ if (RLGL.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value);
+ else TRACELOG(RL_LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)");
+#endif
+ }
+ else glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value);
+
+ } break;
+ case RL_TEXTURE_MAG_FILTER:
+ case RL_TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); break;
+ case RL_TEXTURE_FILTER_ANISOTROPIC:
+ {
+#if !defined(GRAPHICS_API_OPENGL_11)
+ if (value <= RLGL.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value);
+ else if (RLGL.ExtSupported.maxAnisotropyLevel > 0.0f)
+ {
+ TRACELOG(RL_LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)RLGL.ExtSupported.maxAnisotropyLevel);
+ glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value);
+ }
+ else TRACELOG(RL_LOG_WARNING, "GL: Anisotropic filtering not supported");
+#endif
+ } break;
+#if defined(GRAPHICS_API_OPENGL_33)
+ case RL_TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_LOD_BIAS, value/100.0f);
+#endif
+ default: break;
+ }
+
+ glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
+}
+
// Enable shader program
void rlEnableShader(unsigned int id)
{