MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / DrawLoadScreen

Method DrawLoadScreen

Source/Main/engine.cpp:3040–3269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3038}
3039
3040void Engine::DrawLoadScreen(bool loading_in_progress) {
3041#ifndef GLDEBUG
3042 // don't draw loading screen on gl debug
3043 // makes traces more useful
3044
3045 Graphics* graphics = Graphics::Instance();
3046 Textures* textures = Textures::Instance();
3047 CHECK_GL_ERROR();
3048 graphics->setViewport(0, 0, graphics->window_dims[0], graphics->window_dims[1]);
3049
3050 glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
3051 graphics->Clear(true);
3052
3053 vec3 base_color = vec3(min(1.0f, (SDL_TS_GetTicks() - started_loading_time) / 1000.0f));
3054
3055 if (!level_has_screenshot && load_screen_tip[0] == '\0') {
3056 textures->drawTexture(loading_screen_logo->GetTextureRef(),
3057 vec3((float)graphics->window_dims[0] / 2.0f, (float)graphics->window_dims[1] / 2.0f + sinf(game_timer.game_time) * 20.0f, 0),
3058 512.0f + (sinf(game_timer.game_time * 2.0f) - 1.0f) * 20);
3059 CHECK_GL_ERROR();
3060 } else {
3061 if (level_has_screenshot) {
3062 CHECK_GL_ERROR();
3063
3064 // no coloring
3065 Graphics* graphics = Graphics::Instance();
3066 Shaders* shaders = Shaders::Instance();
3067
3068 int shader_id = shaders->returnProgram("simple_2d #TEXTURE #FLIPPED #LEVEL_SCREENSHOT");
3069 shaders->createProgram(shader_id);
3070 int shader_attrib_vert_coord = shaders->returnShaderAttrib("vert_coord", shader_id);
3071 int shader_attrib_tex_coord = shaders->returnShaderAttrib("tex_coord", shader_id);
3072 int uniform_mvp_mat = shaders->returnShaderVariable("mvp_mat", shader_id);
3073 int uniform_color = shaders->returnShaderVariable("color", shader_id);
3074 shaders->setProgram(shader_id);
3075 CHECK_GL_ERROR();
3076
3077 GLState gl_state;
3078 gl_state.blend = true;
3079 gl_state.cull_face = false;
3080 gl_state.depth_write = false;
3081 gl_state.depth_test = false;
3082 graphics->setGLState(gl_state);
3083 CHECK_GL_ERROR();
3084
3085 glm::mat4 proj_mat;
3086 proj_mat = glm::ortho(0.0f, (float)graphics->window_dims[0], 0.0f, (float)graphics->window_dims[1]);
3087 glm::mat4 modelview_mat(1.0f);
3088 vec2 where;
3089 vec2 size(Textures::Instance()->getWidth(level_screenshot->GetTextureRef()),
3090 Textures::Instance()->getHeight(level_screenshot->GetTextureRef()));
3091 size /= size[1];
3092 size *= (float)graphics->window_dims[1];
3093 where = vec2(graphics->window_dims[0] * 0.5f, graphics->window_dims[1] * 0.5f);
3094 modelview_mat = glm::translate(modelview_mat, glm::vec3(where[0] - size[0] * 0.5f, where[1] - size[1] * 0.5f, 0));
3095 modelview_mat = glm::scale(modelview_mat, glm::vec3(size[0], size[1], 1.0f));
3096 modelview_mat = glm::translate(modelview_mat, glm::vec3(0.5f, 0.5f, 0.5f));
3097 modelview_mat = glm::translate(modelview_mat, glm::vec3(-0.5f, -0.5f, -0.5f));

Callers

nothing calls this directly

Calls 15

SDL_TS_GetTicksFunction · 0.85
maxFunction · 0.85
drawTextureMethod · 0.80
GetTextureRefMethod · 0.80
returnProgramMethod · 0.80
returnShaderAttribMethod · 0.80
returnShaderVariableMethod · 0.80
setProgramMethod · 0.80
setGLStateMethod · 0.80
bindTextureMethod · 0.80
BindElementVBOMethod · 0.80

Tested by

no test coverage detected