Od skora krenuo ozbiljnije da ucim ogl, pa me je deo za ucitavanje textura naterao da napisem jednu f-ju koja radi sledece: Uzima neki broj i posle vraca najblizi broj koji je stepen od 2. Npr za brojeve od 9 do 15 to ce biti 16, za brojeve od 17 do 31 to ce biti 32 itd... Voleo bih da vidim kako bi neko od vas ovo resio, evo f-je koju sam ja napisao:
Kod:
unsigned int get_power_of_two(unsigned int number)
{
if ((number&(number-1)) == 0) //Ovo proverava dal je broj vec stepen od 2
{
return number;
}
else
{
const int len = sizeof(int)*8;
bool number_bits[len]; //pravi se array za bitove od kojih se broj sastoji
for (int n = 0; n< len; n++)
{
number_bits[n] = 0;
}
//Ovaj deo cita uneti broj i u array smesta 1 ako ili 0 tamo gde treba
//Vazno je reci da se brojevi postavljaju od nazad zbog lakseg pronalazenja stepena 2
int counter = 0;
while (number!=0)
{
number_bits[len-1-counter] = number%2;
number/=2;
counter++;
}
Ovde se trazi u array-u gde je prva jedinica
int i;
for (i=0; i < len;i++)
{
if (number_bits[i] == 1)
break;
}
//Na kraju dobijamo broj koji je stepen od 2
return (unsigned int)pow(2, len-i);
}
}
Ne znam jel svima jasna ovo moja "metoda", ako nije pojasnicu, ali bih voleo da vidim kako bi neko drugi to uradio, jer sam siguran da postoji optimiozvanija i kraca resenja, ali me moje neznanje sputava da ih upotrebim