السلام عليكم و رحمة الله و بركاته
اود ان اقوم برسم منزلين و شجرة و شمس و اضيف اضاءة و كساء و في مرحلة متقدمة لدي كود روبوت اود ان اضيفه للمشهد و اقوم بعمل animation و navigation له
ساقوم بالخطوات اللي اعرفها و لانني ما زلت في بدايتي مع مكتبة الرسم هذه ستواجهني العديد من المشاكل اللتي لا اعرف حلها لذا ساقوم بوضعها هنا في هذا الموضوع
خطوتي الاولى الان هي ان ارسم منزلا .. وضعت القيم و لكني لا اعلم كيف سيبدو منظره لانه لم يظهر اي شي في الشاشة فهي سوداء.. هل من مساعدة من الخبراء؟
#include"gl/glut.h"
void square()
{
glBegin(GL_QUADS);
glVertex2f(-2, -1.5);
glVertex2f(-2, 2.5);
glVertex2f(2, 2.5);
glVertex2f(2, -1.5);
glEnd();
}
void triangle()
{
glBegin(GL_TRIANGLES);
glVertex2f(-2, -1.5);
glVertex2f(-2, 2.5);
glVertex2f(2, 2.5);
glEnd();
}
void myDisplay(void)
{
glEnable(GL_DEPTH_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT||GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glTranslatef(0.0f, 0.0f, -10.0f);
glPushMatrix(); //front of house
glColor3f(1,0,0);
glRotatef(20.0f,0.0f, -1.0f, 0.0f);
square();
glPopMatrix();
glPushMatrix();
glTranslatef(4.0f, 0.0f, 0.0f);//side of house
glScalef(0.0f, 1.0f, 0.0f);
glColor3f(0,0,1);
square();
glPopMatrix();
glPushMatrix(); //front of roof
glColor3f(1,1,0);
glRotatef(20.0f,0.0f, -1.0f, 0.0f);
triangle();
glPopMatrix();
glPushMatrix();
glTranslatef(4.0f, 0.0f, 0.0f);//side of roof
glScalef(0.0f, 1.0f, 0.0f);
glColor3f(0,0,1);
triangle();
glPopMatrix();
glPopMatrix();
glFlush();
glutSwapBuffers(); // bring backbuffer to foreground
}
void myReshape(int width, int height)
{
glViewport(0, 0, (GLint) width, (GLint) height); /* Update the viewport size. */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(54.0f,(GLfloat)width/(GLfloat)height,1.0f,1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// the main windows entry point
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL Robot");
glutDisplayFunc(myDisplay);
glutReshapeFunc(myReshape);
glutMainLoop();
return 0;
}