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


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



 

glMatrixMode(GL_MODELVIEW); // Выбор матрицы просмотра модели

 

glLoadIdentity(); // Сброс матрицы просмотра модели

}


Если Вы используете код урока 1, замените его на код ниже. Я добавил этот код для загрузки  нашей текстуры и включения смешивания для наших частиц.


int InitGL(GLvoid)       // Все начальные настройки OpenGL здесь

{

 

if (!LoadGLTextures()) // Переход на процедуру загрузки текстуры

 

{

   

return FALSE;        // Если текстура не загружена возвращаем FALSE

 

}


Мы разрешаем плавное затенение, очищаем фон черным цветом, запрещаем тест глубины, разрешаем смешивание и наложение текстуры. После разрешения наложения текстуры мы выбираем нашу текстуру частицы.


  glShadeModel(GL_SMOOTH);    // Разрешить плавное затенение

  glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Черный фон

  glClearDepth(1.0f);         // Установка буфера глубины

  glDisable(GL_DEPTH_TEST);   // Запрещение теста глубины

  glEnable(GL_BLEND);         // Разрешаем смешивание

 

glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Тип смешивания

  // Улучшенные вычисления перспективы

 

glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);

 

glHint(GL_POINT_SMOOTH_HINT,GL_NICEST);  // Улучшенные точечное смешение

 

glEnable(GL_TEXTURE_2D);                 // Разрешение наложения текстуры

 

glBindTexture(GL_TEXTURE_2D,texture[0]); // Выбор нашей текстуры


В коде ниже инициализируется каждая из частиц. Вначале мы активизируем каждую частицу. Если частица - не активна, то она не будет появляться на экране, независимо оттого, сколько жизни у нее осталось.


После того, как мы сделали частицу активной, мы даем ей жизнь. Я сомневаюсь, что тот способ, с помощью которого я задаю жизнь, и угасание частицы, это самый лучший способ, но повторюсь еще раз, что это отлично работает! Полная жизнь - 1.0f. Это также дает частице полную яркость.


for (loop=0;loop<MAX_PARTICLES;loop++) // Инициализация всех частиц

{

 

particle[loop].active=true; // Сделать все частицы активными

 

particle[loop].life=1.0f;   // Сделать все частицы с полной жизнью




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



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