Opengl es 在Cocos2d-x上获得支持的GPU

Opengl es 在Cocos2d-x上获得支持的GPU,opengl-es,cocos2d-x,Opengl Es,Cocos2d X,我正在尝试获取运行游戏的设备支持哪个GPU,以便为该GPU使用正确的纹理压缩。我不知道这是否是最好的方法,我愿意接受任何建议: std::string GPUInfo::getTC() { std::string TC; cocos2d::Configuration::getInstance()->gatherGPUInfo(); if(cocos2d::Configuration::getInstance()->supportsPVRTC())

我正在尝试获取运行游戏的设备支持哪个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?

您就快到了

cocos2d::Configuration::getInstance()->gatherGPUInfo();
您不需要调用gatherGPUInfo,因为它是从Director::setOpenGLView自动调用的

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