Я пишу программу на Win API С++ пользуясь Visual C++ 6.0. Рисую пол, три дерева и модель 3D, но 3D модель машины (порше) у меня не выводиться как надо. Машина в центре поля выводиться абсолютно белым цветом без раскраски ее как и должно быть, которая храниться в файле машины и в файле ее материалов obj, mtl. Но у меня есть программа на Glut- я тоже вывожу машину в центре экрана- машина выводиться. Почему в Glut программе машина прорисовываеться цветная, как и была нарисована в 3D Studio Max, а в моей Win API программе- глюк. Так же добавлю, я раньше до этого возился с моделью, и она у меня не отображалась как следует, пока я в Glut программу не добавил свет над моделью. В Win API я тоже добавил свет- но машина белая, видно только ее очертания, вся она залита белым цветом. Я пробывал менять параметры света (диффуцию-интенсивность, позицию источника), но все зря. Кто знает, подскажите. Вот код: | Код | GLMmodel* pmodel = NULL; Init() { char* name = 0; name = "data/porsche.obj"; pmodel = glmReadOBJ(name); if (!pmodel) exit(0); glmReadMTL(pmodel ,"porsche.mtl"); glmWeld(pmodel,0); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); }
Draw() { //----------------------------------------------------------- glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0); glEnable(GL_LIGHT1);
GLfloat light_diffuse[] = {0.1f, 0.1f, 0.1f, 0.1f}; GLfloat light_position0[] = { 15.0f, 25.0f, 5.0f, 15.0f }; GLfloat light_position1[] = { -15.0f, -25.0f, 15.0f, 15.0f }; glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_POSITION, light_position0); glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT1, GL_POSITION, light_position1); glEnable (GL_DEPTH_TEST); glEnable (GL_COLOR_MATERIAL);
//------------------------------------------------------------ //------------------------------------------------------------
glPushMatrix(); glDisable(GL_TEXTURE_2D);
glScalef(0.4,0.4,0.4); glTranslatef(0.0,0.29,0.0); glRotatef(0.0, 0.0 ,1.0, 0.0); glmDraw(pmodel, GLM_SMOOTH|GLM_MATERIAL|GLM_COLOR); glEnable(GL_TEXTURE_2D); glPopMatrix();
//-------------------------------------------------------------- }
|
|