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


Урок 18 по OpenGL. Квадратирование - часть 2


 

GLfloat LightAmbient[]=  { 0.5f, 0.5f, 0.5f, 1.0f };       // Фоновое значение света

GLfloat LightDiffuse[]=  { 1.0f, 1.0f, 1.0f, 1.0f };       // Значение рассеянного света

GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f };       // Позиция источника

 

GLuint filter;                                 // Какой фильтр использовать

GLuint texture[3];                             // Место для 3-х текстур

GLuint object=0;                               // Какой объект рисовать ( НОВОЕ )

 

LRESULT       CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);       // Объявление WndProc

 

Ок. Теперь обратимся к InitGL(). Мы собираемся добавить 3 строчки кода, для инициализации нашего квадратичного объекта. Добавьте эти 3 строки после инициализации освещения (light1), но до строки return true. Первая строка инициализирует квадратичный объект и создает указатель на то место в памяти, где он будет содержаться. Если он не может быть создан, то будет возвращен 0. Вторая строка кода создает плавные нормали на квадратичном объекте, поэтому освещение будет выглядеть хорошо. Другое возможное значение - GL_NONE и GL_FLAT. Наконец, мы включим текстурирование на нашем квадратичном объекте.

       quadratic=gluNewQuadric();     // Создаем указатель на квадратичный объект ( НОВОЕ )

       gluQuadricNormals(quadratic, GLU_SMOOTH); // Создаем плавные нормали ( НОВОЕ )

       gluQuadricTexture(quadratic, GL_TRUE);    // Создаем координаты текстуры ( НОВОЕ )

Теперь я решил оставить куб в этом уроке, так, чтобы вы смогли увидеть, как текстура отображается на квадратичном объекте. Я решил поместить куб в отдельную функцию, поэтому, когда мы напишем функцию рисования, она станет намного проще. Все узнают этот код.

GLvoid glDrawCube()              // Рисование куба

{

       glBegin(GL_QUADS);               // Начинаем рисовать четырехугольники

       // Передняя сторона

       glNormal3f( 0.0f, 0.0f, 1.0f);   // Нормаль вперед

       glTexCoord2f(0.0f, 0.0f);

       glVertex3f(-1.0f, -1.0f,  1.0f); // Низ Лево на текстуре и четырехугольнике




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



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