|  OpenGL на C/C++|  29.07.2013 / 22:59 |  |  | NaruTrey    Пользователь 
  Сейчас: Offline 
 Имя: Андрей K.Откуда: Тольятти
 Регистрация: 15.01.2010
 
 | Никто не подскажет, как можно производительней отобразить параллелепипед на голом OpenGL?__________________
 
   Чёрные усы кричает этот свисть | 
 |  31.07.2013 / 13:50 |  |  | NaruTrey    Пользователь 
  Сейчас: Offline 
 Имя: Андрей K.Откуда: Тольятти
 Регистрация: 15.01.2010
 
 | __________________У меня есть такой код, но явно его можно сократить. void drawParallelepiped(float x, float y, float z, float width, float height, float depth) {    float mw2 = -width / 2, mh2 = -height / 2, md2 = -depth / 2, w2 = width / 2, h2 = height / 2, d2 = depth / 2;    glPushMatrix();    glTranslatef(x, y, z);    // Лицевая грань    glBegin(GL_QUADS);    glNormal3f(0, 0, -1);    glVertex3f(mw2, mh2, md2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(mw2, h2, md2);    glEnd();    // Тыльная грань    glBegin(GL_QUADS);    glNormal3f(0, 0, 1);    glVertex3f(w2, h2, d2);    glVertex3f(mw2, h2, d2);    glVertex3f(mw2, mh2, d2);    glVertex3f(w2, mh2, d2);    glEnd();    // Левая грань    glBegin(GL_QUADS);    glNormal3f(-1, 0, 0);    glVertex3f(mw2, mh2, d2);    glVertex3f(mw2, mh2, md2);    glVertex3f(mw2, h2, md2);    glVertex3f(mw2, h2, d2);    glEnd();    // Правая грань    glBegin(GL_QUADS);    glNormal3f(1, 0, 0);    glVertex3f(w2, mh2, d2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(w2, h2, d2);    glEnd();    // Нижняя грань    glBegin(GL_QUADS);    glNormal3f(0, 1, 0);    glVertex3f(mw2, h2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(w2, h2, d2);    glVertex3f(mw2, h2, d2);    glEnd();    // Верхняя грань    glBegin(GL_QUADS);    glNormal3f(0, -1, 0);    glVertex3f(mw2, mh2, md2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, mh2, d2);    glVertex3f(mw2, mh2, d2);    glEnd();    glPopMatrix();}
   Чёрные усы кричает этот свисть | 
 |  31.07.2013 / 18:53 |  |  | NaruTrey    Пользователь 
  Сейчас: Offline 
 Имя: Андрей K.Откуда: Тольятти
 Регистрация: 15.01.2010
 
 | __________________Оказывается, лишние glBegin()  и glEnd()  можно убирать. Теперь лучше...  void draw3DParallelepiped(float x, float y, float z, float width, float height, float depth) {    float mw2 = -width / 2, mh2 = -height / 2, md2 = -depth / 2, w2 = width / 2, h2 = height / 2, d2 = depth / 2;    glPushMatrix();    glTranslatef(x, y, z);    //Лицевая грань    glBegin(GL_QUADS);    glNormal3f(0, 0, -1);    glVertex3f(mw2, mh2, md2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(mw2, h2, md2);    //Тыльная грань    glNormal3f(0, 0, 1);    glVertex3f(w2, h2, d2);    glVertex3f(mw2, h2, d2);    glVertex3f(mw2, mh2, d2);    glVertex3f(w2, mh2, d2);    //Левая грань    glNormal3f(-1, 0, 0);    glVertex3f(mw2, mh2, d2);    glVertex3f(mw2, mh2, md2);    glVertex3f(mw2, h2, md2);    glVertex3f(mw2, h2, d2);    //Правая грань    glNormal3f(1, 0, 0);    glVertex3f(w2, mh2, d2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(w2, h2, d2);    //Нижняя грань    glNormal3f(0, 1, 0);    glVertex3f(mw2, h2, md2);    glVertex3f(w2, h2, md2);    glVertex3f(w2, h2, d2);    glVertex3f(mw2, h2, d2);    //Верхняя грань    glNormal3f(0, -1, 0);    glVertex3f(mw2, mh2, md2);    glVertex3f(w2, mh2, md2);    glVertex3f(w2, mh2, d2);    glVertex3f(mw2, mh2, d2);    glEnd();    glPopMatrix();}
   Чёрные усы кричает этот свисть | 
 |  31.07.2013 / 21:27 |  |  | NaruTrey    Пользователь 
  Сейчас: Offline 
 Имя: Андрей K.Откуда: Тольятти
 Регистрация: 15.01.2010
 
 | Оказывается, что для этой роли лучше подойдут шейдеры.__________________
 
   Чёрные усы кричает этот свисть | 
 |  28.09.2014 / 21:05 |  |  | NeiroNext    Пользователь 
  Сейчас: Offline 
 Имя: МихаилОткуда: Херсон
 Регистрация: 16.01.2010
 
 | Ни у кого нет шаблона из книги с первого поста, ссылка что у книге уже не действительна, и еще настолько удобно использовать OpenGL с С++ ?
 | 
    Всего сообщений: 25 Фильтровать сообщения 
  Поиск по теме 
  Файлы топика (2) 
 |