HRESULT t3dScene::InitD3D( HWND hWnd)
{
g_pD3D = NULL;
g_pd3dDevice = NULL;
g_pVBxy = NULL;
g_pVBxz = NULL;
g_pVByz = NULL;
g_pVBaxes = NULL;
g_pVBr = NULL;
g_pVBs = NULL;
g_pVBX = NULL;
g_pVBp = NULL;
font = NULL;
// Создание Direct3D объекта.
if( NULL == ( g_pD3D = _Direct3DCreate9( D3D_SDK_VERSION ) ) )
{
return E_FAIL;
}
// Создание структуры необходимой для инициализации D3DDevice.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// Создание D3DDevice устройства.
// Используется софтвеерная обработка вертексов для совместимости с большим
// количеством видеоадаптеров.
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
//&d3dpp, &(LPDIRECT3DDEVICE9)p ) ) )
{
return E_FAIL;
}
// здесь делаю выход для чистоты эксперимента
...
DirectX 9.0 + CreateDevice + FloatToStr
Среда разработки СиБилдер 6.0 + DirectX SDK 9.0 в WindowsXP SP2 (сборку не помню)
После выполнения кода
Код:
нарушается работа FloatToStrF и FloatToStr.
т.е.
Код:
FloatToStr(25.)
выдает не "25" а "25,00000123".
По моему скромному мнению похоже на пролет по пямяти, запись в чужую часть стека или что-то в этом духе. НО почему?!! 3D часть приложения работает без особых претензий а FloatToStr летит ко всем честям... Возможно переметры передаваемые в функцию, но какие?
Sysutils::FloatToText(...)...
от этого не легче...
Господа, может быть я передаю не совместимые параметры в функции DirectX?
Тестировал на 5 машина, с разнами дистрибутивами DX9, везде проблема...
Цитата:
Originally posted by KhArt
Господа, проблема в следующем!
После выполнения кода
нарушается работа FloatToStrF и FloatToStr.
т.е.
выдает не "25" а "25,00000123".
Господа, проблема в следующем!
После выполнения кода
нарушается работа FloatToStrF и FloatToStr.
т.е.
Код:
FloatToStr(25.)
выдает не "25" а "25,00000123".
А если не будет того кода, то нормально отрабатывает?
Не пробовал вместо FloatToStr использовать sprintf?
Пробовал!!! Та же хрень!
Я вопрос по подробней повешу на теме про DirectX...
Цитата:
Originally posted by KhArt
[QUOTEНе пробовал вместо FloatToStr использовать sprintf?
[QUOTEНе пробовал вместо FloatToStr использовать sprintf?
Пробовал!!! Та же хрень!
Я вопрос по подробней повешу на теме про DirectX... [/QUOTE]
Без кода DirectX функция FloatToStr отрабатывает иначе?