Народный учебник по OpenGL


Урок 19. Машина моделирования частиц с использованием полосок из треугольников - часть 14



        particle[loop].xi=xspeed+float((rand()%60)-32.0f);//Скорость и направление по оси X

       

particle[loop].yi=yspeed+float((rand()%60)-30.0f);//Скорость и направление по оси Y

       

particle[loop].zi=float((rand()%60)-30.0f);       //Скорость и направление по оси Z


Наконец мы назначаем частице новый цвет. В переменной col содержится число от 0 до 11 (12 цветов). Мы используем эту переменную для извлечения красной, зеленой и синей яркостей из нашей таблицы цветов, которую мы сделали в начале программы. В первой строке ниже задается красная яркость (r) согласно значению красного, сохраненного в colors[col][0]. Поэтому, если бы col равен 0, красная яркость равна 1.0f. Зеленые и синие значения получаются таким же способом.


Если Вы не поняли, как я получил значение 1.0f для красной яркости, если col - 0, я объясню это немного более подробно. Смотрите в начало программы. Найдите строку: static GLfloat colors[12][3]. Запомните, что есть 12 групп по 3 числа. Первые три числа - красная яркость. Второе значение - зеленая яркость, и третье значение - синяя яркость. [0], [1] и [2] ниже являются 1-ым, 2-ым и 3-ьим значениями, которые я только что упомянул. Если col равен 0, то мы хотим взглянуть на первую группу. 11 – последняя группа (12-ый цвет).


        particle[loop].r=colors[col][0]; // Выбор красного из таблицы цветов

       

particle[loop].g=colors[col][1]; // Выбор зеленого из таблицы цветов

       

particle[loop].b=colors[col][2]; // Выбор синего из таблицы цветов

     

}


Строка ниже контролирует, насколько гравитация будет притягивать вверх. При помощи нажатия клавиши 8 на цифровой клавиатуре, мы увеличиваем переменную yg (y гравитация). Это вызовет притяжение вверх. Этот код расположен здесь, потому что это сделает нашу жизнь проще, гравитация будет назначена ко всем нашим частицам с помощью цикла. Если бы этот код был бы вне цикла, мы должны были бы создать другой цикл, чтобы проделать ту же самую работу, поэтому мы можем также сделать это прямо здесь.




Начало  Назад  Вперед



Книжный магазин