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

Фейерверки москва купить на сайте http://vsemsalut.ru. |

Урок 26. Реалистичное отражение с использование буфера шаблона и отсечения. - часть 3


 

Затем выделим массив для трех текстур и определим WndProc().

 

GLUquadricObj  *q;     // Квадратичный объект для рисования сферы мяча

GLfloat xrot = 0.0f;   // Вращение по Х

GLfloat yrot = 0.0f;   // Вращение по Y

GLfloat xrotspeed = 0.0f;// Скорость вращения по X

GLfloat yrotspeed = 0.0f;// Скорость вращения по Y

GLfloat zoom = -7.0f;  // Глубина сцены в экране

GLfloat height = 2.0f; // Высота мяча над полом

GLuint  texture[3];    // 3 Текстуры

      // Объявление WndProc

LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);     

 

Функции ReSizeGLScene() и LoadBMP() не меняются, так что я их обе пропускаю.

 

// Функция изменения размера и инициализации OpenGL-окна

GLvoid ReSizeGLScene(GLsizei width, GLsizei height)

// Функция загрузки растрового рисунка

AUX_RGBImageRec *LoadBMP(char *Filename)

 

Код, загружающий текстуру довольно стандартный. Вы могли пользоваться им не раз при изучении предыдущих статей. Мы создали массив для трех текстур, затем мы загружаем три рисунка и создаем три текстуры с линеарной фильтрацией из данных рисунков. Файлы с растровыми рисунками мы ищем в каталоге DATA.

 

int LoadGLTextures()    // Загрузка рисунков и создание текстур

{

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

    AUX_RGBImageRec *TextureImage[3];        // массив для текстур

    memset(TextureImage,0,sizeof(void *)*3); // Обнуление

    if ((TextureImage[0]=LoadBMP("Data/EnvWall.bmp")) && // Текстура пола             

    (TextureImage[1]=LoadBMP("Data/Ball.bmp")) &&        // Текстура света

    (TextureImage[2]=LoadBMP("Data/EnvRoll.bmp")))       // Текстура стены

    {  

      Status=TRUE;                      // Статус положительный

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

      for (int loop=0; loop<3; loop++)  // Цикл для 3 текстур

      {

        glBindTexture(GL_TEXTURE_2D, texture[loop]);

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




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



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