example-glue.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. * Copyright 2011-2017 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
  4. */
  5. #include "imgui/imgui.h"
  6. #include "entry/entry.h"
  7. #include "entry/cmd.h"
  8. #include <bx/string.h>
  9. bool showExampleDialog(entry::AppI* _app)
  10. {
  11. bool restart = false;
  12. char temp[1024];
  13. bx::snprintf(temp, BX_COUNTOF(temp), "Example: %s", _app->getName() );
  14. ImGui::SetNextWindowPos(
  15. ImVec2(10.0f, 50.0f)
  16. , ImGuiSetCond_FirstUseEver
  17. );
  18. ImGui::Begin(temp
  19. , NULL
  20. , ImVec2(256.0f, 200.0f)
  21. , ImGuiWindowFlags_AlwaysAutoResize
  22. );
  23. ImGui::TextWrapped("%s", _app->getDescription() );
  24. ImGui::Separator();
  25. {
  26. uint32_t num = entry::getNumApps();
  27. const char** items = (const char**)alloca(num*sizeof(void*) );
  28. uint32_t ii = 0;
  29. int32_t current = 0;
  30. for (entry::AppI* app = entry::getFirstApp(); NULL != app; app = app->getNext() )
  31. {
  32. if (app == _app)
  33. {
  34. current = ii;
  35. }
  36. items[ii++] = app->getName();
  37. }
  38. if (1 < num
  39. && ImGui::Combo("Example", &current, items, num) )
  40. {
  41. char command[1024];
  42. bx::snprintf(command, BX_COUNTOF(command), "app restart %s", items[current]);
  43. cmdExec(command);
  44. }
  45. if (ImGui::Button("Restart") )
  46. {
  47. cmdExec("app restart");
  48. }
  49. ImGui::SameLine();
  50. if (ImGui::Button("Next") )
  51. {
  52. cmdExec("app restart next");
  53. }
  54. }
  55. #if 0
  56. {
  57. bgfx::RendererType::Enum supportedRenderers[bgfx::RendererType::Count];
  58. uint8_t num = bgfx::getSupportedRenderers(BX_COUNTOF(supportedRenderers), supportedRenderers);
  59. const bgfx::Caps* caps = bgfx::getCaps();
  60. const char* items[bgfx::RendererType::Count];
  61. int32_t current = 0;
  62. for (uint8_t ii = 0; ii < num; ++ii)
  63. {
  64. items[ii] = bgfx::getRendererName(supportedRenderers[ii]);
  65. if (supportedRenderers[ii] == caps->rendererType)
  66. {
  67. current = ii;
  68. }
  69. }
  70. if (ImGui::Combo("Renderer", &current, items, num) )
  71. {
  72. restart = true;
  73. }
  74. }
  75. #endif // 0
  76. const bgfx::Stats* stats = bgfx::getStats();
  77. ImGui::Text("CPU %0.3f"
  78. , double(stats->cpuTimeEnd-stats->cpuTimeBegin)/stats->cpuTimerFreq*1000.0
  79. );
  80. ImGui::Text("GPU %0.3f (latency: %d)"
  81. , double(stats->gpuTimeEnd-stats->gpuTimeBegin)/stats->gpuTimerFreq*1000.0
  82. , stats->maxGpuLatency
  83. );
  84. ImGui::End();
  85. return restart;
  86. }