Кстати вот RTFM'ить каждый может, а вот ты пробовал сам использовать этот RegisterSoftwareDevice()? Этой функции нужно передать указатель на какую-то функцию инициализации устройства, при этом совершенно нигде не сказано что в этой функции должно происходить. Передаю NULL или указатель на функцию которая ничего не делает и возвращается ошибка "Not found".
P.S. Я тут нашел кое-какую инфу по интегрированным видюхам, вроде как они не могут сами делать процессинг вертексов, поэтому нужно врубать software vertex processing, но его можно врубить походу только создав софтварный девайс.
А>RTFM
А>Подскажу где:
А>
A>Возможно видюха не поддерживает Hardware rasterization или hardware vertex processing попробуй D3DDEVTYPE_REF и D3DCREATE_SOFTWARE_VERTEXPROCESSING, а вообще правильнее проверять что умеет адаптер (D3DCAPS9) прежде чем создавать устройство.
D3DDEVTYPE_REF пробовал еще раньше, работает, но тормоза жуткие, делать че-то нереально. Если делаешь D3DCREATE_SOFTWARE_VERTEXPROCESSING то типа говорит, что софтового девайса нету.
Всем привет.
Не знаю подходящий ли форум, но тем не менее.
Столкнулся с такой проблемой, что не знаю, как мне узнать поподробнее об ошибке которая у меня происходит при создании девайса Direct3D, т.е. при вызове функции CreateDevice(). HRESULT о многом не говорит, поэтому хотелось бы узнать, есть ли возможность получить подробное строковое описание ошибки? Когда я немного работал с COM, видел интерфейс IErrorInfo, но как его подцепить к D3D я не знаю.
Здравствуйте, Wallrunner, Вы писали:
W>Столкнулся с такой проблемой, что не знаю, как мне узнать поподробнее об ошибке которая у меня происходит при создании девайса Direct3D, т.е. при вызове функции CreateDevice(). HRESULT о многом не говорит, поэтому хотелось бы узнать, есть ли возможность получить подробное строковое описание ошибки? Когда я немного работал с COM, видел интерфейс IErrorInfo, но как его подцепить к D3D я не знаю.
Попробуйте так:
HRESULT hr;
hr = g_pD3D->CreateDevice(...);
const WCHAR * chErrorDesc;
chErrorDesc = DXGetErrorDescription9(hr);
printf("Reason: %S.\nApplication work finished with error. Press any key for exit...", chErrorDesc);
Есть еще DxgetErrorString9();
Now some men like the fishing
And some men like fowling
And some men like to hear
The cannonballs are roaring
Me — I like sleeping...
Спасибо, строку ошибки получить удалось, правда сказала она по-прежнему немного, а именно "Invalid call". Я так почитал в инете немного, вроде как это в основном связано с версией DX или с драйверами. Я подозреваю что виновата видюха. Дело в том что дома у меня Radeon 9600 и все пашет норм, а когда запускаю на работе, вот такая лажа происходит, а здесь видюха интегрированная, SiS 650.
Может кто знает другие причины, из-за которых происходит подобная ошибка?
Или может возможно получить более подробную информацию о причине ошибки.
МЪ>Попробуйте так:
МЪ>
МЪ>HRESULT hr;
МЪ>hr = g_pD3D->CreateDevice(...);
МЪ>const WCHAR * chErrorDesc;
МЪ>chErrorDesc = DXGetErrorDescription9(hr);
МЪ>printf("Reason: %S.\nApplication work finished with error. Press any key for exit...", chErrorDesc);
МЪ>
МЪ>Есть еще DxgetErrorString9();
Re[3]: Получение строки ошибки в DirectX
От:
Аноним
Дата:
14.12.06 07:53
Оценка:
Здравствуйте, Wallrunner, Вы писали:
W> Дело в том что дома у меня Radeon 9600 и все пашет норм, а когда запускаю на работе, вот такая лажа происходит, а здесь видюха интегрированная, SiS 650.
Ммм.. Ну ваще-то софтовым рендерингом че-то не очень хочется пользоваться честно говоря. Ведь видюха интегрированная не такая уж слабая, как можно подумать. По крайней мере Unreal Tournament (первый) она тянет без проблем, более че-то крутого пока не пробовал, но ведь и то что я там программлю особо не требует ресурсов.
Все-таки есть возможность получить от DX какой-нибудь более внятный ответ вместо этого "Invalid call"? Типа там "Cannot run on your hardware" . Или нет?
А>RTFM
А>Подскажу где:
А>
Здравствуйте, Wallrunner, Вы писали:
W>Кстати вот RTFM'ить каждый может, а вот ты пробовал сам использовать этот RegisterSoftwareDevice()? Этой функции нужно передать указатель на какую-то функцию инициализации устройства, при этом совершенно нигде не сказано что в этой функции должно происходить. Передаю NULL или указатель на функцию которая ничего не делает и возвращается ошибка "Not found".
RTFM: The Direct3D Driver Development Kit (DDK) provides the documentation and headers for developing pluggable software devices.
W>P.S. Я тут нашел кое-какую инфу по интегрированным видюхам, вроде как они не могут сами делать процессинг вертексов, поэтому нужно врубать software vertex processing, но его можно врубить походу только создав софтварный девайс.
D3DDEVTYPE_REF Пробовал?
Now some men like the fishing
And some men like fowling
And some men like to hear
The cannonballs are roaring
Me — I like sleeping...
МЪ>RTFM: The Direct3D Driver Development Kit (DDK) provides the documentation and headers for developing pluggable software devices.
Ок, попробую почитать. Но все-таки блин, почему же некоторые 3д игрушки пашут и почему проверки dxdiag проходят нормально, не ругаются никакими Invalid call'ами.
МЪ>D3DDEVTYPE_REF Пробовал?
Да, как раз попробовал после того как написал предыдущее сообщение.
Тормоза были просто жуткие.
Re[3]: Получение строки ошибки в DirectX
От:
Аноним
Дата:
05.01.07 06:47
Оценка:
Здравствуйте, Wallrunner, Вы писали:
W>Спасибо, строку ошибки получить удалось, правда сказала она по-прежнему немного, а именно "Invalid call". Я так почитал в инете немного, вроде как это в основном связано с версией DX или с драйверами. Я подозреваю что виновата видюха. Дело в том что дома у меня Radeon 9600 и все пашет норм, а когда запускаю на работе, вот такая лажа происходит, а здесь видюха интегрированная, SiS 650.
W>Может кто знает другие причины, из-за которых происходит подобная ошибка? W>Или может возможно получить более подробную информацию о причине ошибки.
Код инициализации можно увидеть ???
Сам тестирую на SIS 640 — все работает...
Возможно видюха не поддерживает Hardware rasterization или hardware vertex processing попробуй D3DDEVTYPE_REF и D3DCREATE_SOFTWARE_VERTEXPROCESSING, а вообще правильнее проверять что умеет адаптер (D3DCAPS9) прежде чем создавать устройство.