@byulent

Почему не раскрашиваются объекты?

Рисую объекты в OpenGL. Нужно раскрасить их с помощью glMaterialfv(). Так вот, я задаю разные свойства материала, но они раскрашиваются лишь в некоторых местах, а основная часть остаётся белой.

Вроде всё, что нужно, подключил:

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnable(GL_DEPTH_TEST);
//glDepthFunc(GL_LESS);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);


И свойства материала:

GLfloat ambcon [] = {1,0,0,1};
GLfloat diffcon [] = {1,0,0,1};
GLfloat speccon [] = {1,0,0,1};
GLfloat shincon = 0;

GLfloat ambsph [] = {1,1,0,1};
GLfloat diffsph [] = {1,1,0,1};
GLfloat specsph [] = {1,1,0,1};
GLfloat shinsph = 0;

GLfloat ambcyl [] = {0,0,1,1};
GLfloat diffcyl [] = {0,0,1,1};
GLfloat speccyl [] = {0,0,1,1};
GLfloat shincyl = 0;

glMaterialfv(GL_FRONT, GL_AMBIENT, ambcon);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffcon);
glMaterialfv(GL_FRONT, GL_SPECULAR, speccon);
glPushMatrix();
glTranslated(-0.2,-0.3,0);
glRotated(-60,1,0,0);
glutSolidCone(0.3,1, slices,stacks);
glPopMatrix();

glMaterialfv(GL_FRONT, GL_AMBIENT, ambsph);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffsph);
glMaterialfv(GL_FRONT, GL_SPECULAR, specsph);
glPushMatrix();
glTranslated(0.4,0,-1.1);
glRotated(-60,1,0,0);
glutSolidSphere(0.3, slices, stacks);
glPopMatrix();

glMaterialfv(GL_FRONT, GL_AMBIENT, ambcyl);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffcyl);
glMaterialfv(GL_FRONT, GL_SPECULAR, speccyl);
glPushMatrix();
glTranslated(0.7,-0.38,0);
glRotated(160,1,0,-1);
GLUquadricObj *quadric = gluNewQuadric();
GLUquadricObj *bottom = gluNewQuadric();
GLUquadricObj *top = gluNewQuadric();
//gluQuadricDrawStyle(quadric, GLU_FILL);
gluCylinder(quadric, 0.1, 0.1, 1.2, slices, stacks);
gluDisk (bottom, 0, 0.1, slices, stacks);
glTranslated(0,0,1.2);
gluDisk(top, 0, 0.1, slices, stacks);
glPopMatrix();


Но объекты всё равно остаются белыми!

wTxjr.png

Что с этим делать?
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы