эта вещь сводит меня с ума!
Я экспериментирую с Cocos2d (0.99.5) и Box2D, и я успешно создал сцену со слоем и двумя телами (фактически парой прыгающих шаров). Теперь я хотел бы включить DebugDrawing, чтобы я мог точно видеть, что происходит. Учтите, что все работает с отключенным DebugDrawing.
Говоря о коде, в моем методе init у меня есть это:
m_debugDraw = new GLESDebugDraw(PTM_RATIO);
uint32 flags;
flags = 0;
flags += 1 * b2DebugDraw::e_shapeBit;
flags += 1 * b2DebugDraw::e_jointBit;
flags += 1 * b2DebugDraw::e_aabbBit;
flags += 1 * b2DebugDraw::e_pairBit;
flags += 1 * b2DebugDraw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
_world->SetDebugDraw(m_debugDraw);
Мой метод рисования следующий:
-(void)draw {
[super draw];
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
_world->DrawDebugData(); // <------ here comes the problem
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
}
Проблема в том, что когда программа достигает строки
_world->DrawDebugData();
исключение EXC_BAD_ACCESS в брошенном. Отладчик показывает ошибку здесь:
void b2World::DrawDebugData()
{
if (m_debugDraw == NULL)
{
return;
}
uint32 flags = m_debugDraw->GetFlags(); // <----- this is the row pointed by Xcode
if (flags & b2DebugDraw::e_shapeBit)
{
[...]
Ошибка, отображаемая в главном окне: «Поток 1: Программа получила сигнал:« EXC_BAD_ACCESS »». Это вывод, который я получаю:
GNU gdb 6.3.50-20050815 (версия Apple gdb-1515) (суббота, 8 января 00:31:48 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB - это бесплатное программное обеспечение, подпадающее под действие Стандартной общественной лицензии GNU, и вы
добро пожаловать изменить его и / или распространять его копии при определенных условиях.
Введите «show copying», чтобы увидеть условия.
На GDB нет абсолютно никаких гарантий. Для получения подробной информации введите «показать гарантию».
Эта GDB была настроена как "--host = x86_64-apple-darwin --target = arm-apple-darwin" .tty / dev / ttys000
целевой удаленный мобильный /tmp/.XcodeGDBRemote-191-40
Переключение на протокол remote-macosx
mem 0x1000 0x3fffffff кеш
mem 0x40000000 0xffffffff нет
mem 0x00000000 0x0fff нет
[Переключение на тему 11779]
[Переключение на тему 11779]
sharedlibrary apply-load-rules all
2011-03-03 22: 10: 36.477 MyApp [2738: 707] cocos2d: cocos2d v0.99.5
2011-03-03 22: 10: 36.529 MyApp [2738: 707] cocos2d: Использование типа директора: CCDirectorDisplayLink
2011-03-03 22: 10: 36.936 MyApp [2738: 707] cocos2d: версия ОС: 4.3 (0x04030000)
2011-03-03 22: 10: 36.943 MyApp [2738: 707] cocos2d: GL_VENDOR: Imagination Technologies
2011-03-03 22: 10: 36.949 MyApp [2738: 707] cocos2d: GL_RENDERER: PowerVR SGX 535
2011-03-03 22: 10: 36.956 MyApp [2738: 707] cocos2d: GL_VERSION: OpenGL ES-CM 1.1 IMGSGX535-58.1
2011-03-03 22: 10: 36.966 MyApp [2738: 707] cocos2d: GL_MAX_TEXTURE_SIZE: 2048
2011-03-03 22: 10: 36.973 MyApp [2738: 707] cocos2d: GL_MAX_MODELVIEW_STACK_DEPTH: 16
2011-03-03 22: 10: 36.979 MyApp [2738: 707] cocos2d: GL_MAX_SAMPLES: 4
2011-03-03 22: 10: 37.020 MyApp [2738: 707] cocos2d: GL поддерживает PVRTC: ДА
2011-03-03 22: 10: 37.026 MyApp [2738: 707] cocos2d: GL поддерживает текстуры BGRA8888: ДА
2011-03-03 22: 10: 37.033 MyApp [2738: 707] cocos2d: GL поддерживает текстуры NPOT: ДА
2011-03-03 22: 10: 37.039 MyApp [2738: 707] cocos2d: GL поддерживает discard_framebuffer: ДА
2011-03-03 22: 10: 37.060 MyApp [2738: 707] cocos2d: скомпилировано с поддержкой NPOT: НЕТ
2011-03-03 22: 10: 37.066 MyApp [2738: 707] cocos2d: скомпилировано с поддержкой VBO в TextureAtlas: ДА
2011-03-03 22: 10: 37.072 MyApp [2738: 707] cocos2d: скомпилировано с преобразованием Affine Matrix в CCNode: ДА
2011-03-03 22: 10: 37.078 MyApp [2738: 707] cocos2d: скомпилировано с поддержкой профилирования: НЕТ
2011-03-03 22: 10: 44.375 MyApp [2738: 707] cocos2d: интервал кадров: 1
2011-03-03 22: 10: 44.420 MyApp [2738: 707] cocos2d: размер поверхности: 320x480
2011-03-03 22: 10: 44.654 MyApp [2738: 707] Получено предупреждение о памяти. Уровень = 1
2011-03-03 22: 10: 44.696 MyApp [2738: 707] cocos2d: разборка
"MenuBackGround.png",
"Star.png",
"fps_images.png"
)>
Текущий язык: авто; в настоящее время с ++
(ГБД)
Я пробовал поискать в Google и многое узнал об этой ошибке, но до сих пор не могу ее решить. Это происходит как на симуляторе, так и на iPhone. Кто-то в другом обсуждении (извините, потерял ссылку) отметил, что это может быть связано с компилятором или оптимизацией, поэтому я пробовал разные комбинации, переключаясь с LLVM на GCC на LLVM-GCC и устанавливая оптимизацию на разных уровнях, но безуспешно.
Может ли кто-нибудь указать мне правильное направление? Дайте мне знать, если потребуется дополнительная информация.
Спасибо вам всем,
Даниэле Салатти