Monday, November 20, 2006

dsound note

Как менять громкость звука в DirectSound линейно, а не экспоненциально? Очень просто!

void SetVolume(double vol)
{
double dbVol = 20 * log10(clamp(vol, 1e-3f, 1.0f));
pSndBuffer->SetVolume(dbVol * 100);
}

Таким образом, меняя vol от 0 до 1, получаем линейное изменение громкости звука.

Thursday, November 09, 2006

functional style

Люблю функциональный стиль кода и рекурсию. Надоели мне for/while циклы. Ну их :)

Короче, вот как у меня создаётся гео-сфера. Всего несколько строчек кода.


//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
MeshCPtr SmoothGeoSphere(GLuint iter, MeshCPtr in)
{
 if (!iter)
  return in;
 return SmoothGeoSpehre(--iter, SphereNormalize(Subdivide(in)));
}

//--------------------------------------------------------------------------------------
MeshCPtr CreateGeoSphere(GLuint iterations)
{
 return SmoothGeoSphere(iterations, CreateIcosahedron());
}

Thursday, November 02, 2006

MotionX release

Вот и наступил момент, когда я вполне удовлетворен качеством библиотеки MotionX. Она опробывана, так сказать, в боевых условиях, то есть в коммерческом проекте. И все мелкие косяки и глюки, которые в ней были, я вроде устранил.
Библиотека обладает достаточной функциональностью, но пока не все, что я задумал, реализовано.
Но есть всё, что необходимо для внедрения в игру скелетной покадровой анимации, в том числе и экспортёр из 3dsmax.
Но главное - положить начало публичной жизни библиотеки, дальше будет проще. Я думаю.
Осталось написать небольшую демку c использыванием glut и sdl.
И написать туториал по экспорту анимации. И документацию...
Вот в этом вся проблема. Придется писать много текста на английском. А в этом я никогда не практиковался. Хотя читать могу абсолютно любые тексты.
Ну ладно. Главное начать, что-то делать в этом направлении. Возможно излагать свои мысли на английском не так уж и сложно, как это кажеться.

И еще надо определиться с выбором лицензии. Сначала подумывал об LGPL, но слишком уж сильные ограничения она накладывает. Не хочу никого ни в чём ограничивать. Надо что-нибудь либеральнее.