2013-02-25 6 views
1

Я создал программу для отображения выложенного куба на белом холсте, но я не уверен, как многократный куб в let say? 10 x 10. Другой вопрос: как я могу создать тот же куб в 3D-пространстве?Расширение куба и помещение его в 3D-пространство

Вот мой код:

void drawScene(void) 
{ 
    int i, j; 

    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(0.0, 0.0, 0.0); 
    glLoadIdentity(); 

    glTranslatef(0.0, 0.0, -25.0); 
    glutWireCube(5.0); // Box. 
    glColor3f(1.0, 0.0, 0.0); 

    for(i=5; i<5; i++) 
    { 
     for (j = -5; j < 5; j++) 
     { 

      glPushMatrix(); 
      glTranslatef(i*5, j*5, -35.0); 
      glColor3f(1.0, 1.0, 0); 
      glutSolidCube(5.0); 
      glColor3f(0.0, 0.0, 1.0); 
      glutWireCube(5.0); 
      glPopMatrix(); 
     } 
    } 

glFlush(); 

} 

void setup(void) 
{ 
    glClearColor(1.0, 1.0, 1.0, 0.0); 
} 

void resize (int w, int h) 
{ 
    glViewport(0, 0, (GLsizei)w, (GLsizei)h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glFrustum(-10.0, 10.0, -10.0, 10.0, 10.0, 100.0); 
    glMatrixMode(GL_MODELVIEW); 
} 

void KeyInput(unsigned char key, int x, int y) 
{ 
    switch(key) 
    { 
    case 27: 
     exit(0); 
    break; 
    default: 
    break; 
    } 
} 


int main(int argc, char **argv) 
{ 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
    glutInitWindowSize(500,500); /* Size of the Program Window */ 
    glutInitWindowPosition(100,100); 
    glutCreateWindow("Box.cpp"); 
    setup(); 
    glutDisplayFunc(drawScene); 
    glutReshapeFunc(resize); 
    glutKeyboardFunc(KeyInput); 
    glutMainLoop(); 

    return 0; 
} 
+0

Определить «3D-пространство» – Kaslai

+0

3D-пространство. В основном я хочу, чтобы иметь возможность передвигаться по кубу, чтобы увидеть все 6 лиц. – Angelrawzz

+0

Ах. Ну, так как вы используете OpenGL 1.x, вы должны посмотреть на использование 'gluLookAt()', который является удобной функцией для преобразования мира. – Kaslai

ответ

0

Библиотеки гл имеет много полезных лакомые кусочки, как gluLookAt(xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup);

Вы можете масштабировать вещи, используя glScaled(factor)/glScalef(factor)

Вы должны копаться Google для некоторого GL 1.X.

+0

Благодарим вас за эту информацию. Я сейчас в процессе реализации функции gluLookAt, и, похоже, все идет хорошо. Что касается Scalef, который отлично работал с небольшими проблемами. – Angelrawzz

+0

Библиотека GLU устарела и несовместима с современным OpenGL. Просто FYI – datenwolf

+0

@ datenwolf Он уже использует GL, используя устаревший конвейер, поэтому немного GLU не повредит. Если вы когда-либо планируете серьезно заниматься 3D-программированием, вы должны узнать о программируемом конвейере, представленном в GL 2.X, Angelrawzz – Kaslai