mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-29 15:32:54 +00:00
- got rid of VAO's. they have no impact on performance and are a general nuisance if some render paths cannot use them.
- cleaned up gl_interface and removed gl.compatibility.
This commit is contained in:
parent
f066457a48
commit
3b1500438d
11 changed files with 82 additions and 56 deletions
|
@ -57,12 +57,10 @@
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FVertexBuffer::FVertexBuffer()
|
FVertexBuffer::FVertexBuffer(bool wantbuffer)
|
||||||
{
|
{
|
||||||
vao_id = vbo_id = 0;
|
vbo_id = 0;
|
||||||
glGenBuffers(1, &vbo_id);
|
if (wantbuffer) glGenBuffers(1, &vbo_id);
|
||||||
glGenVertexArrays(1, &vao_id);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FVertexBuffer::~FVertexBuffer()
|
FVertexBuffer::~FVertexBuffer()
|
||||||
|
@ -71,15 +69,6 @@ FVertexBuffer::~FVertexBuffer()
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &vbo_id);
|
glDeleteBuffers(1, &vbo_id);
|
||||||
}
|
}
|
||||||
if (vao_id != 0)
|
|
||||||
{
|
|
||||||
glDeleteVertexArrays(1, &vao_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FVertexBuffer::BindVBO()
|
|
||||||
{
|
|
||||||
glBindVertexArray(vao_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -89,7 +78,7 @@ void FVertexBuffer::BindVBO()
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FFlatVertexBuffer::FFlatVertexBuffer()
|
FFlatVertexBuffer::FFlatVertexBuffer()
|
||||||
: FVertexBuffer()
|
: FVertexBuffer(!!(gl.flags & RFL_BUFFER_STORAGE))
|
||||||
{
|
{
|
||||||
if (gl.flags & RFL_BUFFER_STORAGE)
|
if (gl.flags & RFL_BUFFER_STORAGE)
|
||||||
{
|
{
|
||||||
|
@ -97,17 +86,10 @@ FFlatVertexBuffer::FFlatVertexBuffer()
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glBufferStorage(GL_ARRAY_BUFFER, bytesize, NULL, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
glBufferStorage(GL_ARRAY_BUFFER, bytesize, NULL, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
||||||
map = (FFlatVertex*)glMapBufferRange(GL_ARRAY_BUFFER, 0, bytesize, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
map = (FFlatVertex*)glMapBufferRange(GL_ARRAY_BUFFER, 0, bytesize, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
||||||
|
|
||||||
glBindVertexArray(vao_id);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
|
||||||
glVertexAttribPointer(VATTR_VERTEX, 3,GL_FLOAT, false, sizeof(FFlatVertex), &VTO->x);
|
|
||||||
glVertexAttribPointer(VATTR_TEXCOORD, 2,GL_FLOAT, false, sizeof(FFlatVertex), &VTO->u);
|
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
|
||||||
glBindVertexArray(0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// The fallback path uses immediate mode rendering and does not set up an actual vertex buffer
|
||||||
vbo_shadowdata.Reserve(BUFFER_SIZE);
|
vbo_shadowdata.Reserve(BUFFER_SIZE);
|
||||||
map = &vbo_shadowdata[0];
|
map = &vbo_shadowdata[0];
|
||||||
}
|
}
|
||||||
|
@ -124,6 +106,26 @@ FFlatVertexBuffer::~FFlatVertexBuffer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FFlatVertexBuffer::BindVBO()
|
||||||
|
{
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
|
if (vbo_id != 0) // set this up only if there is an actual buffer.
|
||||||
|
{
|
||||||
|
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->x);
|
||||||
|
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->u);
|
||||||
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glDisableVertexAttribArray(VATTR_VERTEX);
|
||||||
|
glDisableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
}
|
||||||
|
glDisableVertexAttribArray(VATTR_COLOR);
|
||||||
|
glDisableVertexAttribArray(VATTR_VERTEX2);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// immediate mode fallback for drivers without GL_ARB_buffer_storage
|
// immediate mode fallback for drivers without GL_ARB_buffer_storage
|
||||||
|
@ -138,7 +140,7 @@ void FFlatVertexBuffer::ImmRenderBuffer(unsigned int primtype, unsigned int offs
|
||||||
// this will only get called if we can't acquire a persistently mapped buffer.
|
// this will only get called if we can't acquire a persistently mapped buffer.
|
||||||
#ifndef CORE_PROFILE
|
#ifndef CORE_PROFILE
|
||||||
glBegin(primtype);
|
glBegin(primtype);
|
||||||
if (gl.compatibility > CMPT_GL2)
|
if (gl.glslversion > 0)
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < count; i++)
|
for (unsigned int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,12 +15,11 @@ class FVertexBuffer
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
unsigned int vbo_id;
|
unsigned int vbo_id;
|
||||||
unsigned int vao_id;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FVertexBuffer();
|
FVertexBuffer(bool wantbuffer = true);
|
||||||
virtual ~FVertexBuffer();
|
virtual ~FVertexBuffer();
|
||||||
void BindVBO();
|
virtual void BindVBO() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFlatVertex
|
struct FFlatVertex
|
||||||
|
@ -37,6 +36,7 @@ struct FFlatVertex
|
||||||
u = uu;
|
u = uu;
|
||||||
v = vv;
|
v = vv;
|
||||||
}
|
}
|
||||||
|
void BindVBO();
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VTO ((FFlatVertex*)NULL)
|
#define VTO ((FFlatVertex*)NULL)
|
||||||
|
@ -62,6 +62,8 @@ public:
|
||||||
FFlatVertexBuffer();
|
FFlatVertexBuffer();
|
||||||
~FFlatVertexBuffer();
|
~FFlatVertexBuffer();
|
||||||
|
|
||||||
|
void BindVBO();
|
||||||
|
|
||||||
void CreateVBO();
|
void CreateVBO();
|
||||||
void CheckUpdate(sector_t *sector);
|
void CheckUpdate(sector_t *sector);
|
||||||
|
|
||||||
|
@ -165,6 +167,7 @@ public:
|
||||||
FSkyVertexBuffer();
|
FSkyVertexBuffer();
|
||||||
virtual ~FSkyVertexBuffer();
|
virtual ~FSkyVertexBuffer();
|
||||||
void RenderDome(FMaterial *tex, int mode);
|
void RenderDome(FMaterial *tex, int mode);
|
||||||
|
void BindVBO();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -208,6 +211,7 @@ public:
|
||||||
void UnlockIndexBuffer();
|
void UnlockIndexBuffer();
|
||||||
|
|
||||||
unsigned int SetupFrame(unsigned int frame1, unsigned int frame2);
|
unsigned int SetupFrame(unsigned int frame1, unsigned int frame2);
|
||||||
|
void BindVBO();
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VMO ((FModelVertex*)NULL)
|
#define VMO ((FModelVertex*)NULL)
|
||||||
|
|
|
@ -117,20 +117,27 @@ void gl_FlushModels()
|
||||||
|
|
||||||
FModelVertexBuffer::FModelVertexBuffer(bool needindex)
|
FModelVertexBuffer::FModelVertexBuffer(bool needindex)
|
||||||
{
|
{
|
||||||
glBindVertexArray(vao_id);
|
|
||||||
|
|
||||||
ibo_id = 0;
|
ibo_id = 0;
|
||||||
if (needindex)
|
if (needindex)
|
||||||
{
|
{
|
||||||
glGenBuffers(1, &ibo_id);
|
glGenBuffers(1, &ibo_id);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
void FModelVertexBuffer::BindVBO()
|
||||||
|
{
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX2);
|
glEnableVertexAttribArray(VATTR_VERTEX2);
|
||||||
glBindVertexArray(0);
|
glDisableVertexAttribArray(VATTR_COLOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
|
@ -103,6 +103,14 @@ void gl_FlushModels();
|
||||||
|
|
||||||
void FGLRenderer::Initialize()
|
void FGLRenderer::Initialize()
|
||||||
{
|
{
|
||||||
|
// Only needed for the core profile, because someone decided it was a good idea to remove the default VAO.
|
||||||
|
if (gl.version >= 4.0)
|
||||||
|
{
|
||||||
|
glGenVertexArrays(1, &mVAOID);
|
||||||
|
glBindVertexArray(mVAOID);
|
||||||
|
}
|
||||||
|
else mVAOID = 0;
|
||||||
|
|
||||||
glpart2 = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/glpart2.png"), FTexture::TEX_MiscPatch);
|
glpart2 = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/glpart2.png"), FTexture::TEX_MiscPatch);
|
||||||
glpart = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/glpart.png"), FTexture::TEX_MiscPatch);
|
glpart = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/glpart.png"), FTexture::TEX_MiscPatch);
|
||||||
mirrortexture = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/mirror.png"), FTexture::TEX_MiscPatch);
|
mirrortexture = FTexture::CreateTexture(Wads.GetNumForFullName("glstuff/mirror.png"), FTexture::TEX_MiscPatch);
|
||||||
|
@ -113,6 +121,7 @@ void FGLRenderer::Initialize()
|
||||||
else mLights = NULL;
|
else mLights = NULL;
|
||||||
gl_RenderState.SetVertexBuffer(mVBO);
|
gl_RenderState.SetVertexBuffer(mVBO);
|
||||||
mFBID = 0;
|
mFBID = 0;
|
||||||
|
|
||||||
SetupLevel();
|
SetupLevel();
|
||||||
mShaderManager = new FShaderManager;
|
mShaderManager = new FShaderManager;
|
||||||
mSamplerManager = new FSamplerManager;
|
mSamplerManager = new FSamplerManager;
|
||||||
|
@ -133,6 +142,12 @@ FGLRenderer::~FGLRenderer()
|
||||||
if (glpart) delete glpart;
|
if (glpart) delete glpart;
|
||||||
if (mirrortexture) delete mirrortexture;
|
if (mirrortexture) delete mirrortexture;
|
||||||
if (mFBID != 0) glDeleteFramebuffers(1, &mFBID);
|
if (mFBID != 0) glDeleteFramebuffers(1, &mFBID);
|
||||||
|
if (mVAOID != 0)
|
||||||
|
{
|
||||||
|
glBindVertexArray(0);
|
||||||
|
glDeleteVertexArrays(1, &mVAOID);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
|
@ -69,6 +69,7 @@ public:
|
||||||
FSamplerManager *mSamplerManager;
|
FSamplerManager *mSamplerManager;
|
||||||
int gl_spriteindex;
|
int gl_spriteindex;
|
||||||
unsigned int mFBID;
|
unsigned int mFBID;
|
||||||
|
unsigned int mVAOID;
|
||||||
|
|
||||||
FTexture *glpart2;
|
FTexture *glpart2;
|
||||||
FTexture *glpart;
|
FTexture *glpart;
|
||||||
|
|
|
@ -279,7 +279,7 @@ void FRenderState::Apply()
|
||||||
else mVertexBuffer->BindVBO();
|
else mVertexBuffer->BindVBO();
|
||||||
mCurrentVertexBuffer = mVertexBuffer;
|
mCurrentVertexBuffer = mVertexBuffer;
|
||||||
}
|
}
|
||||||
if (gl.compatibility > CMPT_GL2)
|
if (gl.glslversion > 0)
|
||||||
{
|
{
|
||||||
ApplyShader();
|
ApplyShader();
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,8 +78,14 @@ extern int skyfog;
|
||||||
FSkyVertexBuffer::FSkyVertexBuffer()
|
FSkyVertexBuffer::FSkyVertexBuffer()
|
||||||
{
|
{
|
||||||
CreateDome();
|
CreateDome();
|
||||||
|
}
|
||||||
|
|
||||||
glBindVertexArray(vao_id);
|
FSkyVertexBuffer::~FSkyVertexBuffer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void FSkyVertexBuffer::BindVBO()
|
||||||
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->x);
|
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->x);
|
||||||
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->u);
|
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->u);
|
||||||
|
@ -87,12 +93,7 @@ FSkyVertexBuffer::FSkyVertexBuffer()
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
glEnableVertexAttribArray(VATTR_COLOR);
|
glEnableVertexAttribArray(VATTR_COLOR);
|
||||||
glBindVertexArray(0);
|
glDisableVertexAttribArray(VATTR_VERTEX2);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
FSkyVertexBuffer::~FSkyVertexBuffer()
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
@ -129,7 +129,7 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char *
|
||||||
|
|
||||||
if (gl.lightmethod == LM_SOFTWARE)
|
if (gl.lightmethod == LM_SOFTWARE)
|
||||||
{
|
{
|
||||||
if (gl.compatibility >= CMPT_GL3)
|
if (gl.glslversion >= 1.3)
|
||||||
{
|
{
|
||||||
vp_comb = "#version 130\n";
|
vp_comb = "#version 130\n";
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gl.compatibility < CMPT_GL3)
|
if (gl.glslversion < 1.3)
|
||||||
{
|
{
|
||||||
PatchVertShader(vp_comb);
|
PatchVertShader(vp_comb);
|
||||||
PatchFragShader(fp_comb);
|
PatchFragShader(fp_comb);
|
||||||
|
@ -439,7 +439,7 @@ static const FEffectShader effectshaders[]=
|
||||||
|
|
||||||
FShaderManager::FShaderManager()
|
FShaderManager::FShaderManager()
|
||||||
{
|
{
|
||||||
if (gl.compatibility > CMPT_GL2) CompileShaders();
|
if (gl.glslversion > 0) CompileShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -450,7 +450,7 @@ FShaderManager::FShaderManager()
|
||||||
|
|
||||||
FShaderManager::~FShaderManager()
|
FShaderManager::~FShaderManager()
|
||||||
{
|
{
|
||||||
if (gl.compatibility > CMPT_GL2) Clean();
|
if (gl.glslversion > 0) Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -592,7 +592,7 @@ EXTERN_CVAR(Int, gl_fuzztype)
|
||||||
|
|
||||||
void FShaderManager::ApplyMatrices(VSMatrix *proj, VSMatrix *view)
|
void FShaderManager::ApplyMatrices(VSMatrix *proj, VSMatrix *view)
|
||||||
{
|
{
|
||||||
if (gl.compatibility == CMPT_GL2)
|
if (gl.glslversion == 0)
|
||||||
{
|
{
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadMatrixf(proj->get());
|
glLoadMatrixf(proj->get());
|
||||||
|
|
|
@ -158,25 +158,24 @@ void gl_LoadExtensions()
|
||||||
if (CheckExtension("GL_ARB_texture_compression")) gl.flags |= RFL_TEXTURE_COMPRESSION;
|
if (CheckExtension("GL_ARB_texture_compression")) gl.flags |= RFL_TEXTURE_COMPRESSION;
|
||||||
if (CheckExtension("GL_EXT_texture_compression_s3tc")) gl.flags |= RFL_TEXTURE_COMPRESSION_S3TC;
|
if (CheckExtension("GL_EXT_texture_compression_s3tc")) gl.flags |= RFL_TEXTURE_COMPRESSION_S3TC;
|
||||||
|
|
||||||
if (Args->CheckParm("-noshader"))
|
if (Args->CheckParm("-noshader") || gl.glslversion < 1.2f)
|
||||||
{
|
{
|
||||||
gl.version = 2.1f;
|
gl.version = 2.11f;
|
||||||
gl.compatibility = CMPT_GL2; // force the low end path
|
gl.glslversion = 0;
|
||||||
}
|
}
|
||||||
else if (gl.version < 3.0f)
|
else if (gl.version < 3.0f)
|
||||||
{
|
{
|
||||||
if (CheckExtension("GL_NV_GPU_shader4") || CheckExtension("GL_EXT_GPU_shader4")) gl.compatibility = CMPT_GL2_SHADER; // for pre-3.0 drivers that support capable hardware. Needed for Apple.
|
if (CheckExtension("GL_NV_GPU_shader4") || CheckExtension("GL_EXT_GPU_shader4")) gl.glslversion = 1.21f; // for pre-3.0 drivers that support capable hardware. Needed for Apple.
|
||||||
else gl.compatibility = CMPT_GL2;
|
else gl.glslversion = 0;
|
||||||
}
|
}
|
||||||
else if (gl.version < 4.f)
|
else if (gl.version < 4.f)
|
||||||
{
|
{
|
||||||
if (strstr(gl.vendorstring, "ATI Tech"))
|
if (strstr(gl.vendorstring, "ATI Tech"))
|
||||||
{
|
{
|
||||||
gl.version = 2.1f;
|
gl.version = 2.11f;
|
||||||
gl.compatibility = CMPT_GL2_SHADER; // most of these drivers are irreperably broken with GLSL 1.3 and higher.
|
gl.glslversion = 1.21f;
|
||||||
gl.lightmethod = LM_SOFTWARE; // do not use uniform buffers with the fallback shader, it may cause problems.
|
gl.lightmethod = LM_SOFTWARE; // do not use uniform buffers with the fallback shader, it may cause problems.
|
||||||
}
|
}
|
||||||
else gl.compatibility = CMPT_GL3;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -194,13 +193,11 @@ void gl_LoadExtensions()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gl.flags |= RFL_BUFFER_STORAGE;
|
gl.flags |= RFL_BUFFER_STORAGE;
|
||||||
gl.compatibility = CMPT_GL4;
|
|
||||||
gl.lightmethod = LM_DIRECT;
|
gl.lightmethod = LM_DIRECT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gl.version = 3.3f;
|
gl.version = 3.3f;
|
||||||
gl.compatibility = CMPT_GL3;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ struct RenderContext
|
||||||
unsigned int maxuniformblock;
|
unsigned int maxuniformblock;
|
||||||
unsigned int uniformblockalignment;
|
unsigned int uniformblockalignment;
|
||||||
int lightmethod;
|
int lightmethod;
|
||||||
int compatibility;
|
|
||||||
float version;
|
float version;
|
||||||
float glslversion;
|
float glslversion;
|
||||||
int max_texturesize;
|
int max_texturesize;
|
||||||
|
|
|
@ -264,7 +264,7 @@ unsigned char *gl_CreateUpsampledTextureBuffer ( const FTexture *inputTexture, u
|
||||||
return inputBuffer;
|
return inputBuffer;
|
||||||
|
|
||||||
// [BB] Don't upsample non-shader handled warped textures. Needs too much memory and time
|
// [BB] Don't upsample non-shader handled warped textures. Needs too much memory and time
|
||||||
if (gl.compatibility == CMPT_GL2 && inputTexture->bWarped)
|
if (gl.glslversion == 0 && inputTexture->bWarped)
|
||||||
return inputBuffer;
|
return inputBuffer;
|
||||||
|
|
||||||
// already scaled?
|
// already scaled?
|
||||||
|
|
Loading…
Reference in a new issue