2014-12-17 5 views
0

Я пытаюсь получить, какой GPU поддерживается в устройстве, которое запускает игру, чтобы использовать правильное сжатие текстуры для этого GPU (я не знаю, является ли это лучшим способом чтобы сделать это, я открыт для любых предложений :))Поддерживаемые графические процессоры Obtaing на Cocos2d-x

std::string GPUInfo::getTC() 
{ 
    std::string TC; 
    cocos2d::Configuration::getInstance()->gatherGPUInfo(); 
    if(cocos2d::Configuration::getInstance()->supportsPVRTC()) 
     TC = ".pvr.ccz"; 
    else if(cocos2d::Configuration::getInstance()->supportsATITC()) 
     TC = ".dds"; 
    else 
     TC = ".png"; 
    CCLOG("Texture compression format -> %s", TC.c_str()); 
    return TC; 
} 

Но это держит вызывает эту ошибку:

вызов OpenGL ES API, без текущего контекста (регистрируется один раз для каждого потока)

Есть ли другой способ получить В текущем устройстве поддерживаются графические процессоры?

ответ

0

Вы почти находитесь.

cocos2d::Configuration::getInstance()->gatherGPUInfo(); 

Вам не нужно называть gatherGPUInfo(), поскольку она автоматически вызывается из директора :: setOpenGLView.

https://github.com/cocos2d/cocos2d-x/blob/fe4b34fcc3b6bb312bd66ca5b520630651575bc3/cocos/base/CCDirector.cpp#L361-L369

Вы можете вызвать supportsPVRTC() и supportsATITC() без ошибок GL из любого места в основном потоке, но вы должны назвать его после Cocos2d-х инициализации (setOpenGLView).

Смежные вопросы