Кто знает, в чём может быть проблема:
Когда пишу gluPerspective (...); Сфера (доселе красная) почему-то крсится в сплошной белый цвет, без теней. На картинку не влияет ни один из параметров, передаваемых, только, если какой-то равен нулю, насколько я понял, функция просто не выполняется, как будто её и не было. Однако, если не вызывать её, с цветом всё нормально, но размеры сферы не меняются по мере их удаления от наблюдателя.
Код:
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
void CALLBACK resize (int width, int height)
{
glViewport (0, 0, width, height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho (-5, 5, -5, 5, 2, 12);
gluLookAt (0, 0, 5, 0, 0, 0, 0, 1, 0);
glMatrixMode (GL_MODELVIEW);
}
void CALLBACK display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
gluLookAt (0, 0, 6, 0, 0, 0, 0, 1, 0);
glTranslated (0, 0, -1);
glColor3d (1, 0, 0);
auxSolidSphere (1);
glPopMatrix();
auxSwapBuffers();
}
void main ()
{
float pos[4] = {3, 3, 3, 1};
float dir[3] = {-1, -1, -1};
GLfloat mat_specular[] = {1, 1, 1, 1};
auxInitPosition (50, 10, 400, 400);
auxInitDisplayMode (AUX_RGB | AUX_DEPTH | AUX_DOUBLE);
auxInitWindow ("Glaux Template");
auxIdleFunc (display);
auxReshapeFunc (resize);
// LoadGLTextures(); // Загрузка текстур
glEnable(GL_TEXTURE_2D); // Разрешение наложение текстуры
glEnable (GL_DEPTH_TEST);
glEnable (GL_COLOR_MATERIAL);
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glLightfv (GL_LIGHT0, GL_POSITION, pos);
glLightfv (GL_LIGHT0, GL_SPOT_DIRECTION, dir);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 128.0);
gluPerspective (45, 1, 0.1, 100);
auxMainLoop (display);
}