OpenGLGuiHelper.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef OPENGL_GUI_HELPER_H
  2. #define OPENGL_GUI_HELPER_H
  3. #include "../CommonInterfaces/CommonGUIHelperInterface.h"
  4. class btCollisionShape;
  5. class btTransform;
  6. #include "LinearMath/btAlignedObjectArray.h"
  7. #include "../OpenGLWindow/GLInstanceGraphicsShape.h"
  8. struct OpenGLGuiHelper : public GUIHelperInterface
  9. {
  10. struct OpenGLGuiHelperInternalData* m_data;
  11. OpenGLGuiHelper(struct CommonGraphicsApp* glApp, bool useOpenGL2);
  12. virtual ~OpenGLGuiHelper();
  13. virtual struct CommonRenderInterface* getRenderInterface();
  14. virtual const struct CommonRenderInterface* getRenderInterface() const;
  15. virtual void createRigidBodyGraphicsObject(btRigidBody* body, const btVector3& color);
  16. virtual void createCollisionObjectGraphicsObject(btCollisionObject* body, const btVector3& color);
  17. virtual int registerTexture(const unsigned char* texels, int width, int height);
  18. virtual int registerGraphicsShape(const float* vertices, int numvertices, const int* indices, int numIndices, int primitiveType, int textureId);
  19. virtual int registerGraphicsInstance(int shapeIndex, const float* position, const float* quaternion, const float* color, const float* scaling);
  20. virtual void removeAllGraphicsInstances();
  21. virtual void removeGraphicsInstance(int graphicsUid);
  22. virtual void changeInstanceFlags(int instanceUid, int flags);
  23. virtual void changeRGBAColor(int instanceUid, const double rgbaColor[4]);
  24. virtual void changeScaling(int instanceUid, const double scaling[3]);
  25. virtual void changeSpecularColor(int instanceUid, const double specularColor[3]);
  26. virtual void changeTexture(int textureUniqueId, const unsigned char* rgbTexels, int width, int height);
  27. virtual void removeTexture(int textureUid);
  28. virtual int getShapeIndexFromInstance(int instanceUid);
  29. virtual void replaceTexture(int shapeIndex, int textureUid);
  30. virtual void updateShape(int shapeIndex, float* vertices, int numVertices);
  31. virtual void setBackgroundColor(const double rgbBackground[3]);
  32. virtual void createCollisionShapeGraphicsObject(btCollisionShape* collisionShape);
  33. virtual void syncPhysicsToGraphics(const btDiscreteDynamicsWorld* rbWorld);
  34. virtual void render(const btDiscreteDynamicsWorld* rbWorld);
  35. virtual void createPhysicsDebugDrawer(btDiscreteDynamicsWorld* rbWorld);
  36. virtual struct Common2dCanvasInterface* get2dCanvasInterface();
  37. virtual CommonParameterInterface* getParameterInterface();
  38. virtual struct CommonGraphicsApp* getAppInterface();
  39. virtual void setUpAxis(int axis);
  40. virtual void resetCamera(float camDist, float yaw, float pitch, float camPosX, float camPosY, float camPosZ);
  41. virtual bool getCameraInfo(int* width, int* height, float viewMatrix[16], float projectionMatrix[16], float camUp[3], float camForward[3], float hor[3], float vert[3], float* yaw, float* pitch, float* camDist, float cameraTarget[3]) const;
  42. virtual void copyCameraImageData(const float viewMatrix[16], const float projectionMatrix[16],
  43. unsigned char* pixelsRGBA, int rgbaBufferSizeInPixels,
  44. float* depthBuffer, int depthBufferSizeInPixels,
  45. int* segmentationMaskBuffer, int segmentationMaskBufferSizeInPixels,
  46. int startPixelIndex, int destinationWidth,
  47. int destinationHeight, int* numPixelsCopied);
  48. virtual void setProjectiveTextureMatrices(const float viewMatrix[16], const float projectionMatrix[16]);
  49. virtual void setProjectiveTexture(bool useProjectiveTexture);
  50. virtual void autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld);
  51. virtual void drawText3D(const char* txt, float position[3], float orientation[4], float color[4], float size, int optionFlag);
  52. virtual void drawText3D(const char* txt, float posX, float posY, float posZ, float size);
  53. virtual int addUserDebugText3D(const char* txt, const double positionXYZ[3], const double textColorRGB[3], double size, double lifeTime)
  54. {
  55. return -1;
  56. }
  57. virtual int addUserDebugLine(const double debugLineFromXYZ[3], const double debugLineToXYZ[3], const double debugLineColorRGB[3], double lineWidth, double lifeTime, int trackingVisualShapeIndex, int replaceItemUid)
  58. {
  59. return -1;
  60. }
  61. virtual int addUserDebugParameter(const char* txt, double rangeMin, double rangeMax, double startValue)
  62. {
  63. return -1;
  64. }
  65. virtual void removeUserDebugItem(int debugItemUniqueId)
  66. {
  67. }
  68. virtual void removeAllUserDebugItems()
  69. {
  70. }
  71. void renderInternalGl2(int pass, const btDiscreteDynamicsWorld* dynamicsWorld);
  72. void setVRMode(bool vrMode);
  73. void setVisualizerFlag(int flag, int enable);
  74. virtual void setVisualizerFlagCallback(VisualizerFlagCallback callback);
  75. virtual void dumpFramesToVideo(const char* mp4FileName);
  76. int createCheckeredTexture(int r, int g, int b);
  77. void computeSoftBodyVertices(btCollisionShape* collisionShape,
  78. btAlignedObjectArray<GLInstanceVertex>& gfxVertices,
  79. btAlignedObjectArray<int>& indices);
  80. };
  81. #endif //OPENGL_GUI_HELPER_H