File diff r25207:880e11b8d85d → r25208:7724a23f8d28
src/video/opengl.cpp
Show inline comments
 
@@ -464,16 +464,17 @@ void SetupDebugOutput()
 
/**
 
 * Create and initialize the singleton back-end class.
 
 * @param get_proc Callback to get an OpenGL function from the OS driver.
 
 * @param screen_res Current display resolution.
 
 * @return nullptr on success, error message otherwise.
 
 */
 
/* static */ const char *OpenGLBackend::Create(GetOGLProcAddressProc get_proc)
 
/* static */ const char *OpenGLBackend::Create(GetOGLProcAddressProc get_proc, const Dimension &screen_res)
 
{
 
	if (OpenGLBackend::instance != nullptr) OpenGLBackend::Destroy();
 

	
 
	GetOGLProcAddress = get_proc;
 

	
 
	OpenGLBackend::instance = new OpenGLBackend();
 
	return OpenGLBackend::instance->Init();
 
	return OpenGLBackend::instance->Init(screen_res);
 
}
 

	
 
/**
 
@@ -521,9 +522,10 @@ OpenGLBackend::~OpenGLBackend()
 

	
 
/**
 
 * Check for the needed OpenGL functionality and allocate all resources.
 
 * @param screen_res Current display resolution.
 
 * @return Error string or nullptr if successful.
 
 */
 
const char *OpenGLBackend::Init()
 
const char *OpenGLBackend::Init(const Dimension &screen_res)
 
{
 
	if (!BindBasicInfoProcs()) return "OpenGL not supported";
 

	
 
@@ -581,6 +583,11 @@ const char *OpenGLBackend::Init()
 
	}
 
	if (this->persistent_mapping_supported) DEBUG(driver, 3, "OpenGL: Using persistent buffer mapping");
 

	
 
	/* Check maximum texture size against screen resolution. */
 
	GLint max_tex_size = 0;
 
	_glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_tex_size);
 
	if (std::max(screen_res.width, screen_res.height) > (uint)max_tex_size) return "Max supported texture size is too small";
 

	
 
	/* Check available texture units. */
 
	GLint max_tex_units = 0;
 
	_glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &max_tex_units);