Я пока разбираю твои коды, ничего нового не добавлял - мне нужно понять то что уже есть. Я думаю еще 1-2 дня нужно.
Так вот там в кодах инициализируется первичный буфер dsound - он вроде нигде не нужен.
|
Я первичный буфер убрал.
А также ещё пачка репортов:
* Макросы IS_SHORT_EVEN и IS_SHORT_NOT_EVEN по моему ты местами перепутал, ведь num & 1 даёт true для нечёта.
* Также ты используешь abs в расчётах с float, но abs округляет до целого числа - нужно использовать fabs из cmath.
* Еще я заметил что в Sound::getSamples теперь currentSample сначала преобразовывается к целому числу и затем определяется чёт/нечёт, это я так понял сделано специально для того чтобы плавающий pitch не сдвигал выборку на один семпл в противоположные каналы?
В общем будет неплохо если поделишься статьями и материалами (кроме msdn), которыми ты руководствовался когда все это делал, чтобы у меня был примерно такой же ход мыслей для лучшего понимания.
Но код слиииишком сложный и навороченный, хотя может ты и разберешься.
|
Да помню этот двиг, я его даже хотел вместо твоего заюзать
Коды глянул - как будто чел прогал на шарпе, эти методы размером больше экрана прямо инлайном вбивались. Оформление отвратительное.
Тут конечно каждому свое, может кто то любит чтобы за него всякие AStyle'ы делали.
Я же привык все сам форматировать.
То что касается твоего двига: целесообразно уже С++11 использовать, а также std - в 11 там всё отлично. И поменьше юзать расширения msvs - ведь потом проблемы с переносом будут (но и не делать всё универсально - в msvs есть свои плюшки). Я взял за основу конвенцию кодирования idSoftware и доработал под свои требования - стараюсь её придерживаться -
вот она (ru/en, en - обычно свежее).
Посмотрим как дальше пойдет, если двиг будет перспективный (какие у тебя планы то? блиц3д в том числе?) то можно в репозиторий залить.