Посетили еще на этой неделе семинар Бьярн Страуструп "Виртуозное программирование". Так как в докладе ничего особенно нового не было основной целью похода было посмотреть на легенду :-).
Организаторы оплошали, у них какие то там были проблемы с аудиотрией и по этому доклад перенесли на 8:30, а регистрация должна была начаться в 7:30. Мы собрались с силами, приехали к 7:30, но оргонизаторы приехали намного позже. Хотя Страуструп был ровно в 7:30. В итоге семинар начался на час позже, при этом организаторы где-то полчаса в начале распинались какие они хорошие что смогли найти новую аудитории для семинара. Страуструпу пришлось выкинуть часть доклада по C++0x, самое интересное для меня. Предлагали всем в пятницу приехать на эту часть доклада, но мы уже не выбрались.
Выдавали наушники с синхронным переводом, но все было понятно и без него. Переводчик честно сразу предупредил что ничего не понимает в C++, чтобы даже не надеялись :-).
Фотографии с семинара
Отзыв с предыдущего его семинара от bishop-it.ru
воскресенье, 17 октября 2010 г.
суббота, 26 июня 2010 г.
Сюжет о нас на канале Вести 24
"Технопарк": будущее за трехмерными компьютерными дисплеями (iZ3D)
http://bit.ly/aCoHkc
http://bit.ly/aCoHkc
среда, 12 мая 2010 г.
Профайлер для DX приложений
Наткнулся на профайлер для приложений под DX9-11. Возможно кому окажется полезен. Есть некоторые баги, но с ними можно жить :-).
http://busyray.com/dxprof/index.html
http://busyray.com/dxprof/index.html
воскресенье, 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
Подписаться на:
Комментарии (Atom)
