mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-11-12 23:44:21 +00:00
OpenGL2: Fix some GL errors and no sun shadows on older OpenGLs.
This commit is contained in:
parent
0f6f2be155
commit
d11cfc88d5
3 changed files with 8 additions and 6 deletions
|
@ -210,7 +210,7 @@ void GL_BindNullFramebuffers()
|
||||||
qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||||
glDsaState.drawFramebuffer = glDsaState.readFramebuffer = 0;
|
glDsaState.drawFramebuffer = glDsaState.readFramebuffer = 0;
|
||||||
qglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
|
qglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
|
||||||
glDsaState.readFramebuffer = 0;
|
glDsaState.renderbuffer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GL_BindFramebuffer(GLenum target, GLuint framebuffer)
|
void GL_BindFramebuffer(GLenum target, GLuint framebuffer)
|
||||||
|
|
|
@ -251,7 +251,7 @@ FBO_Init
|
||||||
void FBO_Init(void)
|
void FBO_Init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int hdrFormat, multisample;
|
int hdrFormat, multisample = 0;
|
||||||
|
|
||||||
ri.Printf(PRINT_ALL, "------- FBO_Init -------\n");
|
ri.Printf(PRINT_ALL, "------- FBO_Init -------\n");
|
||||||
|
|
||||||
|
@ -268,7 +268,8 @@ void FBO_Init(void)
|
||||||
if (r_hdr->integer && glRefConfig.framebufferObject && glRefConfig.textureFloat)
|
if (r_hdr->integer && glRefConfig.framebufferObject && glRefConfig.textureFloat)
|
||||||
hdrFormat = GL_RGBA16F_ARB;
|
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)
|
if (r_ext_framebuffer_multisample->integer < multisample)
|
||||||
multisample = r_ext_framebuffer_multisample->integer;
|
multisample = r_ext_framebuffer_multisample->integer;
|
||||||
|
@ -334,6 +335,9 @@ void FBO_Init(void)
|
||||||
for ( i = 0; i < 4; i++)
|
for ( i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
tr.sunShadowFbo[i] = FBO_Create("_sunshadowmap", tr.sunShadowDepthImage[i]->width, tr.sunShadowDepthImage[i]->height);
|
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);
|
FBO_AttachImage(tr.sunShadowFbo[i], tr.sunShadowDepthImage[i], GL_DEPTH_ATTACHMENT_EXT, 0);
|
||||||
R_CheckFBO(tr.sunShadowFbo[i]);
|
R_CheckFBO(tr.sunShadowFbo[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@ void GL_TextureMode( const char *string ) {
|
||||||
// change all the existing mipmap texture objects
|
// change all the existing mipmap texture objects
|
||||||
for ( i = 0 ; i < tr.numImages ; i++ ) {
|
for ( i = 0 ; i < tr.numImages ; i++ ) {
|
||||||
glt = tr.images[ 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_MIN_FILTER, gl_filter_min);
|
||||||
qglTextureParameterf(glt->texnum, GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
|
qglTextureParameterf(glt->texnum, GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
|
||||||
}
|
}
|
||||||
|
@ -2817,8 +2817,6 @@ void R_CreateBuiltinImages( void ) {
|
||||||
for ( x = 0; x < 4; x++)
|
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);
|
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_MODE, GL_COMPARE_R_TO_TEXTURE);
|
||||||
qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
|
qglTextureParameterf(tr.sunShadowDepthImage[x]->texnum, GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue