mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-17 23:39:18 +02:00
minor bug fixes, minor diagnostics tweaks
This commit is contained in:
@@ -437,7 +437,7 @@ driver_mode::update_camera( double const Deltatime ) {
|
|||||||
if( d )
|
if( d )
|
||||||
pDynamicNearest = d; // zmiana na nowy, jeśli coś znaleziony niepusty
|
pDynamicNearest = d; // zmiana na nowy, jeśli coś znaleziony niepusty
|
||||||
if( pDynamicNearest )
|
if( pDynamicNearest )
|
||||||
Camera.LookAt = pDynamicNearest->GetPosition();
|
Camera.LookAt = pDynamicNearest->GetPosition() + 0.5 * pDynamicNearest->VectorUp() * pDynamicNearest->MoverParameters->Dim.H;
|
||||||
}
|
}
|
||||||
Camera.RaLook(); // jednorazowe przestawienie kamery
|
Camera.RaLook(); // jednorazowe przestawienie kamery
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -464,9 +464,22 @@ gamepad_input::process_axes() {
|
|||||||
if( inputtype == input_type::value_invert ) {
|
if( inputtype == input_type::value_invert ) {
|
||||||
param *= -1.0;
|
param *= -1.0;
|
||||||
}
|
}
|
||||||
// special case, viewturn receives some param scaling
|
}
|
||||||
if( boundcommand1 == user_command::viewturn ) {
|
// scale passed value according to command type
|
||||||
|
switch( boundcommand1 ) {
|
||||||
|
case user_command::viewturn: {
|
||||||
param *= 10.0 * ( Timer::GetDeltaRenderTime() * 60.0 );
|
param *= 10.0 * ( Timer::GetDeltaRenderTime() * 60.0 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case user_command::movehorizontal:
|
||||||
|
case user_command::movehorizontalfast: {
|
||||||
|
// these expect value in -1:1 range
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
// commands generally expect their parameter to be in 0:1 range
|
||||||
|
param = param * 0.5 + 0.5;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ bool gl::framebuffer::is_complete()
|
|||||||
auto const iscomplete { status == GL_FRAMEBUFFER_COMPLETE };
|
auto const iscomplete { status == GL_FRAMEBUFFER_COMPLETE };
|
||||||
|
|
||||||
if( false == iscomplete ) {
|
if( false == iscomplete ) {
|
||||||
ErrorLog( "framebuffer status error: " + to_hex_str( status ) );
|
ErrorLog( "framebuffer status: error " + to_hex_str( status ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return iscomplete;
|
return iscomplete;
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ void opengl_material::log_error(const std::string &str)
|
|||||||
std::map<std::string, int> texture_bindings {
|
std::map<std::string, int> texture_bindings {
|
||||||
|
|
||||||
{ "diffuse", 0 },
|
{ "diffuse", 0 },
|
||||||
{ "normal", 1 }
|
{ "normals", 1 },
|
||||||
|
{ "normalmap", 1 }
|
||||||
};
|
};
|
||||||
|
|
||||||
void opengl_material::finalize(bool Loadnow)
|
void opengl_material::finalize(bool Loadnow)
|
||||||
|
|||||||
@@ -48,8 +48,6 @@ bool opengl33_renderer::Init(GLFWwindow *Window)
|
|||||||
if (!Init_caps())
|
if (!Init_caps())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
WriteLog("preparing renderer...");
|
|
||||||
|
|
||||||
OpenGLMatrices.upload() = false; // set matrix stack in virtual mode
|
OpenGLMatrices.upload() = false; // set matrix stack in virtual mode
|
||||||
|
|
||||||
m_window = Window;
|
m_window = Window;
|
||||||
@@ -80,12 +78,10 @@ bool opengl33_renderer::Init(GLFWwindow *Window)
|
|||||||
m_lights.emplace_back(light);
|
m_lights.emplace_back(light);
|
||||||
}
|
}
|
||||||
// preload some common textures
|
// preload some common textures
|
||||||
WriteLog("Loading common gfx data...");
|
|
||||||
m_glaretexture = Fetch_Texture("fx/lightglare");
|
m_glaretexture = Fetch_Texture("fx/lightglare");
|
||||||
m_suntexture = Fetch_Texture("fx/sun");
|
m_suntexture = Fetch_Texture("fx/sun");
|
||||||
m_moontexture = Fetch_Texture("fx/moon");
|
m_moontexture = Fetch_Texture("fx/moon");
|
||||||
m_smoketexture = Fetch_Texture("fx/smoke");
|
m_smoketexture = Fetch_Texture("fx/smoke");
|
||||||
WriteLog("...gfx data pre-loading done");
|
|
||||||
|
|
||||||
// prepare basic geometry chunks
|
// prepare basic geometry chunks
|
||||||
float const size = 2.5f / 2.0f;
|
float const size = 2.5f / 2.0f;
|
||||||
@@ -168,6 +164,7 @@ bool opengl33_renderer::Init(GLFWwindow *Window)
|
|||||||
m_shadow_tex = std::make_unique<opengl_texture>();
|
m_shadow_tex = std::make_unique<opengl_texture>();
|
||||||
m_shadow_tex->alloc_rendertarget(Global.gfx_format_depth, GL_DEPTH_COMPONENT, m_shadowbuffersize, m_shadowbuffersize, m_shadowpass.size());
|
m_shadow_tex->alloc_rendertarget(Global.gfx_format_depth, GL_DEPTH_COMPONENT, m_shadowbuffersize, m_shadowbuffersize, m_shadowpass.size());
|
||||||
m_shadow_fb->attach(*m_shadow_tex, GL_DEPTH_ATTACHMENT, 0);
|
m_shadow_fb->attach(*m_shadow_tex, GL_DEPTH_ATTACHMENT, 0);
|
||||||
|
m_shadow_fb->setup_drawing(0);
|
||||||
|
|
||||||
if( !m_shadow_fb->is_complete() ) {
|
if( !m_shadow_fb->is_complete() ) {
|
||||||
ErrorLog( "shadow framebuffer setup failed" );
|
ErrorLog( "shadow framebuffer setup failed" );
|
||||||
@@ -277,7 +274,7 @@ bool opengl33_renderer::Init(GLFWwindow *Window)
|
|||||||
|
|
||||||
WriteLog("picking objects created");
|
WriteLog("picking objects created");
|
||||||
|
|
||||||
WriteLog("gfx renderer setup complete");
|
WriteLog("Gfx Renderer: setup complete");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -303,7 +300,7 @@ bool opengl33_renderer::init_viewport(viewport_config &vp)
|
|||||||
{
|
{
|
||||||
glfwMakeContextCurrent(vp.window);
|
glfwMakeContextCurrent(vp.window);
|
||||||
|
|
||||||
WriteLog("init viewport: " + std::to_string(vp.width) + ", " + std::to_string(vp.height));
|
WriteLog("init viewport: " + std::to_string(vp.width) + " x " + std::to_string(vp.height));
|
||||||
|
|
||||||
glfwSwapInterval( Global.VSync ? 1 : 0 );
|
glfwSwapInterval( Global.VSync ? 1 : 0 );
|
||||||
|
|
||||||
@@ -331,8 +328,11 @@ bool opengl33_renderer::init_viewport(viewport_config &vp)
|
|||||||
else if (GLAD_GL_EXT_clip_control)
|
else if (GLAD_GL_EXT_clip_control)
|
||||||
glClipControlEXT(GL_LOWER_LEFT_EXT, GL_ZERO_TO_ONE_EXT);
|
glClipControlEXT(GL_LOWER_LEFT_EXT, GL_ZERO_TO_ONE_EXT);
|
||||||
|
|
||||||
if (!Global.gfx_usegles)
|
if( !Global.gfx_usegles ) {
|
||||||
glEnable(GL_PROGRAM_POINT_SIZE);
|
glEnable( GL_PROGRAM_POINT_SIZE );
|
||||||
|
// not present in core, but if we get compatibility profile instead we won't get gl_pointcoord without it
|
||||||
|
glEnable( GL_POINT_SPRITE );
|
||||||
|
}
|
||||||
|
|
||||||
if (!gl::vao::use_vao)
|
if (!gl::vao::use_vao)
|
||||||
{
|
{
|
||||||
@@ -4035,10 +4035,9 @@ bool opengl33_renderer::Init_caps()
|
|||||||
{
|
{
|
||||||
WriteLog(
|
WriteLog(
|
||||||
"Gfx Renderer: " + std::string( (char *)glGetString(GL_RENDERER))
|
"Gfx Renderer: " + std::string( (char *)glGetString(GL_RENDERER))
|
||||||
+ "\nVendor: " + std::string( (char *)glGetString(GL_VENDOR))
|
+ " Vendor: " + std::string( (char *)glGetString(GL_VENDOR))
|
||||||
+ "\nOpenGL Version: " + std::string((char *)glGetString(GL_VERSION)) );
|
+ " OpenGL Version: " + std::string((char *)glGetString(GL_VERSION)) );
|
||||||
|
|
||||||
WriteLog("--------");
|
|
||||||
{
|
{
|
||||||
GLint extCount = 0;
|
GLint extCount = 0;
|
||||||
glGetIntegerv( GL_NUM_EXTENSIONS, &extCount );
|
glGetIntegerv( GL_NUM_EXTENSIONS, &extCount );
|
||||||
@@ -4052,7 +4051,6 @@ bool opengl33_renderer::Init_caps()
|
|||||||
}
|
}
|
||||||
WriteLog( extensions );
|
WriteLog( extensions );
|
||||||
}
|
}
|
||||||
WriteLog("--------");
|
|
||||||
|
|
||||||
if (!Global.gfx_usegles)
|
if (!Global.gfx_usegles)
|
||||||
{
|
{
|
||||||
@@ -4100,15 +4098,15 @@ bool opengl33_renderer::Init_caps()
|
|||||||
|
|
||||||
glGetError();
|
glGetError();
|
||||||
glLineWidth(2.0f);
|
glLineWidth(2.0f);
|
||||||
if (!glGetError())
|
if (!glGetError()) {
|
||||||
{
|
|
||||||
WriteLog("wide lines supported");
|
WriteLog("wide lines supported");
|
||||||
m_widelines_supported = true;
|
m_widelines_supported = true;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
WriteLog("warning: wide lines not supported");
|
WriteLog( "warning: wide lines not supported" );
|
||||||
|
}
|
||||||
|
|
||||||
WriteLog("--------");
|
WriteLog( "render path: Shaders, VBO" );
|
||||||
|
|
||||||
// ograniczenie maksymalnego rozmiaru tekstur - parametr dla skalowania tekstur
|
// ograniczenie maksymalnego rozmiaru tekstur - parametr dla skalowania tekstur
|
||||||
{
|
{
|
||||||
@@ -4134,7 +4132,7 @@ bool opengl33_renderer::Init_caps()
|
|||||||
if (Global.gfx_framebuffer_height == -1)
|
if (Global.gfx_framebuffer_height == -1)
|
||||||
Global.gfx_framebuffer_height = Global.iWindowHeight;
|
Global.gfx_framebuffer_height = Global.iWindowHeight;
|
||||||
|
|
||||||
WriteLog("main window size: " + std::to_string(Global.gfx_framebuffer_width) + "x" + std::to_string(Global.gfx_framebuffer_height));
|
WriteLog("main window size: " + std::to_string(Global.gfx_framebuffer_width) + " x " + std::to_string(Global.gfx_framebuffer_height));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ opengl_particles::update( opengl_camera const &Camera ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::size_t
|
std::size_t
|
||||||
opengl_particles::render( int const Textureunit ) {
|
opengl_particles::render( GLint const Textureunit ) {
|
||||||
|
|
||||||
if( false == Global.Smoke ) { return 0; }
|
if( false == Global.Smoke ) { return 0; }
|
||||||
if( m_buffercapacity == 0 ) { return 0; }
|
if( m_buffercapacity == 0 ) { return 0; }
|
||||||
@@ -143,7 +143,7 @@ opengl_particles::render( int const Textureunit ) {
|
|||||||
::glEnableClientState( GL_VERTEX_ARRAY );
|
::glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
::glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof( particle_vertex ), reinterpret_cast<void const *>( sizeof( float ) * 3 ) );
|
::glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof( particle_vertex ), reinterpret_cast<void const *>( sizeof( float ) * 3 ) );
|
||||||
::glEnableClientState( GL_COLOR_ARRAY );
|
::glEnableClientState( GL_COLOR_ARRAY );
|
||||||
::glClientActiveTexture( Textureunit );
|
::glClientActiveTexture( GL_TEXTURE0 + Textureunit );
|
||||||
::glTexCoordPointer( 2, GL_FLOAT, sizeof( particle_vertex ), reinterpret_cast<void const *>( sizeof( float ) * 3 + sizeof( std::uint8_t ) * 4 ) );
|
::glTexCoordPointer( 2, GL_FLOAT, sizeof( particle_vertex ), reinterpret_cast<void const *>( sizeof( float ) * 3 + sizeof( std::uint8_t ) * 4 ) );
|
||||||
::glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
::glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||||
// ...draw...
|
// ...draw...
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public:
|
|||||||
void
|
void
|
||||||
update( opengl_camera const &Camera );
|
update( opengl_camera const &Camera );
|
||||||
std::size_t
|
std::size_t
|
||||||
render( int const Textureunit );
|
render( GLint const Textureunit );
|
||||||
private:
|
private:
|
||||||
// types
|
// types
|
||||||
struct particle_vertex {
|
struct particle_vertex {
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ opengl_precipitation::update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
opengl_precipitation::render() {
|
opengl_precipitation::render( GLint const Textureunit ) {
|
||||||
|
|
||||||
if( m_texture == null_handle ) { return; }
|
if( m_texture == null_handle ) { return; }
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ opengl_precipitation::render() {
|
|||||||
::glEnableClientState( GL_VERTEX_ARRAY );
|
::glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
// uvs
|
// uvs
|
||||||
::glBindBuffer( GL_ARRAY_BUFFER, m_uvbuffer );
|
::glBindBuffer( GL_ARRAY_BUFFER, m_uvbuffer );
|
||||||
::glClientActiveTexture( m_textureunit );
|
::glClientActiveTexture( GL_TEXTURE0 + Textureunit );
|
||||||
::glTexCoordPointer( 2, GL_FLOAT, sizeof( glm::vec2 ), reinterpret_cast<void const*>( 0 ) );
|
::glTexCoordPointer( 2, GL_FLOAT, sizeof( glm::vec2 ), reinterpret_cast<void const*>( 0 ) );
|
||||||
::glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
::glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||||
// uv transformation matrix
|
// uv transformation matrix
|
||||||
|
|||||||
@@ -19,14 +19,10 @@ public:
|
|||||||
// destructor
|
// destructor
|
||||||
~opengl_precipitation();
|
~opengl_precipitation();
|
||||||
// methods
|
// methods
|
||||||
inline
|
|
||||||
void
|
|
||||||
set_unit( GLint const Textureunit ) {
|
|
||||||
m_textureunit = Textureunit; }
|
|
||||||
void
|
void
|
||||||
update();
|
update();
|
||||||
void
|
void
|
||||||
render();
|
render( GLint const Textureunit );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// methods
|
// methods
|
||||||
@@ -38,7 +34,6 @@ private:
|
|||||||
GLuint m_vertexbuffer { (GLuint)-1 };
|
GLuint m_vertexbuffer { (GLuint)-1 };
|
||||||
GLuint m_uvbuffer { (GLuint)-1 };
|
GLuint m_uvbuffer { (GLuint)-1 };
|
||||||
GLuint m_indexbuffer { (GLuint)-1 };
|
GLuint m_indexbuffer { (GLuint)-1 };
|
||||||
GLint m_textureunit { 0 };
|
|
||||||
texture_handle m_texture { null_handle };
|
texture_handle m_texture { null_handle };
|
||||||
float m_overcast { -1.f }; // cached overcast level, difference from current state triggers texture update
|
float m_overcast { -1.f }; // cached overcast level, difference from current state triggers texture update
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ opengl_renderer::Init( GLFWwindow *Window ) {
|
|||||||
std::vector<GLint>{ m_diffusetextureunit } :
|
std::vector<GLint>{ m_diffusetextureunit } :
|
||||||
std::vector<GLint>{ m_normaltextureunit, m_diffusetextureunit } );
|
std::vector<GLint>{ m_normaltextureunit, m_diffusetextureunit } );
|
||||||
ui_layer::set_unit( m_diffusetextureunit );
|
ui_layer::set_unit( m_diffusetextureunit );
|
||||||
m_precipitationrenderer.set_unit( m_diffusetextureunit );
|
|
||||||
select_unit( m_diffusetextureunit );
|
select_unit( m_diffusetextureunit );
|
||||||
|
|
||||||
::glDepthFunc( GL_LEQUAL );
|
::glDepthFunc( GL_LEQUAL );
|
||||||
@@ -109,7 +108,6 @@ opengl_renderer::Init( GLFWwindow *Window ) {
|
|||||||
m_lights.emplace_back( light );
|
m_lights.emplace_back( light );
|
||||||
}
|
}
|
||||||
// preload some common textures
|
// preload some common textures
|
||||||
WriteLog( "Loading common gfx data..." );
|
|
||||||
m_glaretexture = Fetch_Texture( "fx/lightglare" );
|
m_glaretexture = Fetch_Texture( "fx/lightglare" );
|
||||||
m_suntexture = Fetch_Texture( "fx/sun" );
|
m_suntexture = Fetch_Texture( "fx/sun" );
|
||||||
m_moontexture = Fetch_Texture( "fx/moon" );
|
m_moontexture = Fetch_Texture( "fx/moon" );
|
||||||
@@ -117,7 +115,6 @@ opengl_renderer::Init( GLFWwindow *Window ) {
|
|||||||
m_reflectiontexture = Fetch_Texture( "fx/reflections" );
|
m_reflectiontexture = Fetch_Texture( "fx/reflections" );
|
||||||
}
|
}
|
||||||
m_smoketexture = Fetch_Texture( "fx/smoke" );
|
m_smoketexture = Fetch_Texture( "fx/smoke" );
|
||||||
WriteLog( "...gfx data pre-loading done" );
|
|
||||||
|
|
||||||
#ifdef EU07_USE_PICKING_FRAMEBUFFER
|
#ifdef EU07_USE_PICKING_FRAMEBUFFER
|
||||||
// pick buffer resources
|
// pick buffer resources
|
||||||
@@ -312,6 +309,8 @@ opengl_renderer::Init( GLFWwindow *Window ) {
|
|||||||
m_quadric = ::gluNewQuadric();
|
m_quadric = ::gluNewQuadric();
|
||||||
::gluQuadricNormals( m_quadric, GLU_FLAT );
|
::gluQuadricNormals( m_quadric, GLU_FLAT );
|
||||||
|
|
||||||
|
WriteLog( "Gfx Renderer: setup complete" );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +337,7 @@ opengl_renderer::Render() {
|
|||||||
// add user interface
|
// add user interface
|
||||||
setup_units( true, false, false );
|
setup_units( true, false, false );
|
||||||
::glPushClientAttrib( GL_CLIENT_VERTEX_ARRAY_BIT );
|
::glPushClientAttrib( GL_CLIENT_VERTEX_ARRAY_BIT );
|
||||||
::glClientActiveTexture( m_diffusetextureunit );
|
::glClientActiveTexture( GL_TEXTURE0 + m_diffusetextureunit );
|
||||||
::glBindBuffer( GL_ARRAY_BUFFER, 0 );
|
::glBindBuffer( GL_ARRAY_BUFFER, 0 );
|
||||||
Application.render_ui();
|
Application.render_ui();
|
||||||
::glPopClientAttrib();
|
::glPopClientAttrib();
|
||||||
@@ -3151,7 +3150,7 @@ opengl_renderer::Render_precipitation() {
|
|||||||
// momentarily disable depth write, to allow vehicle cab drawn afterwards to mask it instead of leaving it 'inside'
|
// momentarily disable depth write, to allow vehicle cab drawn afterwards to mask it instead of leaving it 'inside'
|
||||||
::glDepthMask( GL_FALSE );
|
::glDepthMask( GL_FALSE );
|
||||||
|
|
||||||
m_precipitationrenderer.render();
|
m_precipitationrenderer.render( m_diffusetextureunit );
|
||||||
if( Global.bUseVBO ) {
|
if( Global.bUseVBO ) {
|
||||||
gfx::opengl_vbogeometrybank::reset();
|
gfx::opengl_vbogeometrybank::reset();
|
||||||
}
|
}
|
||||||
@@ -4161,15 +4160,16 @@ opengl_renderer::Init_caps() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
WriteLog( "Supported extensions: " + std::string((char *)glGetString( GL_EXTENSIONS )) );
|
WriteLog( "Supported extensions: \n"
|
||||||
|
+ std::string((char *)glGetString( GL_EXTENSIONS )) );
|
||||||
|
|
||||||
WriteLog( std::string("Render path: ") + ( Global.bUseVBO ? "VBO" : "Display lists" ) );
|
WriteLog( std::string("render path: ") + ( Global.bUseVBO ? "VBO" : "Display lists" ) );
|
||||||
if( GL_EXT_framebuffer_object ) {
|
if( GL_EXT_framebuffer_object ) {
|
||||||
m_framebuffersupport = true;
|
m_framebuffersupport = true;
|
||||||
WriteLog( "Framebuffer objects enabled" );
|
WriteLog( "framebuffer objects enabled" );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
WriteLog( "Framebuffer objects not supported, resorting to back buffer rendering where possible" );
|
WriteLog( "framebuffer objects not supported, resorting to back buffer rendering where possible" );
|
||||||
}
|
}
|
||||||
// ograniczenie maksymalnego rozmiaru tekstur - parametr dla skalowania tekstur
|
// ograniczenie maksymalnego rozmiaru tekstur - parametr dla skalowania tekstur
|
||||||
{
|
{
|
||||||
@@ -4181,18 +4181,18 @@ opengl_renderer::Init_caps() {
|
|||||||
Global.CurrentMaxTextureSize = Global.iMaxTextureSize;
|
Global.CurrentMaxTextureSize = Global.iMaxTextureSize;
|
||||||
m_shadowbuffersize = Global.shadowtune.map_size;
|
m_shadowbuffersize = Global.shadowtune.map_size;
|
||||||
m_shadowbuffersize = std::min( m_shadowbuffersize, texturesize );
|
m_shadowbuffersize = std::min( m_shadowbuffersize, texturesize );
|
||||||
WriteLog( "Shadows map size capped at " + std::to_string( m_shadowbuffersize ) + "p" );
|
WriteLog( "shadows map size capped at " + std::to_string( m_shadowbuffersize ) + "p" );
|
||||||
}
|
}
|
||||||
// cap the number of supported lights based on hardware
|
// cap the number of supported lights based on hardware
|
||||||
{
|
{
|
||||||
GLint maxlights;
|
GLint maxlights;
|
||||||
::glGetIntegerv( GL_MAX_LIGHTS, &maxlights );
|
::glGetIntegerv( GL_MAX_LIGHTS, &maxlights );
|
||||||
Global.DynamicLightCount = std::min( Global.DynamicLightCount, maxlights - 1 );
|
Global.DynamicLightCount = std::min( Global.DynamicLightCount, maxlights - 1 );
|
||||||
WriteLog( "Dynamic light amount capped at " + std::to_string( Global.DynamicLightCount ) + " (" + std::to_string(maxlights) + " lights total supported by the gfx card)" );
|
WriteLog( "dynamic light amount capped at " + std::to_string( Global.DynamicLightCount ) + " (" + std::to_string(maxlights) + " lights total supported by the gfx card)" );
|
||||||
}
|
}
|
||||||
// select renderer mode
|
// select renderer mode
|
||||||
if( true == Global.BasicRenderer ) {
|
if( true == Global.BasicRenderer ) {
|
||||||
WriteLog( "Basic renderer selected, shadow and reflection mapping will be disabled" );
|
WriteLog( "basic renderer selected, shadow and reflection mapping will be disabled" );
|
||||||
Global.RenderShadows = false;
|
Global.RenderShadows = false;
|
||||||
m_diffusetextureunit = 0;
|
m_diffusetextureunit = 0;
|
||||||
m_helpertextureunit = -1;
|
m_helpertextureunit = -1;
|
||||||
@@ -4203,7 +4203,7 @@ opengl_renderer::Init_caps() {
|
|||||||
GLint maxtextureunits;
|
GLint maxtextureunits;
|
||||||
::glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxtextureunits );
|
::glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxtextureunits );
|
||||||
if( maxtextureunits < 4 ) {
|
if( maxtextureunits < 4 ) {
|
||||||
WriteLog( "Less than 4 texture units, shadow and reflection mapping will be disabled" );
|
WriteLog( "less than 4 texture units, shadow and reflection mapping will be disabled" );
|
||||||
Global.BasicRenderer = true;
|
Global.BasicRenderer = true;
|
||||||
Global.RenderShadows = false;
|
Global.RenderShadows = false;
|
||||||
m_diffusetextureunit = 0;
|
m_diffusetextureunit = 0;
|
||||||
@@ -4214,9 +4214,11 @@ opengl_renderer::Init_caps() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( Global.iMultisampling ) {
|
if( Global.iMultisampling ) {
|
||||||
WriteLog( "Using multisampling x" + std::to_string( 1 << Global.iMultisampling ) );
|
WriteLog( "using multisampling x" + std::to_string( 1 << Global.iMultisampling ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WriteLog( "main window size: " + std::to_string( Global.gfx_framebuffer_width ) + "x" + std::to_string( Global.gfx_framebuffer_height ) );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user