Форум программистов
Реклама:
Интернет Контроль Сервер: российский межсетевой экран.
Контроль трафика, контент-фильтр, почта, антивирус, VPN, прокси-, веб- и jabber-сервер. Сертификат ФСТЭК
Регистрация  |  Повторная активизация e-mail  |  Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Новости клуба  |  alarforum@yandex.ru

Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!


Вернуться   Форум программистов > Технологии > Gamedev - cоздание и обсуждение игр

Ответ
 
Опции темы
Старый 20.05.2011, 20:22   #1
_PROGRAMM_
Профессионал
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Адрес: Российская Федерация
Сообщений: 1,607
Репутация: 239
По умолчанию 3D куб. OpenGL

Добрый вечер. В разделе "помощь студентам" мне так никто и не помог. Поэтому решил написать здесь. В общем, я рисую куб, т. е. 6 граней. Но выходит у меня не то, что нужно. Когда добавляю glTranslate, я получаю черный экран. Не понимаю почему. Двумерные рисунки получаются отлично. Добавил в код glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); и получил полный бред. Я уже "головой об стену бьюсь". Не знаю, что мне делать. Надеюсь на вашу помощь. Прикрепил исходник.


P.S .Хочу нарисовать (это моя цель) свою комнату, хотя знаю, что сложно, да вот никак не получается куб
Вложения
Тип файла: zip Kub.zip (200.0 Кб, 35 просмотров)
__________________

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

Блог
_PROGRAMM_ вне форума   Ответить с цитированием
Старый 20.05.2011, 22:29   #2
alexBlack
Новичок
Профессионал
 
Регистрация: 12.10.2007
Адрес: -
Сообщений: 1,204
Репутация: 920
По умолчанию

Добавьте

Код:

 TForm1 = class(TForm)
  protected
    procedure WMEraseBkgnd(var M : TWMEraseBkgnd); message WM_EraseBkgnd;

  end;

procedure TForm1.WMEraseBkgnd(var M : TWMEraseBkgnd);
begin
   M.Result := 1;
end;

И вынесите glRotatef из FormPaint в FormCreate. Получите рисунок куба, отсеченный передней и задней плоскостями.

//Я OpenGL знаю поверхностно, не обессудьте.
alexBlack вне форума   Ответить с цитированием
Старый 21.05.2011, 08:12   #3
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
Репутация: 35
По умолчанию

Вот держи. Там где изменил код поставил комменты.
Вложения
Тип файла: rar Kub.rar (175.6 Кб, 119 просмотров)
RomiKon вне форума   Ответить с цитированием
Старый 21.05.2011, 08:20   #4
_PROGRAMM_
Профессионал
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Адрес: Российская Федерация
Сообщений: 1,607
Репутация: 239
По умолчанию

Спасибо.
А что ваш код делает? И все же в уроках нет данной процедуры. Они просто берут и рисуют квадраты. Хотелось бы узнать, как у них это работает?
Вынес я glRotatef в Create. Это мне ничего не дало. Еще я хочу поворачивать куб при каждом событии таймера.
Вот здесь как-то без махинаций получается же сделать. У кого есть возможность, дайте свой исходник куба без лишних строк.

Заранее благодарю.

--Add
RomiKon, сейчас посмотрю ваш пост. Вы опубликовали сообщение во время моего письма, поэтому я не заметил. Извиняюсь.
__________________

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

Блог
_PROGRAMM_ вне форума   Ответить с цитированием
Старый 21.05.2011, 08:31   #5
_PROGRAMM_
Профессионал
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Адрес: Российская Федерация
Сообщений: 1,607
Репутация: 239
По умолчанию

RomiKon, Спасибо вам. Прейду после похода и изучу полностью ваши изменения. Пока возник только один вопрос: Почему, заменив -3 на -1 в строке glTranslatef(0, 0, -3);, получатся не то, что хотелось бы. Я думаю, что в этом виновата glFrustum. Так ли это?
__________________

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

Блог

Последний раз редактировалось _PROGRAMM_; 21.05.2011 в 08:33.
_PROGRAMM_ вне форума   Ответить с цитированием
Старый 21.05.2011, 11:46   #6
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
Репутация: 35
По умолчанию

Понимаешь вся сцена отсекается пирамидой видимости. Стандартно пирамида видимости очень маленькая. Поэтому нужно заново задать плоскости ограничивающие основания пирамиды, это делается в процедуре glFrustum(есть ещё несколько процедур устанавливающих отсечение, но вам пока рано знать о них), последние два параметра этой функции и задают растояние до ближней и дальней плоскости отсечение. Всё что вы рисуете перед ближнее или за дальней плоскостью отсечения неотрисовывается, поэтому при изменении значений параметров glTranslatef вы видите куб не полностью=)
RomiKon вне форума   Ответить с цитированием
Старый 21.05.2011, 14:45   #7
_PROGRAMM_
Профессионал
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Адрес: Российская Федерация
Сообщений: 1,607
Репутация: 239
По умолчанию

Спасибо. Еще вопрос. Думаю он будет в тему. Почему при изменении строки с glFrustum(-3, 3, -3, 3, 1, 10); на ,допустим, glFrustum(-3, 3, -3, 3,5 , 10);
, не сдвигая ось координат (glTranslatef()), рисунка не видно?
__________________

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

Блог
_PROGRAMM_ вне форума   Ответить с цитированием
Старый 21.05.2011, 19:41   #8
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
Репутация: 35
По умолчанию

Я уже говорил что предпоследний параметр функции glFrustum задаёт расстояние до ближней плоскости отсечения, тогда всё что нарисуется ближе чем этот параметр видно не будет. Да кстати если интересно то прочитай книжку Краснов OpenGL в Delphi. Отличная вещь ориентированная прежде всего на практику. Тебе будет очень полезно.
RomiKon вне форума   Ответить с цитированием
Старый 22.05.2011, 09:23   #9
_PROGRAMM_
Профессионал
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Адрес: Российская Федерация
Сообщений: 1,607
Репутация: 239
По умолчанию

Цитата:
Да кстати если интересно то прочитай книжку Краснов OpenGL в Delphi.
Я по ней и учусь.
Цитата:
Я уже говорил что предпоследний параметр функции glFrustum задаёт расстояние до ближней плоскости отсечения, тогда всё что нарисуется ближе чем этот параметр видно не будет
Сейчас, немного поразмыслив, я сообразил. Спасибо. Теперь все понятно.
__________________

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

Блог

Последний раз редактировалось _PROGRAMM_; 22.05.2011 в 09:25.
_PROGRAMM_ вне форума   Ответить с цитированием
Старый 09.06.2011, 20:53   #10
Марк Сунгатулин
Новичок
 
Регистрация: 09.06.2011
Сообщений: 1
Репутация: 10
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
Добрый вечер. В разделе "помощь студентам" мне так никто и не помог. Поэтому решил написать здесь. В общем, я рисую куб, т. е. 6 граней. Но выходит у меня не то, что нужно. Когда добавляю glTranslate, я получаю черный экран. Не понимаю почему. Двумерные рисунки получаются отлично. Добавил в код glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); и получил полный бред. Я уже "головой об стену бьюсь". Не знаю, что мне делать. Надеюсь на вашу помощь. Прикрепил исходник.


P.S .Хочу нарисовать (это моя цель) свою комнату, хотя знаю, что сложно, да вот никак не получается куб
Я не знаю, но есть еще одна проблема, для страдающих эпилепсией этот куб будем последним в их жизни
У меня вообщем быстро моргает белым цветом.
Марк Сунгатулин вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
куб в дельфи Руслан05 Помощь студентам 2 01.04.2011 16:08
Куб в 3D Dixmix20120 Помощь студентам 1 19.12.2010 12:37
Куб в OPENGL maxflint Мультимедиа в Delphi 10 19.04.2010 15:19
OpenGL в delphi. Как перемещать куб с помощью мыши Xawk Мультимедиа в Delphi 2 08.12.2009 13:20
магический куб Diller Помощь студентам 3 09.09.2007 11:35




11:53.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.

Пеллетные котлы Emtas


Emtas.net продажа и монтаж отопительного оборудования
Корпусная мебель оптом и под дизайн проект


Низкие цены, высокое качество.
RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru