From c1ba89a01cd5a3a98a35c239978dfaba9d106d16 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 24 Sep 2018 08:06:28 -0700 Subject: [PATCH] Fix eglPlugin --- .../eglRendererVisualShapeConverter.cpp | 46 +++++++++---------- .../plugins/eglPlugin/premake4.lua | 3 +- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp b/examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp index 45f4b6144..57abcdf23 100644 --- a/examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp +++ b/examples/SharedMemory/plugins/eglPlugin/eglRendererVisualShapeConverter.cpp @@ -61,7 +61,7 @@ static void printGLString(const char* name, GLenum s) using namespace std; -struct MyTexture2 +struct MyTexture3 { unsigned char* textureData1; int m_width; @@ -69,7 +69,7 @@ struct MyTexture2 bool m_isCached; }; -struct TinyRendererObjectArray +struct EGLRendererObjectArray { btAlignedObjectArray m_renderObjects; int m_objectUniqueId; @@ -78,7 +78,7 @@ struct TinyRendererObjectArray btTransform m_worldTransform; btVector3 m_localScaling; - TinyRendererObjectArray() + EGLRendererObjectArray() { m_worldTransform.setIdentity(); m_localScaling.setValue(1, 1, 1); @@ -96,7 +96,7 @@ struct EGLRendererVisualShapeConverterInternalData btAlignedObjectArray m_rgbaPixelBuffer1; btAlignedObjectArray m_depthBuffer1; - btHashMap m_swRenderInstances; + btHashMap m_swRenderInstances; btAlignedObjectArray m_visualShapes; @@ -104,7 +104,7 @@ struct EGLRendererVisualShapeConverterInternalData int m_swWidth; int m_swHeight; TGAImage m_rgbColorBuffer; - b3AlignedObjectArray m_textures; + b3AlignedObjectArray m_textures; b3AlignedObjectArray m_depthBuffer; b3AlignedObjectArray m_shadowBuffer; b3AlignedObjectArray m_segmentationMaskBuffer; @@ -262,7 +262,7 @@ void EGLRendererVisualShapeConverter::setLightSpecularCoeff(float specularCoeff) } ///todo: merge into single file with TinyRendererVisualShapeConverter -static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfPathPrefix, const btTransform& visualTransform, btAlignedObjectArray& verticesOut, btAlignedObjectArray& indicesOut, btAlignedObjectArray& texturesOut, b3VisualShapeData& visualShapeOut) +static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfPathPrefix, const btTransform& visualTransform, btAlignedObjectArray& verticesOut, btAlignedObjectArray& indicesOut, btAlignedObjectArray& texturesOut, b3VisualShapeData& visualShapeOut) { visualShapeOut.m_visualGeometryType = visual->m_geometry.m_type; visualShapeOut.m_dimensions[0] = 0; @@ -406,7 +406,7 @@ static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfP { if (meshData.m_textureImage1) { - MyTexture2 texData; + MyTexture3 texData; texData.m_width = meshData.m_textureWidth; texData.m_height = meshData.m_textureHeight; texData.textureData1 = meshData.m_textureImage1; @@ -523,7 +523,7 @@ static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfP } // case mesh case URDF_GEOM_PLANE: - // TODO: plane in tiny renderer + // TODO: plane in egl renderer // TODO: export visualShapeOut for external render break; @@ -647,7 +647,7 @@ void EGLRendererVisualShapeConverter::convertVisualShapes( for (int v1 = 0; v1 < cnt; v1++) { - btAlignedObjectArray textures; + btAlignedObjectArray textures; btAlignedObjectArray vertices; btAlignedObjectArray indices; btTransform startTrans; @@ -716,15 +716,15 @@ void EGLRendererVisualShapeConverter::convertVisualShapes( } } - TinyRendererObjectArray** visualsPtr = m_data->m_swRenderInstances[collisionObjectUniqueId]; + EGLRendererObjectArray** visualsPtr = m_data->m_swRenderInstances[collisionObjectUniqueId]; if (visualsPtr == 0) { - m_data->m_swRenderInstances.insert(collisionObjectUniqueId, new TinyRendererObjectArray); + m_data->m_swRenderInstances.insert(collisionObjectUniqueId, new EGLRendererObjectArray); } visualsPtr = m_data->m_swRenderInstances[collisionObjectUniqueId]; btAssert(visualsPtr); - TinyRendererObjectArray* visuals = *visualsPtr; + EGLRendererObjectArray* visuals = *visualsPtr; visuals->m_objectUniqueId = bodyUniqueId; visuals->m_linkIndex = linkIndex; @@ -870,11 +870,11 @@ void EGLRendererVisualShapeConverter::changeRGBAColor(int bodyUniqueId, int link for (int i = 0; i < m_data->m_swRenderInstances.size(); i++) { - TinyRendererObjectArray** ptrptr = m_data->m_swRenderInstances.getAtIndex(i); + EGLRendererObjectArray** ptrptr = m_data->m_swRenderInstances.getAtIndex(i); if (ptrptr && *ptrptr) { float rgba[4] = {(float)rgbaColor[0], (float)rgbaColor[1], (float)rgbaColor[2], (float)rgbaColor[3]}; - TinyRendererObjectArray* visuals = *ptrptr; + EGLRendererObjectArray* visuals = *ptrptr; if ((bodyUniqueId == visuals->m_objectUniqueId) && (linkIndex == visuals->m_linkIndex)) { for (int q = 0; q < visuals->m_renderObjects.size(); q++) @@ -1112,10 +1112,10 @@ void EGLRendererVisualShapeConverter::copyCameraImageData(unsigned char* pixelsR void EGLRendererVisualShapeConverter::removeVisualShape(int collisionObjectUniqueId) { - TinyRendererObjectArray** ptrptr = m_data->m_swRenderInstances[collisionObjectUniqueId]; + EGLRendererObjectArray** ptrptr = m_data->m_swRenderInstances[collisionObjectUniqueId]; if (ptrptr && *ptrptr) { - TinyRendererObjectArray* ptr = *ptrptr; + EGLRendererObjectArray* ptr = *ptrptr; if (ptr) { for (int o = 0; o < ptr->m_renderObjects.size(); o++) @@ -1132,10 +1132,10 @@ void EGLRendererVisualShapeConverter::resetAll() { for (int i = 0; i < m_data->m_swRenderInstances.size(); i++) { - TinyRendererObjectArray** ptrptr = m_data->m_swRenderInstances.getAtIndex(i); + EGLRendererObjectArray** ptrptr = m_data->m_swRenderInstances.getAtIndex(i); if (ptrptr && *ptrptr) { - TinyRendererObjectArray* ptr = *ptrptr; + EGLRendererObjectArray* ptr = *ptrptr; if (ptr) { for (int o = 0; o < ptr->m_renderObjects.size(); o++) @@ -1166,10 +1166,10 @@ void EGLRendererVisualShapeConverter::changeShapeTexture(int objectUniqueId, int { for (int n = 0; n < m_data->m_swRenderInstances.size(); n++) { - TinyRendererObjectArray** visualArrayPtr = m_data->m_swRenderInstances.getAtIndex(n); + EGLRendererObjectArray** visualArrayPtr = m_data->m_swRenderInstances.getAtIndex(n); if (0 == visualArrayPtr) continue; //can this ever happen? - TinyRendererObjectArray* visualArray = *visualArrayPtr; + EGLRendererObjectArray* visualArray = *visualArrayPtr; if (visualArray->m_objectUniqueId == objectUniqueId && visualArray->m_linkIndex == jointIndex) { @@ -1188,7 +1188,7 @@ void EGLRendererVisualShapeConverter::changeShapeTexture(int objectUniqueId, int int EGLRendererVisualShapeConverter::registerTexture(unsigned char* texels, int width, int height) { - MyTexture2 texData; + MyTexture3 texData; texData.m_width = width; texData.m_height = height; texData.textureData1 = texels; @@ -1212,10 +1212,10 @@ int EGLRendererVisualShapeConverter::loadTextureFile(const char* filename) void EGLRendererVisualShapeConverter::syncTransform(int collisionObjectUniqueId, const btTransform& worldTransform, const btVector3& localScaling) { - TinyRendererObjectArray** renderObjPtr = m_data->m_swRenderInstances[collisionObjectUniqueId]; + EGLRendererObjectArray** renderObjPtr = m_data->m_swRenderInstances[collisionObjectUniqueId]; if (renderObjPtr) { - TinyRendererObjectArray* renderObj = *renderObjPtr; + EGLRendererObjectArray* renderObj = *renderObjPtr; renderObj->m_worldTransform = worldTransform; renderObj->m_localScaling = localScaling; if (renderObj->m_graphicsInstanceId >= 0) diff --git a/examples/SharedMemory/plugins/eglPlugin/premake4.lua b/examples/SharedMemory/plugins/eglPlugin/premake4.lua index 1642d665a..544074989 100644 --- a/examples/SharedMemory/plugins/eglPlugin/premake4.lua +++ b/examples/SharedMemory/plugins/eglPlugin/premake4.lua @@ -16,7 +16,7 @@ project ("pybullet_eglRendererPlugin") if os.is("Windows") then files {"../../../OpenGLWindow/Win32OpenGLWindow.cpp", - "../../../OpenGLWindow/Win32GLWindow.cpp",} + "../../../OpenGLWindow/Win32Window.cpp",} end if os.is("MacOSX") then @@ -53,6 +53,7 @@ project ("pybullet_eglRendererPlugin") "../../../ThirdPartyLibs/Wavefront/tiny_obj_loader.h", "../../../ThirdPartyLibs/stb_image/stb_image.cpp", "../../../ThirdPartyLibs/stb_image/stb_image.h", + "../../../ThirdPartyLibs/stb_image/stb_image_write.cpp", "../../../ThirdPartyLibs/tinyxml2/tinyxml2.cpp", "../../../ThirdPartyLibs/tinyxml2/tinyxml2.h", "../../../OpenGLWindow/SimpleCamera.cpp",