Наткнулся на профайлер для приложений под DX9-11. Возможно кому окажется полезен. Есть некоторые баги, но с ними можно жить :-).
http://busyray.com/dxprof/index.html
среда, 12 мая 2010 г.
воскресенье, 25 апреля 2010 г.
Visual Leak Detector for Visual C++ 2008/2010
Поиск утечек памяти порой очень непростая задача, а стандартная CRT функциональность для их поиска (Memory Leak Detection Enabling) часто не дает полезной информации. Из бесплатных средств я нашел для Visual C++ только Visual Leak Detector.
Основные его плюсы:
* Поиск утечек памяти и в сторонних библиотеках
* Вывод стека программы для каждой утечки памяти с указанием имени файла и номера строки
Но VLD к сожалению не поддерживал 64-битные приложения и Visual Studio 2010.
Я добавил поддержку 64-битных приложений и Visual Studio 2010, но автор VLD, Dan Moulding, не ответил на мои письма и решил самостоятельно выпустить версию 2.0 на новом сайте http://vld.codeplex.com/ с Wiki и баг трекером. Пользуйтесь :-).
понедельник, 22 марта 2010 г.
Подсчет ссылок в D3D8 и D3D9
Казалось бы что может быть сложного, на AddRef() увеличиваем кол-во ссылок, в Release() уменьшаем. Но в Diretct3D 8 и 9, как обычно, не все так просто и чтобы создать полноценный Direct3D Wrapper необходимо это все учитывать, иначе некоторые игры начнут с ни падать.
Вот некоторые особенности:
Вот некоторые особенности:
- Автоматически созданные IDirect3DDevice9 ресурсы (BackBuffer, автоматически созданный depth-stencil surface, основной SwapChain) нельзя удалить, т.е. Release() можно вызывать хоть до бесконечности он будет возвращать кол-во ссылок 0 и не удалит ресурс.
- Само устройство не увеличивает кол-во ссылок на автоматически созданные ресурсы.
- Пока ресурс забинджен в устройство (с помощью SetTexture, SetRenderTarget или SetDepthStencilSurface) его нельзя удалить, при попытке удалить его счетчик ссылок не будет опускать ниже 0. После того устройство освободит ресурс если кол-во ссылок ресурса равно нулю он будет удален.
- У текстуры и её поверхностей общий счетчик ссылок.
воскресенье, 22 ноября 2009 г.
Переход с Direct3D9 на Direct3D9Ex
Была необходимость воспользоваться Shared ресурсами в D3D9 под Vist'ой/Win 7, для этого решили переписать приложение чтобы оно вместо интерфейса IDirect3DDevice9 стало использовать IDirect3DDevice9Ex. Казалось бы что может быть проще, у IDirect3DDevice9Ex родительский интерфейс IDirect3DDevice9.
Но как всегда всплыли некоторые подводные камни:
Под D3D9Ex не поддерживаются Pool Managed для ресурсов, поэтому пришлось их все перевести в Pool Default. Так как ресурсы в Pool Default можно лочить только установить Usage Dynamic, пришлось его установить у соответствующих ресурсов.
Может кому будет интересен или даже полезен этот опыт.
Но как всегда всплыли некоторые подводные камни:
Под D3D9Ex не поддерживаются Pool Managed для ресурсов, поэтому пришлось их все перевести в Pool Default. Так как ресурсы в Pool Default можно лочить только установить Usage Dynamic, пришлось его установить у соответствующих ресурсов.
Так как для Managed ресурсов LockRect всегда возвращал Pitch равный ширине поверхности в байтах, т.е. строки не выравниваются, а строки в динамических ресурсах в Pool Default наоборот всегда выравниваются до следующего значения кратно степени двойки. Поэтому пришлось переписать места где текстуры заливались одним memcpy без учета Pitch, так чтобы они корректно работали с выравненными строками.
Выяснилось ещё для Volume текстур в Pool Default в LockBox есть баг в Direct3D9 и Direct3D9Ex, он напрочь игнорирует параметры Front, Back и всегда лочит весь объем полностью. Для Volume текстур в Pool Managed все работает правильно в Direct3D9. Переписали код чтоб обновляли содержимое объема всегда полностью.
Может кому будет интересен или даже полезен этот опыт.
пятница, 20 ноября 2009 г.
Direct3D9 GPU Hacks
Наткнулся на очень полезную страницу со всеми хаками придуманными ATI и NVidia для Direct3D 9.
http://aras-p.info/texts/D3D9GPUHacks.html
http://aras-p.info/texts/D3D9GPUHacks.html
пятница, 21 августа 2009 г.
Упрощение отладки в Visual Studio - autoexp.dat
Собрал/написал самые полезные для меня визуализаторы: Boost (для самых популярных классов) и TinyXML. А также там добавлены коды ошибок Direct3D.
Для установки, следует заменить файл в "%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\" файлом из архива.
Ссылки по теме:
- Best tools noone uses: autoexp.dat
- autoexp.dat for STLPort
- autoexp.dat for LUA
- Writing custom visualizers for Visual Studio 2005
Update: для Visual Studio 2012 теперь можно установить extension со всеми визуализаторами перечисленными выше и даже больше http://bit.ly/Mn73hE
пятница, 26 июня 2009 г.
iZ3D монитор в России
Вот и приехали мониторы. Можно приобрести у нас в офисе или прямо на сайте http://shop.neurok.ru/ (сайт пока к сожалению в плане дизайна ещё не доделан). В комплекте 3-ое очков, если надо можно докупить в офисе еще какое то количество.
Цена: 555$.
Гарантия: 1 год.
Цена: 555$.
Гарантия: 1 год.
Подписаться на:
Сообщения (Atom)