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


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


{

 int Status=FALSE;                        // Индикатор состояния

 

 AUX_RGBImageRec *TextureImage[1];        // Создать место для текстуры

 

 memset(TextureImage,0,sizeof(void *)*1); // Установить указатель в NULL

 

Наша текстура загружается кодом, который будет загружать нашу картинку частицы и конвертировать ее в текстуру с линейным фильтром.


if (TextureImage[0]=LoadBMP("Data/Particle.bmp")) // Загрузка текстуры частицы

{

  Status=TRUE; // Задать статус в TRUE

 

glGenTextures(1, &texture[0]); // Создать одну текстуру


 

glBindTexture(GL_TEXTURE_2D, texture[0]);

 

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

 

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

 

glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY,

    0, GL_RGB,   GL_UNSIGNED_BYTE, TextureImage[0]->data);

}


if (TextureImage[0])            // Если текстура существует

{

 if (TextureImage[0]->data)     // Если изображение текстуры существует

 {

   free(TextureImage[0]->data); // Освобождение памяти изображения текстуры

 }

 free(TextureImage[0]);         // Освобождение памяти под структуру

}

 

  return Status;        // Возвращаем статус

}


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


// Изменение размеров и инициализация окна GL

GLvoid ReSizeGLScene(GLsizei width, GLsizei height)

{

 

if (height==0) // Предотвращение деления на ноль, если окно слишком мало

 

{

   

height=1; // Сделать высоту равной единице

 

}


 

//Сброс текущей области вывода и перспективных преобразований
  glViewport(0, 0, width, height);


 

glMatrixMode(GL_PROJECTION); // Выбор матрицы проекций

 

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


 

// Вычисление соотношения геометрических размеров для окна

 

gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,200.0f); // ( МОДИФИЦИРОВАНО )




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



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