Fix eglPlugin
This commit is contained in:
@@ -61,7 +61,7 @@ static void printGLString(const char* name, GLenum s)
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
struct MyTexture2
|
struct MyTexture3
|
||||||
{
|
{
|
||||||
unsigned char* textureData1;
|
unsigned char* textureData1;
|
||||||
int m_width;
|
int m_width;
|
||||||
@@ -69,7 +69,7 @@ struct MyTexture2
|
|||||||
bool m_isCached;
|
bool m_isCached;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TinyRendererObjectArray
|
struct EGLRendererObjectArray
|
||||||
{
|
{
|
||||||
btAlignedObjectArray<TinyRenderObjectData*> m_renderObjects;
|
btAlignedObjectArray<TinyRenderObjectData*> m_renderObjects;
|
||||||
int m_objectUniqueId;
|
int m_objectUniqueId;
|
||||||
@@ -78,7 +78,7 @@ struct TinyRendererObjectArray
|
|||||||
btTransform m_worldTransform;
|
btTransform m_worldTransform;
|
||||||
btVector3 m_localScaling;
|
btVector3 m_localScaling;
|
||||||
|
|
||||||
TinyRendererObjectArray()
|
EGLRendererObjectArray()
|
||||||
{
|
{
|
||||||
m_worldTransform.setIdentity();
|
m_worldTransform.setIdentity();
|
||||||
m_localScaling.setValue(1, 1, 1);
|
m_localScaling.setValue(1, 1, 1);
|
||||||
@@ -96,7 +96,7 @@ struct EGLRendererVisualShapeConverterInternalData
|
|||||||
btAlignedObjectArray<unsigned char> m_rgbaPixelBuffer1;
|
btAlignedObjectArray<unsigned char> m_rgbaPixelBuffer1;
|
||||||
btAlignedObjectArray<float> m_depthBuffer1;
|
btAlignedObjectArray<float> m_depthBuffer1;
|
||||||
|
|
||||||
btHashMap<btHashInt, TinyRendererObjectArray*> m_swRenderInstances;
|
btHashMap<btHashInt, EGLRendererObjectArray*> m_swRenderInstances;
|
||||||
|
|
||||||
btAlignedObjectArray<b3VisualShapeData> m_visualShapes;
|
btAlignedObjectArray<b3VisualShapeData> m_visualShapes;
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ struct EGLRendererVisualShapeConverterInternalData
|
|||||||
int m_swWidth;
|
int m_swWidth;
|
||||||
int m_swHeight;
|
int m_swHeight;
|
||||||
TGAImage m_rgbColorBuffer;
|
TGAImage m_rgbColorBuffer;
|
||||||
b3AlignedObjectArray<MyTexture2> m_textures;
|
b3AlignedObjectArray<MyTexture3> m_textures;
|
||||||
b3AlignedObjectArray<float> m_depthBuffer;
|
b3AlignedObjectArray<float> m_depthBuffer;
|
||||||
b3AlignedObjectArray<float> m_shadowBuffer;
|
b3AlignedObjectArray<float> m_shadowBuffer;
|
||||||
b3AlignedObjectArray<int> m_segmentationMaskBuffer;
|
b3AlignedObjectArray<int> m_segmentationMaskBuffer;
|
||||||
@@ -262,7 +262,7 @@ void EGLRendererVisualShapeConverter::setLightSpecularCoeff(float specularCoeff)
|
|||||||
}
|
}
|
||||||
|
|
||||||
///todo: merge into single file with TinyRendererVisualShapeConverter
|
///todo: merge into single file with TinyRendererVisualShapeConverter
|
||||||
static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfPathPrefix, const btTransform& visualTransform, btAlignedObjectArray<GLInstanceVertex>& verticesOut, btAlignedObjectArray<int>& indicesOut, btAlignedObjectArray<MyTexture2>& texturesOut, b3VisualShapeData& visualShapeOut)
|
static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfPathPrefix, const btTransform& visualTransform, btAlignedObjectArray<GLInstanceVertex>& verticesOut, btAlignedObjectArray<int>& indicesOut, btAlignedObjectArray<MyTexture3>& texturesOut, b3VisualShapeData& visualShapeOut)
|
||||||
{
|
{
|
||||||
visualShapeOut.m_visualGeometryType = visual->m_geometry.m_type;
|
visualShapeOut.m_visualGeometryType = visual->m_geometry.m_type;
|
||||||
visualShapeOut.m_dimensions[0] = 0;
|
visualShapeOut.m_dimensions[0] = 0;
|
||||||
@@ -406,7 +406,7 @@ static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfP
|
|||||||
{
|
{
|
||||||
if (meshData.m_textureImage1)
|
if (meshData.m_textureImage1)
|
||||||
{
|
{
|
||||||
MyTexture2 texData;
|
MyTexture3 texData;
|
||||||
texData.m_width = meshData.m_textureWidth;
|
texData.m_width = meshData.m_textureWidth;
|
||||||
texData.m_height = meshData.m_textureHeight;
|
texData.m_height = meshData.m_textureHeight;
|
||||||
texData.textureData1 = meshData.m_textureImage1;
|
texData.textureData1 = meshData.m_textureImage1;
|
||||||
@@ -523,7 +523,7 @@ static void convertURDFToVisualShape2(const UrdfShape* visual, const char* urdfP
|
|||||||
} // case mesh
|
} // case mesh
|
||||||
|
|
||||||
case URDF_GEOM_PLANE:
|
case URDF_GEOM_PLANE:
|
||||||
// TODO: plane in tiny renderer
|
// TODO: plane in egl renderer
|
||||||
// TODO: export visualShapeOut for external render
|
// TODO: export visualShapeOut for external render
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -647,7 +647,7 @@ void EGLRendererVisualShapeConverter::convertVisualShapes(
|
|||||||
|
|
||||||
for (int v1 = 0; v1 < cnt; v1++)
|
for (int v1 = 0; v1 < cnt; v1++)
|
||||||
{
|
{
|
||||||
btAlignedObjectArray<MyTexture2> textures;
|
btAlignedObjectArray<MyTexture3> textures;
|
||||||
btAlignedObjectArray<GLInstanceVertex> vertices;
|
btAlignedObjectArray<GLInstanceVertex> vertices;
|
||||||
btAlignedObjectArray<int> indices;
|
btAlignedObjectArray<int> indices;
|
||||||
btTransform startTrans;
|
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)
|
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];
|
visualsPtr = m_data->m_swRenderInstances[collisionObjectUniqueId];
|
||||||
|
|
||||||
btAssert(visualsPtr);
|
btAssert(visualsPtr);
|
||||||
TinyRendererObjectArray* visuals = *visualsPtr;
|
EGLRendererObjectArray* visuals = *visualsPtr;
|
||||||
visuals->m_objectUniqueId = bodyUniqueId;
|
visuals->m_objectUniqueId = bodyUniqueId;
|
||||||
visuals->m_linkIndex = linkIndex;
|
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++)
|
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)
|
if (ptrptr && *ptrptr)
|
||||||
{
|
{
|
||||||
float rgba[4] = {(float)rgbaColor[0], (float)rgbaColor[1], (float)rgbaColor[2], (float)rgbaColor[3]};
|
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))
|
if ((bodyUniqueId == visuals->m_objectUniqueId) && (linkIndex == visuals->m_linkIndex))
|
||||||
{
|
{
|
||||||
for (int q = 0; q < visuals->m_renderObjects.size(); q++)
|
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)
|
void EGLRendererVisualShapeConverter::removeVisualShape(int collisionObjectUniqueId)
|
||||||
{
|
{
|
||||||
TinyRendererObjectArray** ptrptr = m_data->m_swRenderInstances[collisionObjectUniqueId];
|
EGLRendererObjectArray** ptrptr = m_data->m_swRenderInstances[collisionObjectUniqueId];
|
||||||
if (ptrptr && *ptrptr)
|
if (ptrptr && *ptrptr)
|
||||||
{
|
{
|
||||||
TinyRendererObjectArray* ptr = *ptrptr;
|
EGLRendererObjectArray* ptr = *ptrptr;
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
for (int o = 0; o < ptr->m_renderObjects.size(); o++)
|
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++)
|
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)
|
if (ptrptr && *ptrptr)
|
||||||
{
|
{
|
||||||
TinyRendererObjectArray* ptr = *ptrptr;
|
EGLRendererObjectArray* ptr = *ptrptr;
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
for (int o = 0; o < ptr->m_renderObjects.size(); o++)
|
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++)
|
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)
|
if (0 == visualArrayPtr)
|
||||||
continue; //can this ever happen?
|
continue; //can this ever happen?
|
||||||
TinyRendererObjectArray* visualArray = *visualArrayPtr;
|
EGLRendererObjectArray* visualArray = *visualArrayPtr;
|
||||||
|
|
||||||
if (visualArray->m_objectUniqueId == objectUniqueId && visualArray->m_linkIndex == jointIndex)
|
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)
|
int EGLRendererVisualShapeConverter::registerTexture(unsigned char* texels, int width, int height)
|
||||||
{
|
{
|
||||||
MyTexture2 texData;
|
MyTexture3 texData;
|
||||||
texData.m_width = width;
|
texData.m_width = width;
|
||||||
texData.m_height = height;
|
texData.m_height = height;
|
||||||
texData.textureData1 = texels;
|
texData.textureData1 = texels;
|
||||||
@@ -1212,10 +1212,10 @@ int EGLRendererVisualShapeConverter::loadTextureFile(const char* filename)
|
|||||||
|
|
||||||
void EGLRendererVisualShapeConverter::syncTransform(int collisionObjectUniqueId, const btTransform& worldTransform, const btVector3& localScaling)
|
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)
|
if (renderObjPtr)
|
||||||
{
|
{
|
||||||
TinyRendererObjectArray* renderObj = *renderObjPtr;
|
EGLRendererObjectArray* renderObj = *renderObjPtr;
|
||||||
renderObj->m_worldTransform = worldTransform;
|
renderObj->m_worldTransform = worldTransform;
|
||||||
renderObj->m_localScaling = localScaling;
|
renderObj->m_localScaling = localScaling;
|
||||||
if (renderObj->m_graphicsInstanceId >= 0)
|
if (renderObj->m_graphicsInstanceId >= 0)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ project ("pybullet_eglRendererPlugin")
|
|||||||
|
|
||||||
if os.is("Windows") then
|
if os.is("Windows") then
|
||||||
files {"../../../OpenGLWindow/Win32OpenGLWindow.cpp",
|
files {"../../../OpenGLWindow/Win32OpenGLWindow.cpp",
|
||||||
"../../../OpenGLWindow/Win32GLWindow.cpp",}
|
"../../../OpenGLWindow/Win32Window.cpp",}
|
||||||
|
|
||||||
end
|
end
|
||||||
if os.is("MacOSX") then
|
if os.is("MacOSX") then
|
||||||
@@ -53,6 +53,7 @@ project ("pybullet_eglRendererPlugin")
|
|||||||
"../../../ThirdPartyLibs/Wavefront/tiny_obj_loader.h",
|
"../../../ThirdPartyLibs/Wavefront/tiny_obj_loader.h",
|
||||||
"../../../ThirdPartyLibs/stb_image/stb_image.cpp",
|
"../../../ThirdPartyLibs/stb_image/stb_image.cpp",
|
||||||
"../../../ThirdPartyLibs/stb_image/stb_image.h",
|
"../../../ThirdPartyLibs/stb_image/stb_image.h",
|
||||||
|
"../../../ThirdPartyLibs/stb_image/stb_image_write.cpp",
|
||||||
"../../../ThirdPartyLibs/tinyxml2/tinyxml2.cpp",
|
"../../../ThirdPartyLibs/tinyxml2/tinyxml2.cpp",
|
||||||
"../../../ThirdPartyLibs/tinyxml2/tinyxml2.h",
|
"../../../ThirdPartyLibs/tinyxml2/tinyxml2.h",
|
||||||
"../../../OpenGLWindow/SimpleCamera.cpp",
|
"../../../OpenGLWindow/SimpleCamera.cpp",
|
||||||
|
|||||||
Reference in New Issue
Block a user