Как определить, нужно ли мне использовать UHD, HD или SD в Cocos2d-x - PullRequest
0 голосов
/ 02 апреля 2019

Я создаю платформерскую видеоигру в Cocos2d-x C ++.

То, что я хочу сделать, действительно легко, но все, что я нашел в Интернете, либо не работает, либо для другого языка программирования, такого как Objective-C.

У меня есть 1 таблица спрайтов с 3 версиями: одна UHD , другая HD и последняя SD .

Мне просто нужно знать, как сообщить программе, какие ресурсы она должна использовать.

Я пытался использовать это:

Director::getInstance()->getVisibleSize();
auto winSize = Director::getInstance()->getWinSize(); //gets window size (pretty obvious, isn't it?)

if (&winSize == "2048x1536") { //The device uses UHD graphics
    FileUtils::getInstance()->addSearchResolutionsOrder("UHD");
} else if (&winSize == "1024x768") { //The device uses HD graphics
    FileUtils::getInstance()->addSearchResolutionsOrder("HD");
} else { //any other type of resolution -> asumes it is SD
    FileUtils::getInstance()->addSearchResolutionsOrder("SD");
}

Но он просто возвращает адрес памяти объекта winSize, поэтому с ним невозможно работать. Мне просто нужно посмотреть, какое разрешение экрана, а затем установить нужный тип графики.

Извините, если это действительно глупый вопрос, я новичок в C ++ и ничего не нашел по этому вопросу.

Спасибо

1 Ответ

1 голос
/ 02 апреля 2019

const Size & getWinSize () const

возвращает размер представления OpenGL в точках.

из https://cocos2d -x.org / reference / native-cpp / V3.0alpha0 / d7 / df3 / classcocos2d_1_1_director.html # aa841a76e9016679ff92bc053e1a41718

с размером: https://cocos2d -x.org / reference / native-cpp / V3.0alpha0 / d0 / d8c / classcocos2d_1_1_size.html

Так, я думаю, что-то вроде этого?

auto winSize = Director::getInstance()->getWinSize(); //gets window size (pretty obvious, isn't it?)

if (winSize.width == 2048 and winSize.height == 1536 ) { 
    //The device uses HDR graphics
}
...