16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 14:39:18 +02:00

use sized gl formats, fix memory error

This commit is contained in:
milek7
2018-07-19 20:46:45 +02:00
parent 7a76ee0100
commit e500d8c9f7
3 changed files with 37 additions and 38 deletions

View File

@@ -336,7 +336,7 @@ int TSubModel::Load( cParser &parser, TModel3d *Model, /*int Pos,*/ bool dynamic
else
iFlags |= 0x10;
if (m_material != null_handle)
if (m_material > 0)
{
opengl_material &mat = GfxRenderer.Material(m_material);
@@ -1697,7 +1697,7 @@ void TSubModel::BinInit(TSubModel *s, float4x4 *m, std::vector<std::string> *t,
iFlags |= 0x10; // opaque
}
if (m_material != null_handle)
if (m_material > 0)
{
opengl_material &mat = GfxRenderer.Material(m_material);

View File

@@ -641,12 +641,12 @@ std::unordered_map<GLint, int> opengl_texture::precompressed_formats =
std::unordered_map<GLint, GLint> opengl_texture::drivercompressed_formats =
{
{ GL_SRGB_ALPHA, GL_COMPRESSED_SRGB_ALPHA },
{ GL_SRGB, GL_COMPRESSED_SRGB },
{ GL_RGBA, GL_COMPRESSED_RGBA },
{ GL_RGB, GL_COMPRESSED_RGB },
{ GL_RG, GL_COMPRESSED_RG },
{ GL_RED, GL_COMPRESSED_RED },
{ GL_SRGB8_ALPHA8, GL_COMPRESSED_SRGB_ALPHA },
{ GL_SRGB8, GL_COMPRESSED_SRGB },
{ GL_RGBA8, GL_COMPRESSED_RGBA },
{ GL_RGB8, GL_COMPRESSED_RGB },
{ GL_RG8, GL_COMPRESSED_RG },
{ GL_R8, GL_COMPRESSED_RED },
};
std::unordered_map<GLint, std::unordered_map<GLint, GLint>> opengl_texture::mapping =
@@ -670,30 +670,30 @@ std::unordered_map<GLint, std::unordered_map<GLint, GLint>> opengl_texture::mapp
{ GL_RGB, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT },
{ GL_RG, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT },
{ GL_RED, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT } } },
{ GL_RGBA, { { GL_SRGB_ALPHA, GL_SRGB_ALPHA },
{ GL_SRGB, GL_SRGB },
{ GL_RGBA, GL_RGBA },
{ GL_RGB, GL_RGB },
{ GL_RG, GL_RG },
{ GL_RED, GL_RED } } },
{ GL_RGB, { { GL_SRGB_ALPHA, GL_SRGB }, // bad
{ GL_SRGB, GL_SRGB },
{ GL_RGBA, GL_RGB }, // bad
{ GL_RGB, GL_RGB },
{ GL_RG, GL_RG },
{ GL_RED, GL_RED } } },
{ GL_RG, { { GL_SRGB_ALPHA, GL_SRGB }, // bad
{ GL_SRGB, GL_SRGB }, // bad
{ GL_RGBA, GL_RG }, // bad
{ GL_RGB, GL_RG }, // bad
{ GL_RG, GL_RG },
{ GL_RED, GL_RED } } },
{ GL_RED, { { GL_SRGB_ALPHA, GL_SRGB }, // bad
{ GL_SRGB, GL_SRGB }, // bad
{ GL_RGBA, GL_RED }, // bad
{ GL_RGB, GL_RED }, // bad
{ GL_RG, GL_RED }, // bad
{ GL_RED, GL_RED } } },
{ GL_RGBA, { { GL_SRGB_ALPHA, GL_SRGB8_ALPHA8 },
{ GL_SRGB, GL_SRGB8 },
{ GL_RGBA, GL_RGBA8 },
{ GL_RGB, GL_RGB8 },
{ GL_RG, GL_RG8 },
{ GL_RED, GL_R8 } } },
{ GL_RGB, { { GL_SRGB_ALPHA, GL_SRGB8 }, // bad
{ GL_SRGB, GL_SRGB8 },
{ GL_RGBA, GL_RGB8 }, // bad
{ GL_RGB, GL_RGB8 },
{ GL_RG, GL_RG8 },
{ GL_RED, GL_R8 } } },
{ GL_RG, { { GL_SRGB_ALPHA, GL_SRGB8 }, // bad
{ GL_SRGB, GL_SRGB8 }, // bad
{ GL_RGBA, GL_RG8 }, // bad
{ GL_RGB, GL_RG8 }, // bad
{ GL_RG, GL_RG8 },
{ GL_RED, GL_R8 } } },
{ GL_RED, { { GL_SRGB_ALPHA, GL_SRGB8 }, // bad
{ GL_SRGB, GL_SRGB8 }, // bad
{ GL_RGBA, GL_R8 }, // bad
{ GL_RGB, GL_R8 }, // bad
{ GL_RG, GL_R8 }, // bad
{ GL_RED, GL_R8 } } },
};
void opengl_texture::set_components_hint(GLint hint)

View File

@@ -1954,7 +1954,6 @@ void opengl_renderer::Render(TSubModel *Submodel)
// specular strength in legacy models is set uniformly to 150, 150, 150 so we scale it down for opaque elements
}
model_ubs.emission = 0;
// ...luminance
if (Global.fLuminance < Submodel->fLight)
{
@@ -1967,6 +1966,8 @@ void opengl_renderer::Render(TSubModel *Submodel)
m_geometry.draw(Submodel->m_geometry);
model_ubs.emission = 0.0f;
#ifdef EU07_USE_OPTIMIZED_NORMALIZATION
switch (Submodel->m_normalizenormals)
{
@@ -2080,10 +2081,7 @@ void opengl_renderer::Render(TSubModel *Submodel)
m_geometry.draw(Submodel->m_geometry);
// post-draw reset
// re-enable shadows
/*
setup_shadow_color( m_shadowcolor );
*/
model_ubs.emission = 0.0f;
glDisable(GL_BLEND);
@@ -2792,7 +2790,6 @@ void opengl_renderer::Render_Alpha(TSubModel *Submodel)
}
// ...luminance
model_ubs.emission = 0.0f;
if (Global.fLuminance < Submodel->fLight)
{
model_ubs.emission = Submodel->f4Emision.a;
@@ -2803,6 +2800,8 @@ void opengl_renderer::Render_Alpha(TSubModel *Submodel)
model_ubo->update(model_ubs);
m_geometry.draw(Submodel->m_geometry);
model_ubs.emission = 0.0f;
#ifdef EU07_USE_OPTIMIZED_NORMALIZATION
switch (Submodel->m_normalizenormals)
{