Open waphumanoid opened 9 years ago
Hi. I'm facing a problem with adding twenty or so Shapes like this:
ViewController.mm: - (ShapesRenderer *)createShapesRenderer:(const Planet *)planet { ShapesRenderer* shapesRenderer = new ShapesRenderer(); ... for (int j=0; j < 20; j++) { Shape* sphere = new EllipsoidShape(new Geodetic3D(Angle::fromDegrees(0), Angle::fromDegrees(0), -1), RELATIVE_TO_GROUND, Vector3D(50, 50, 50), 8, 0, false, false, Color::fromRGBA(0.7f, 0.7f, 0.7f, 0.5f)); shapesRenderer->addShape(sphere); } ...
in the createShapesRenderer() method from G3MiOSDemo (and in my own project as well). It crashes in
Context.cpp: #ifdef C_CODE bool MyDataSortPredicate(const OrderedRenderable* or1, const OrderedRenderable* or2) { return ( or1->squaredDistanceFromEye() >= or2->squaredDistanceFromEye() ); <-- Thread 1: EXC_BAD_ACCESS ... } #endif ... std::vector<OrderedRenderable*>* G3MRenderContext::getSortedOrderedRenderables() const { if (_orderedRenderables != NULL) { #ifdef C_CODE std::sort(_orderedRenderables->begin(), _orderedRenderables->end(), MyDataSortPredicate); #endif #ifdef JAVA_CODE java.util.Collections.sort( _orderedRenderables, new java.util.Comparator<OrderedRenderable>() { @Override public int compare(final OrderedRenderable or1, final OrderedRenderable or2) { return Double.compare(or2.squaredDistanceFromEye(), or1.squaredDistanceFromEye()); } }); #endif } return _orderedRenderables; }
However 15 or less shapes works great. Thank you.
Hello @waphumanoid,
EXC_BAD_ACCESS in this line can only means a Dangling-pointer or a NULL.
Can you check if this is the case?
Hi. I'm facing a problem with adding twenty or so Shapes like this:
in the createShapesRenderer() method from G3MiOSDemo (and in my own project as well). It crashes in
However 15 or less shapes works great. Thank you.