Не удается установить буфер глубины?

#iphone #objective-c #cocos2d-iphone

#iPhone #objective-c #cocos2d-iphone

Вопрос:

В какой-то документации cocos2d-iphone мне сказали поместить это

 // IMPORTANT: Call this function at the very beginning, before running your 1st scene
// Create a depth buffer of 24 bits
// These means that openGL z-order will be taken into account
[[CCDirector sharedDirector] setDepthBufferFormat:kDepthBuffer16];
  

Чтобы разрешить некоторые 3D-эффекты в моей игре с действиями. Однако по какой setDepthBufferFormat -то причине ни kDepthBuffer16 один из них не распознается XCode. Есть идеи?

Ответ №1:

К сожалению, документация cocos2d частично устарела. Метод, о котором вы упомянули, больше не существует. Вместо этого вам нужно будет изменить строку в методе делегирования приложения applicationDidFinishLaunching, который инициализирует EAGLView. Существует вариант «viewWithFrame», который принимает дополнительные параметры depthFormat:

 // Create an EAGLView with a RGB8 color buffer, and a depth buffer of 24-bits
EAGLView* glView = [EAGLView viewWithFrame:[window bounds]
                               pixelFormat:kCCTexture2DPixelFormat_RGBA8888
                               depthFormat:GL_DEPTH_COMPONENT16_OES
                        preserveBackbuffer:NO
                                sharegroup:nil
                             multiSampling:NO
                           numberOfSamples:0];
  

Комментарии:

1. Ах. Спасибо. Кстати, вы знаете, почему, когда я запускаю 3D-действие, фон становится черным?

2. Может быть из-за отсутствия буфера глубины. Возможно, вам также придется включить тестирование глубины: [[CCDirector sharedDirector] setDepthTest: ДА];