Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / FAQ / Как избавиться от видимых граней в SkyBox

Как избавиться от видимых граней в SkyBox

Очень часто на форуме возникает вопрос:"почему видны грани SkyBox", ответ на него очень простой и заключается в нескольких строках кода:

// при использовании OpenGL

// ** GL_CLAMP_TO_EDGE впервые появился в OpenGL версии 1.2, в некоторых случаях при использовании
// ** GL_CLAMP результат будет таким же как и с GL_CLAMP_TO_EDGE;
// ** для использования GL_CLAMP_TO_EDGE следует подключить заголовочный файл glext.h( http://oss.sgi.com/projects/ogl-sample/ABI/glext.h )
// ** или использовать след. define:
// ** #define GL_CLAMP_TO_EDGE                  0x812F

// ** перед эти вызывается glBindTexture для текстуры SkyBox
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );

// при использовании Direct3D
d3dDevice->SetSamplerState( textureLevel, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER );
d3dDevice->SetSamplerState( textureLevel, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER );

Хочу заметить что D3DTADDRESS_BORDER иногда как-то старанно работает (у меня на TNT2 работало нормально, а на GF4MX криво), поэтому лучше использовать D3DTADDRESS_CLAMP.

27 сентября 2006


Обновление: 18 июня 2007

2001—2018 © GameDev.ru — Разработка игр