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

Method DrawSafeZone

Source/Graphics/camera.cpp:367–432  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

365}
366
367void Camera::DrawSafeZone() {
368 PROFILER_GPU_ZONE(g_profiler_ctx, "DrawSafeZone");
369 CHECK_GL_ERROR();
370 GLState gl_state;
371 gl_state.blend = true;
372 gl_state.cull_face = false;
373 gl_state.depth_test = false;
374 gl_state.depth_write = false;
375
376 Graphics::Instance()->setGLState(gl_state);
377 int shader_id = Shaders::Instance()->returnProgram("simple_2d");
378 Shaders::Instance()->setProgram(shader_id);
379
380 float aspect_ratio = GetAspectRatio();
381 mat4 perspective_matrix;
382 perspective_matrix.SetPerspectiveInfinite(VertFOVFromHorz(target_horz_fov, aspect_ratio), aspect_ratio, near_plane, far_plane);
383 float vert_fov = tanf(TargetVertFovFromHorz(target_horz_fov) * 3.14159266f / 180.0f * 0.45f);
384 float horz_fov = tanf(target_horz_fov * 3.14159266f / 180.0f * 0.45f);
385 vec3 safe_pos(horz_fov, vert_fov, 1);
386 safe_pos = perspective_matrix * safe_pos;
387 const float safe_pos_extend = 0.8f;
388
389 glm::mat4 proj = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f);
390 Shaders::Instance()->SetUniformMat4("mvp_mat", (const GLfloat*)&proj);
391 Shaders::Instance()->SetUniformVec4("color", vec4(1.0f));
392
393 Graphics::Instance()->SetLineWidth(1);
394
395 float data[] = {
396 safe_pos[0], safe_pos[1], safe_pos[2],
397 safe_pos[0] * safe_pos_extend, safe_pos[1], safe_pos[2],
398 safe_pos[0], safe_pos[1], safe_pos[2],
399 safe_pos[0], safe_pos[1] * safe_pos_extend, safe_pos[2],
400
401 -safe_pos[0], safe_pos[1], safe_pos[2],
402 -safe_pos[0] * safe_pos_extend, safe_pos[1], safe_pos[2],
403 -safe_pos[0], safe_pos[1], safe_pos[2],
404 -safe_pos[0], safe_pos[1] * safe_pos_extend, safe_pos[2],
405
406 safe_pos[0], -safe_pos[1], safe_pos[2],
407 safe_pos[0] * safe_pos_extend, -safe_pos[1], safe_pos[2],
408 safe_pos[0], -safe_pos[1], safe_pos[2],
409 safe_pos[0], -safe_pos[1] * safe_pos_extend, safe_pos[2],
410
411 -safe_pos[0], -safe_pos[1], safe_pos[2],
412 -safe_pos[0] * safe_pos_extend, -safe_pos[1], safe_pos[2],
413 -safe_pos[0], -safe_pos[1], safe_pos[2],
414 -safe_pos[0], -safe_pos[1] * safe_pos_extend, safe_pos[2],
415
416 -safe_pos[0] * 2.0f, -safe_pos[1] * 0.5f, safe_pos[2],
417 safe_pos[0] * 2.0f, -safe_pos[1] * 0.5f, safe_pos[2]};
418
419 static VBOContainer safe_zone_vbo;
420 safe_zone_vbo.Fill(kVBODynamic | kVBOFloat, sizeof(data), data);
421 safe_zone_vbo.Bind();
422
423 int vert_attrib_id = Shaders::Instance()->returnShaderAttrib("vert_coord", shader_id);
424 Graphics::Instance()->EnableVertexAttribArray(vert_attrib_id);

Callers 1

DrawImGuiCameraPreviewFunction · 0.80

Calls 15

GetAspectRatioFunction · 0.85
VertFOVFromHorzFunction · 0.85
TargetVertFovFromHorzFunction · 0.85
setGLStateMethod · 0.80
returnProgramMethod · 0.80
setProgramMethod · 0.80
SetUniformMat4Method · 0.80
SetLineWidthMethod · 0.80
returnShaderAttribMethod · 0.80
DrawArraysMethod · 0.80

Tested by

no test coverage detected