Текущий архив: 2003.09.11;
Скачать: CL | DM;
Вниз
Режим эмуляции Найти похожие ветки
← →
VEG (2003-03-08 12:26) [0]Вот проблема, простейшее приложение в режиме
эмуляции рендерит черный экран. Вот код инициализации:
bool DXCreate(HWND _hwnd, bool _fullScreen, xDisplayMode _displaymode, bool _hal)
{
D3DDEVTYPE _dtype;
dxint = Direct3DCreate8(D3D_SDK_VERSION);
if(dxint == NULL) return false;
ZeroMemory (&dxpar, sizeof(dxpar));
dxpar.Windowed =! _fullScreen;
dxpar.hDeviceWindow = _hwnd;
dxpar.BackBufferWidth = _displaymode.val.Width;
dxpar.BackBufferHeight = _displaymode.val.Height;
if(_fullScreen)
{// FullScreen
switch (_displaymode.val.Format) {
case 16:
dxpar.BackBufferFormat = D3DFMT_R5G6B5;
break;
case 32:
dxpar.BackBufferFormat = D3DFMT_A8R8G8B8;
break;
default:
return false;
}
dxpar.FullScreen_RefreshRateInHz = _displaymode.val.RefreshRate;
dxpar.BackBufferCount = 3;
dxpar.SwapEffect = D3DSWAPEFFECT_DISCARD;
}
else
{// Windowed mode
D3DDISPLAYMODE _d3ddm;
if(dxint->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &_d3ddm)!=D3D_OK) return false;
dxpar.SwapEffect = D3DSWAPEFFECT_DISCARD;
dxpar.BackBufferFormat = _d3ddm.Format;
( _hal)Вот проблема, простейшее приложение в режиме
эмуляции рендерит черный экран. Вот код инициализации:
bool DXCreate(HWND _hwnd, bool _fullScreen, xDisplayMode _displaymode, bool _hal)
{
D3DDEVTYPE _dtype;
dxint = Direct3DCreate8(D3D_SDK_VERSION);
if(dxint == NULL) return false;
ZeroMemory (&dxpar, sizeof(dxpar));
dxpar.Windowed =! _fullScreen;
dxpar.hDeviceWindow = _hwnd;
dxpar.BackBufferWidth = _displaymode.val.Width;
dxpar.BackBufferHeight = _displaymode.val.Height;
if(_fullScreen)
{// FullScreen
switch (_displaymode.val.Format) {
case 16:
dxpar.BackBufferFormat = D3DFMT_R5G6B5;
break;
case 32:
dxpar.BackBufferFormat = D3DFMT_A8R8G8B8;
break;
default:
return false;
}
dxpar.FullScreen_RefreshRateInHz = _displaymode.val.RefreshRate;
dxpar.BackBufferCount = 3;
dxpar.SwapEffect = D3DSWAPEFFECT_DISCARD;
}
else
{// Windowed mode
D3DDISPLAYMODE _d3ddm;
if(dxint->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &_d3ddm)!=D3D_OK) return false;
dxpar.SwapEffect = D3DSWAPEFFECT_DISCARD;
dxpar.BackBufferFormat = _d3ddm.Format;
}
if(_hal) _dtype = D3DDEVTYPE_HAL; else _dtype = D3DDEVTYPE_REF;
if(dxint->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, _hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &dxpar, &dxdev)!=D3D_OK) return false;
return true;
}
А вот код рендеринга:
void RenderScreen (void)
{
static int c=0 , cc=1;
if(cc==1) c++;
if(cc==0) c--;
if(c==255) cc=0;
if(c==0) cc=1;
dxdev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB (c, 255-c, 0), 1.0f, 0);
dxdev->BeginScene();
dxdev->EndScene();
dxdev->Present(NULL, NULL, NULL, NULL);
}
Как решить проблему?
← →
VEG (2003-03-08 12:28) [1]Я пишу на c++ и использую заголовки из DirectX 8 SDK от Microsoft
← →
VEG (2003-03-08 12:37) [2]В Delphi та же проблема!
← →
VEG (2003-03-08 21:20) [3]СРОЧНО!!! Пожалуйста, ПОМОГИТЕ!!!
← →
cyborg (2003-03-08 22:31) [4]А в чём проблема-то?
← →
VEG (2003-03-09 11:40) [5]В режиме эмуляции (D3DDEVTYPE_REF) не выводится картинка, а в режиме аппаратного ускорения (D3DDEVTYPE_HAL) се работает!!! Как сделать так, чтобы и в режиме эмуляции все работало???
← →
cyborg (2003-03-09 12:27) [6]Код не пробовал, но думаю что это DirectX8 виноват, в нём вроде программной эмуляции нет, только хардваре. Хотя в коде не вижу где картинка выводится, простое очищение экрана.
← →
VEG (2003-03-10 16:26) [7]Прикол в том, что если то же самое напишу в 7-ой версии, то все пашет (стоит 8.1).
>...простое очищение экрана
Это для тогго, чтобы все упростить:)
Страницы: 1 вся ветка
Текущий архив: 2003.09.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c