example-glue.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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("Restart") )
  45. {
  46. cmdExec("app restart");
  47. }
  48. ImGui::SameLine();
  49. if (ImGui::Button("Next") )
  50. {
  51. cmdExec("app restart next");
  52. }
  53. }
  54. #if 0
  55. {
  56. bgfx::RendererType::Enum supportedRenderers[bgfx::RendererType::Count];
  57. uint8_t num = bgfx::getSupportedRenderers(BX_COUNTOF(supportedRenderers), supportedRenderers);
  58. const bgfx::Caps* caps = bgfx::getCaps();
  59. const char* items[bgfx::RendererType::Count];
  60. int32_t current = 0;
  61. for (uint8_t ii = 0; ii < num; ++ii)
  62. {
  63. items[ii] = bgfx::getRendererName(supportedRenderers[ii]);
  64. if (supportedRenderers[ii] == caps->rendererType)
  65. {
  66. current = ii;
  67. }
  68. }
  69. if (ImGui::Combo("Renderer", &current, items, num) )
  70. {
  71. restart = true;
  72. }
  73. }
  74. #endif // 0
  75. const bgfx::Stats* stats = bgfx::getStats();
  76. ImGui::Text("CPU %0.3f"
  77. , double(stats->cpuTimeEnd-stats->cpuTimeBegin)/stats->cpuTimerFreq*1000.0
  78. );
  79. ImGui::Text("GPU %0.3f (latency: %d)"
  80. , double(stats->gpuTimeEnd-stats->gpuTimeBegin)/stats->gpuTimerFreq*1000.0
  81. , stats->maxGpuLatency
  82. );
  83. ImGui::End();
  84. }