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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2013, 11:13   #1
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию OpenGL skybox

Здравствуйте, не могу сделать SkyBox'ы, они отображаются криво
Вот исходник, бинарник не прикладываю, т.к. делфи индюком заразился
Изображения
Тип файла: jpg Скриншот.JPG (57.9 Кб, 175 просмотров)
Вложения
Тип файла: rar scr.rar (345.2 Кб, 34 просмотров)
cashmail вне форума Ответить с цитированием
Старый 17.07.2013, 09:34   #2
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию

Мне кажется, дело не в самом SkyBox'e, а в текстурах, которые на него наложили. Посмотрите внимательней, возможно не те текстуры к плоскостям указали. Такое бывает
stalker1995s вне форума Ответить с цитированием
Старый 17.07.2013, 14:51   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Всё нормально с текстурами, просто в коде куча мелких косяков, которые есть следствие копипасты и перестановок циферок после неё. Вот норм код. А вообще все эти единички надо вычислять по формуле.
Код:
Procedure SkyBox(Pos: TVector);
begin
 glDisable(GL_DEPTH_TEST);
  glColor4f(1, 1, 1, 1);
  glPushMatrix;
  with Pos do
    glTranslatef(X, Y, Z);

 glBindTexture(GL_TEXTURE_2D,sky_4);
  glBegin(GL_QUADS);
    glTexCoord2f(1, 1); glVertex3f( -1, 1, 1);
    glTexCoord2f(1, 0); glVertex3f(-1, 1, -1);
    glTexCoord2f(0, 0); glVertex3f( 1,  1, -1);
    glTexCoord2f(0, 1); glVertex3f(1, 1, 1);
 glEnd;

 glBindTexture(GL_TEXTURE_2D,sky_3);
 glBegin(GL_QUADS);
    glTexCoord2f(1, 1); glVertex3f(-1,  -1, 1);
    glTexCoord2f(1, 0); glVertex3f(-1,  -1, -1);
    glTexCoord2f(0, 0); glVertex3f(-1, 1, -1);
    glTexCoord2f(0, 1); glVertex3f(-1, 1, 1);
  glEnd;
  glBindTexture(GL_TEXTURE_2D,sky_5);
  glBegin(GL_QUADS);
    glTexCoord2f(1, 1); glVertex3f(-1,  1,  1);
    glTexCoord2f(1, 0); glVertex3f( 1,  1,  1);
    glTexCoord2f(0, 0); glVertex3f( 1, -1,  1);
    glTexCoord2f(0, 1); glVertex3f(-1, -1,  1);
  glEnd;

  glBindTexture(GL_TEXTURE_2D,sky_1);
  glBegin(GL_QUADS);
    glTexCoord2f(1, 1); glVertex3f( 1,  1,  1);
    glTexCoord2f(1, 0); glVertex3f( 1,  1, -1);
    glTexCoord2f(0, 0); glVertex3f( 1, -1, -1);
    glTexCoord2f(0, 1); glVertex3f( 1, -1,  1);
  glEnd;

  glBindTexture(GL_TEXTURE_2D,sky_2);
  glBegin(GL_QUADS);
    glTexCoord2f(1, 1);  glVertex3f(1,  -1,  1);
    glTexCoord2f(1, 0);  glVertex3f(1,  -1, -1);
    glTexCoord2f(0, 0);  glVertex3f(- 1,  -1, -1);
    glTexCoord2f(0, 1);  glVertex3f(- 1,  -1,  1);

  glEnd;
  glPopMatrix;
  glEnable(GL_DEPTH_TEST);
end;
phomm вне форума Ответить с цитированием
Старый 17.07.2013, 21:40   #4
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

phomm, спасибо тебе большое
cashmail вне форума Ответить с цитированием
Старый 18.07.2013, 18:59   #5
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Слушай, а почему на границах skybox линии? Как их можно убрать?
P.S. сделал еще один пост, т.к. в тот не мог загрузить скрин
Изображения
Тип файла: jpg скрин.JPG (53.6 Кб, 135 просмотров)
cashmail вне форума Ответить с цитированием
Старый 20.07.2013, 12:54   #6
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

cashmail, вот решение проблемы: http://www.opengl.org/registry/specs...s_cube_map.txt
Develop вне форума Ответить с цитированием
Старый 20.07.2013, 15:55   #7
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Develop, так и не понял, там все на английском, переводчик перевел все криво и не одного примера нет
cashmail вне форума Ответить с цитированием
Старый 20.07.2013, 16:04   #8
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

Что там непонятного ? Швы на границах получаются от того, что фильтрация текстур для каждой стороны кубмапы производится отдельно. Расширение исправляет эту проблему:
Цитата:
This often has the effect of producing seams or
other discontinuities in the sampled texture.

This extension allows implementations to take samples from adjacent
cube map faces, providing the ability to create seamless cube maps.
Develop вне форума Ответить с цитированием
Старый 20.07.2013, 16:20   #9
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Извини за вопрос, но как это исправить?
cashmail вне форума Ответить с цитированием
Старый 20.07.2013, 16:38   #10
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

В сети примеров валом, погугли по запросу "seamless cube map opengl".
Вот первые несколько ссылок:
http://www.opengl.org/wiki/Cubemap_Texture
http://research.ncl.ac.uk/game/maste...%20Mapping.pdf

а вообще посмотрел еще раз на твой скрин, возможно проблема в самой кубмапе или в настройках фильтрации или попробуй GL_CLAMP_TO_EDGE.
Develop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
opengl alhon Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.10.2013 15:02
Qt+OpenGL. Qt "не видит" функции OpenGL EnterFix Qt и кроссплатформенное программирование С/С++ 4 29.01.2013 18:59
OpenGL + C++ GuardianSpirit Visual C++ 1 12.01.2013 07:45
Создание SkyBox stalker1995s Общие вопросы Delphi 0 11.07.2012 18:17
OpenGL Angel of death Помощь студентам 7 22.06.2010 22:58