summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSmileTheory <SmileTheory@gmail.com>2016-02-17 19:49:21 -0800
committerTim Angus <tim@ngus.net>2016-04-07 11:54:14 +0100
commit3043117bd95828ddc350a296f93489869474c4ea (patch)
tree27a2a749bceeaaa04443d7a27d36ce09ea30a327
parent93a760743f4949330e301ca6729c1d88ba8484c1 (diff)
OpenGL2: Fix some GL errors and no sun shadows on older OpenGLs.
-rw-r--r--src/renderergl2/tr_dsa.c2
-rw-r--r--src/renderergl2/tr_fbo.c8
-rw-r--r--src/renderergl2/tr_image.c4
3 files changed, 8 insertions, 6 deletions
diff --git a/src/renderergl2/tr_dsa.c b/src/renderergl2/tr_dsa.c
index a766263a..9cd481bd 100644
--- a/src/renderergl2/tr_dsa.c
+++ b/src/renderergl2/tr_dsa.c
@@ -210,7 +210,7 @@ void GL_BindNullFramebuffers()
qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glDsaState.drawFramebuffer = glDsaState.readFramebuffer = 0;
qglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
- glDsaState.readFramebuffer = 0;
+ glDsaState.renderbuffer = 0;
}
void GL_BindFramebuffer(GLenum target, GLuint framebuffer)
diff --git a/src/renderergl2/tr_fbo.c b/src/renderergl2/tr_fbo.c
index 59b17032..12293766 100644
--- a/src/renderergl2/tr_fbo.c
+++ b/src/renderergl2/tr_fbo.c
@@ -251,7 +251,7 @@ FBO_Init
void FBO_Init(void)
{
int i;
- int hdrFormat, multisample;
+ int hdrFormat, multisample = 0;
ri.Printf(PRINT_ALL, "------- FBO_Init -------\n");
@@ -268,7 +268,8 @@ void FBO_Init(void)
if (r_hdr->integer && glRefConfig.framebufferObject && glRefConfig.textureFloat)
hdrFormat = GL_RGBA16F_ARB;
- qglGetIntegerv(GL_MAX_SAMPLES_EXT, &multisample);
+ if (glRefConfig.framebufferMultisample)
+ qglGetIntegerv(GL_MAX_SAMPLES_EXT, &multisample);
if (r_ext_framebuffer_multisample->integer < multisample)
multisample = r_ext_framebuffer_multisample->integer;
@@ -334,6 +335,9 @@ void FBO_Init(void)
for ( i = 0; i < 4; i++)
{
tr.sunShadowFbo[i] = FBO_Create("_sunshadowmap", tr.sunShadowDepthImage[i]->width, tr.sunShadowDepthImage[i]->height);
+ // FIXME: this next line wastes 16mb with 4x1024x1024 sun shadow maps, skip if OpenGL 4.3+ or ARB_framebuffer_no_attachments
+ // This at least gets sun shadows working on older GPUs (Intel)
+ FBO_CreateBuffer(tr.sunShadowFbo[i], GL_RGBA8, 0, 0);
FBO_AttachImage(tr.sunShadowFbo[i], tr.sunShadowDepthImage[i], GL_DEPTH_ATTACHMENT_EXT, 0);
R_CheckFBO(tr.sunShadowFbo[i]);
}
diff --git a/src/renderergl2/tr_image.c b/src/renderergl2/tr_image.c
index 47843fe2..d567193b 100644
--- a/src/renderergl2/tr_image.c
+++ b/src/renderergl2/tr_image.c
@@ -116,7 +116,7 @@ void GL_TextureMode( const char *string ) {
// change all the existing mipmap texture objects
for ( i = 0 ; i < tr.numImages ; i++ ) {
glt = tr.images[ i ];
- if ( glt->flags & IMGFLAG_MIPMAP ) {
+ if ( glt->flags & IMGFLAG_MIPMAP && !(glt->flags & IMGFLAG_CUBEMAP)) {
qglTextureParameterf(glt->texnum, GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min);
qglTextureParameterf(glt->texnum, GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
}
@@ -2818,8 +2818,6 @@ void R_CreateBuiltinImages( void ) {
for ( x = 0; x < 4; x++)
{
tr.sunShadowDepthImage[x] = R_CreateImage(va("*sunshadowdepth%i", x), NULL, r_shadowMapSize->integer, r_shadowMapSize->integer, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | IMGFLAG_CLAMPTOEDGE, GL_DEPTH_COMPONENT24_ARB);
- qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
- qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
}