在Cocos2d-x上获取支持的GPU

时间:2014-12-17 04:22:30

标签: opengl-es cocos2d-x

我试图获取运行游戏的设备支持哪些GPU,以便为该GPU使用正确的纹理压缩(我不知道这是否是执行此操作的最佳方法,我可以接受任何建议:))

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,没有当前上下文(每个线程记录一次)

是否有其他方法可以获取当前设备支持的哪些GPU?

1 个答案:

答案 0 :(得分:0)

你快到了。

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

您不需要调用gatherGPUInfo(),因为它是从Director :: setOpenGLView自动调用的。

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

您可以从主线程中的任何位置调用supportsPVRTC()和supportsATITC()而不出现GL错误,但是您应该在Cocos2d-x初始化(setOpenGLView)之后调用它。