main.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef IGL_VIEWER_WITH_NANOGUI
  2. #include <iostream>
  3. int main()
  4. {
  5. std::cerr<<
  6. "Error: recompile with IGL_VIEWER_WITH_NANOGUI defined."<<std::endl;
  7. return EXIT_FAILURE;
  8. }
  9. #else
  10. #include <igl/readOFF.h>
  11. #include <igl/viewer/Viewer.h>
  12. #include <nanogui/formhelper.h>
  13. #include <nanogui/screen.h>
  14. #include <iostream>
  15. #include "tutorial_shared_path.h"
  16. Eigen::MatrixXd V;
  17. Eigen::MatrixXi F;
  18. bool boolVariable = true;
  19. float floatVariable = 0.1f;
  20. int main(int argc, char *argv[])
  21. {
  22. // Load a mesh in OFF format
  23. igl::readOFF(TUTORIAL_SHARED_PATH "/bunny.off", V, F);
  24. // Init the viewer
  25. igl::viewer::Viewer viewer;
  26. // Extend viewer menu
  27. viewer.callback_init = [&](igl::viewer::Viewer& viewer)
  28. {
  29. // Add new group
  30. viewer.ngui->addGroup("New Group");
  31. // Expose variable directly ...
  32. viewer.ngui->addVariable("float",floatVariable);
  33. // ... or using a custom callback
  34. viewer.ngui->addVariable<bool>("bool",[&](bool val) {
  35. boolVariable = val; // set
  36. },[&]() {
  37. return boolVariable; // get
  38. });
  39. // Add a button
  40. viewer.ngui->addButton("Print Hello",[](){ std::cout << "Hello\n"; });
  41. // Add an additional bar
  42. viewer.ngui->addWindow(Eigen::Vector2i(220,10),"New Window");
  43. // Expose the same variable directly ...
  44. viewer.ngui->addVariable("float",floatVariable);
  45. // Generate menu
  46. viewer.screen->performLayout();
  47. return false;
  48. };
  49. // Plot the mesh
  50. viewer.data.set_mesh(V, F);
  51. viewer.launch();
  52. }
  53. #endif