example-glue.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. void showExampleDialog(entry::AppI* _app)
  10. {
  11. char temp[1024];
  12. bx::snprintf(temp, BX_COUNTOF(temp), "Example: %s", _app->getName() );
  13. ImGui::SetNextWindowPos(
  14. ImVec2(10.0f, 50.0f)
  15. , ImGuiSetCond_FirstUseEver
  16. );
  17. ImGui::Begin(temp
  18. , NULL
  19. , ImVec2(256.0f, 200.0f)
  20. , ImGuiWindowFlags_AlwaysAutoResize
  21. );
  22. ImGui::TextWrapped("%s", _app->getDescription() );
  23. ImGui::Separator();
  24. {
  25. uint32_t num = entry::getNumApps();
  26. const char** items = (const char**)alloca(num*sizeof(void*) );
  27. uint32_t ii = 0;
  28. int32_t current = 0;
  29. for (entry::AppI* app = entry::getFirstApp(); NULL != app; app = app->getNext() )
  30. {
  31. if (app == _app)
  32. {
  33. current = ii;
  34. }
  35. items[ii++] = app->getName();
  36. }
  37. if (1 < num
  38. && ImGui::Combo("Example", &current, items, num) )
  39. {
  40. char command[1024];
  41. bx::snprintf(command, BX_COUNTOF(command), "app restart %s", items[current]);
  42. cmdExec(command);
  43. }
  44. if (ImGui::Button(ICON_FA_REPEAT " Restart" ) )
  45. {
  46. cmdExec("app restart");
  47. }
  48. ImGui::SameLine();
  49. if (ImGui::Button(ICON_KI_PREVIOUS " Prev") )
  50. {
  51. cmdExec("app restart prev");
  52. }
  53. ImGui::SameLine();
  54. if (ImGui::Button(ICON_KI_NEXT " Next") )
  55. {
  56. cmdExec("app restart next");
  57. }
  58. ImGui::SameLine();
  59. if (ImGui::Button(ICON_KI_EXIT " Exit") )
  60. {
  61. cmdExec("exit");
  62. }
  63. }
  64. #if 0
  65. {
  66. bgfx::RendererType::Enum supportedRenderers[bgfx::RendererType::Count];
  67. uint8_t num = bgfx::getSupportedRenderers(BX_COUNTOF(supportedRenderers), supportedRenderers);
  68. const bgfx::Caps* caps = bgfx::getCaps();
  69. const char* items[bgfx::RendererType::Count];
  70. int32_t current = 0;
  71. for (uint8_t ii = 0; ii < num; ++ii)
  72. {
  73. items[ii] = bgfx::getRendererName(supportedRenderers[ii]);
  74. if (supportedRenderers[ii] == caps->rendererType)
  75. {
  76. current = ii;
  77. }
  78. }
  79. if (ImGui::Combo("Renderer", &current, items, num) )
  80. {
  81. restart = true;
  82. }
  83. }
  84. #endif // 0
  85. const bgfx::Stats* stats = bgfx::getStats();
  86. ImGui::Text("CPU %0.3f"
  87. , double(stats->cpuTimeEnd-stats->cpuTimeBegin)/stats->cpuTimerFreq*1000.0
  88. );
  89. ImGui::Text("GPU %0.3f (latency: %d)"
  90. , double(stats->gpuTimeEnd-stats->gpuTimeBegin)/stats->gpuTimerFreq*1000.0
  91. , stats->maxGpuLatency
  92. );
  93. ImGui::End();
  94. }