Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 20:32   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию OpenGL. Пирамида

Добрый вечер уважаемые форумчане. Начал заниматься OpenGL. Я хочу нарисовать пирамиду (3D) и повернуть ее. Я написал небольшой код, но получается не пирамида, а непонятно что. Я закомментировал ViewPort, чтобы было лучше видно.
Код:
BeginPaint(DC, ps);
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
//glViewPort(0,0,Form1.Width,Form1.Height);
//glTranslatef(-1.5,0.0,-6.0);
glLoadIdentity();
glRotatef(20,0,1,0);

// Треугольник Перед
glBegin(GL_TRIANGLES);
glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,1,0);
glVertex3f(-1,-1,1);

glColor3f(0,0,1);
glVertex3f(1,-1,1);
//Треугольник Правая сторона

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,0,1);
glVertex3f(1,-1,1);

glColor3f(0,1,0);
glVertex3f(1,-1,-1);
glEnd;
//Треугольник Задняя сторона

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,1,0);
glVertex3f(1,-1,-1);

glColor3f(0,0,1);
glVertex3f(-1,-1,-1);
glEnd;
//Треугольник Левая сторона.

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,0,1);
glVertex3f(-1,-1,-1);

glColor3f(0,1,0);
glVertex3f(-1,-1,1);
glEnd;


glFlush;
SwapBuffers(DC);
EndPaint(DC, ps);

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 19.05.2011, 21:06   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Вот СкринШот.
Изображения
Тип файла: jpg Пирамида.jpg (43.4 Кб, 370 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 19.05.2011, 21:30   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Немного исправил код. У меня после рисования треугольников стоит несколько glEnd;

Код:
BeginPaint(DC, ps);
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
//glViewPort(0,0,Form1.Width,Form1.Height);
//glTranslatef(-1.5,0.0,-6.0);
glLoadIdentity();
glRotatef(20,0,1,0);

// Треугольник Перед
glBegin(GL_TRIANGLES);
glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,1,0);
glVertex3f(-1,-1,1);

glColor3f(0,0,1);
glVertex3f(1,-1,1);
//Треугольник Правая сторона

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,0,1);
glVertex3f(1,-1,1);

glColor3f(0,1,0);
glVertex3f(1,-1,-1);
//Треугольник Задняя сторона

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,1,0);
glVertex3f(1,-1,-1);

glColor3f(0,0,1);
glVertex3f(-1,-1,-1);
//Треугольник Левая сторона.

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,0,1);
glVertex3f(-1,-1,-1);

glColor3f(0,1,0);
glVertex3f(-1,-1,1);
glEnd;

glFlush;
SwapBuffers(DC);
EndPaint(DC, ps);
Но результат все равно не тот, который мне нужен.

P.S.Извините, за три поста подряд. Как блог получилось.
Изображения
Тип файла: jpg Другой результат.jpg (44.5 Кб, 337 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 19.05.2011 в 21:34.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.05.2011, 15:15   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Хотелось бы узнать. Так и должно быть?
Вот исходники на delphi. Не знаю уже куда податься.
-ADD

Может кто-то может нарисовать куб? Или я не в тот раздел попал.
Вложения
Тип файла: zip Исходники.zip (401.3 Кб, 32 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 20.05.2011 в 19:26.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 08.11.2011, 11:38   #5
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Вот пример пирамиды полигонами
Код:
// очистка буфера цвета и буфера глубины
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

 // трехмерность
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity;
 glTranslatef(0.0, 0.0, -8.0); // влево/вправо, вверх/вниз, назад/вперед
 glRotatef(AngleX, 1.0, 0.0, 0.0); // поворот на угол X
 glRotatef(AngleY, 0.0, 1.0, 0.0); // поворот на угол Y
 glRotatef(AngleZ, 0.0, 0.0, 1.0); // поворот на угол Z

 //нижняя сторона
glBegin(GL_POLYGON);
  glNormal3f(1.0, 0.0, 0.0);
  glVertex3f(-1.0,0.0,-1.0);
  glVertex3F(1.0,0.0,-1.0);
  glVertex3F(1.0,0.0,1.0);
  glVertex3F(-1.0,0.0,1.0);
glEnd;
 //1-ая боковая сторона
glBegin(GL_POLYGON);
  glNormal3f(0.0, 0.0, -1.0);
  glVertex3f(-1.0,0.0,-1.0);
  glVertex3F(-1.0,0.0,1.0);
  glVertex3F(0.0,1.5,0.0);
glEnd;
//2-ая боковая сторона
glBegin(GL_POLYGON);
  glNormal3f(0.0, -1.0, 0.0);
  glVertex3f(-1.0,0.0,-1.0);
  glVertex3F(1.0,0.0,-1.0);
  glVertex3F(0.0,1.5,0.0);
glEnd;
//3-я боковая сторона
glBegin(GL_POLYGON);
  glNormal3f(0.0, 1.0, 0.0);
  glVertex3f(1.0,0.0,1.0);
  glVertex3F(1.0,0.0,-1.0);
  glVertex3F(0.0,1.5,0.0);
glEnd;
//4-я боковая сторона
glBegin(GL_POLYGON);
  glNormal3f(0.0, 0.0, 1.0);
  glVertex3f(-1.0,0.0,1.0);
  glVertex3F(1.0,0.0,1.0);
  glVertex3F(0.0,1.5,0.0);
glEnd;

SwapBuffers(DC); // конец работы
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу «Пирамида». 4eri Помощь студентам 3 29.04.2010 21:53
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07
Как сделать, чтобы слово пирамида всегда писалось с Заглавной буквой asale Microsoft Office Word 3 22.01.2009 20:51
OpenGL Witaliy Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 01.05.2008 21:05