Ошибка (только ноутбуках) при инициализации D3D

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 02.02.2010 (Вт) 19:01

Вылетает ошибка (только на некоторых ноутбуках) при инициализации D3D...
Не могу понят что не так...


Код: Выделить всё
   
DevType = D3DDEVTYPE_HAL
    Call d3d.GetDeviceCaps(D3DADAPTER_DEFAULT, DevType, m_D3DCaps)
   

    d3d.GetAdapterDisplayMode D3DADAPTER_DEFAULT, mode

   
   
   
    d3dpp.Windowed = IIf(Window, True, False)
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD
    d3dpp.BackBufferFormat = mode.Format
    d3dpp.BackBufferHeight = H
    d3dpp.BackBufferWidth = W
    d3dpp.hDeviceWindow = hWnd
    d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES
   
    Set d3dDevice = d3d.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp)

пробовал менять DeviceType на D3DDEVTYPE_REF... то же не помогло(

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение FireFenix » 02.02.2010 (Вт) 19:24

Какая вообще ошибка?

и вообще выложи весь код
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 02.02.2010 (Вт) 19:40

Ошибка: d3dDevice Is Nothing


Код: Выделить всё
Public Function D3DInit(hWnd As Long, W As Long, H As Long, Optional Window As Boolean) As Boolean
On Error GoTo ErrHandler

    Set d3d = dx8.Direct3DCreate()
    If d3d Is Nothing Then Exit Function

    Dim mode As D3DDISPLAYMODE

    DevType = D3DDEVTYPE_HAL
    Call d3d.GetDeviceCaps(D3DADAPTER_DEFAULT, DevType, m_D3DCaps)
   

    d3d.GetAdapterDisplayMode D3DADAPTER_DEFAULT, mode

   
   
   
    d3dpp.Windowed = IIf(Window, True, False)
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD
    d3dpp.BackBufferFormat = mode.Format
    d3dpp.BackBufferHeight = H
    d3dpp.BackBufferWidth = W
    d3dpp.hDeviceWindow = hWnd
    d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES
   
    Set d3dDevice = d3d.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp)
   
       

        Call d3dDevice.SetVertexShader(vFlag)
       
        Call d3dDevice.SetRenderState(D3DRS_LIGHTING, 0)
        Call d3dDevice.SetRenderState(D3DRS_ALPHABLENDENABLE, True)
       
        Call d3dDevice.SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW)
        Call d3dDevice.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA)
        Call d3dDevice.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA)
       
         
        Call d3dDevice.SetRenderState(D3DRS_MULTISAMPLE_ANTIALIAS, True)
        Call d3dDevice.SetRenderState(D3DRS_EDGEANTIALIAS, True)
       
     Call d3dDevice.SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE)
     
      d3dDevice.SetTextureStageState 0, D3DTSS_MIPFILTER, D3DTEXF_LINEAR
      d3dDevice.SetTextureStageState 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
      d3dDevice.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR
     
      d3dDevice.SetTextureStageState 0, D3DTSS_ADDRESSU, D3DTADDRESS_MIRROR
      d3dDevice.SetTextureStageState 0, D3DTSS_ADDRESSV, D3DTADDRESS_MIRROR
       
    D3DInit = True
    Exit Function
   
ErrHandler:
    If d3dDevice Is Nothing Then MsgBox "D3D Не инициализирован!"
    D3DInit = False
End Function
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Mikle » 02.02.2010 (Вт) 21:26

REF device не поможет - он есть только при установленном SDK с соответствующей опцией. HAL должен работать.
Это:
d3dpp.Windowed = IIf(Window, True, False)
замени на:
d3dpp.Windowed = IIf(Window, 1, 0)
Это зачем?:
d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES
Убедись, что mode.Format поддерживается DX8, попробуй заменить на A8R8G8B8, только на полноэкранном режиме.
Проверь DXDiag, сработает?

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 02.02.2010 (Вт) 21:44

Убедись, что mode.Format поддерживается DX8

подробней пожалуйста.

ок, спасибо... теперь узнаю только в пятницу... Потом отпишусь...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 03.02.2010 (Ср) 18:57

Получилось протестить раньше... Всё робит! Спасибо!!!

Есть ещё один вопрос...
Игрушка в полноэкранном режиме, так вот на широкоформатных мониторах она растягивается... Как сделать что бы размер сохранялся (не растягивался)?
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Mikle » 03.02.2010 (Ср) 19:15

Gemini писал(а):Всё робит! Спасибо!!!

А что было?
Gemini писал(а):Как сделать что бы размер сохранялся (не растягивался)?

Меняй аспект под пропорции рабочего стола.
На счёт форматов. DX8 может рендерить в R5G6B5, A8R8G8B8 и X8R8G8B8, вроде всё, точно не помню. Но не в R8G8B8, например.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 03.02.2010 (Ср) 19:37

Mikle писал(а):А что было?

Точно не могу сказать (У меня бука нет, приходиться компилить и отправлять другому человеку)...
(Сделал всё что ты мне посоветовал)

заменил:
d3dpp.Windowed = IIf(Window, True, False)
на:
d3dpp.Windowed = IIf(Window, 1, 0)

убрал: d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES

и добавил:
mode.Format = A8R8G8B8

Меняй аспект под пропорции рабочего стола

Можно подробней плз...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Mikle » 03.02.2010 (Ср) 21:00

Код: Выделить всё
D3DXMatrixPerspectiveFovLH Mtrx, fovY, Screen.Height / Screen.Width, zNear, zFar

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение Gemini » 03.02.2010 (Ср) 21:19

Mikle, Спасибо!
Буду разбираться дальше...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

eider
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 29.03.2010 (Пн) 14:49

Re: Ошибка (только ноутбуках) при инициализации D3D

Сообщение eider » 29.03.2010 (Пн) 15:04

здраствуйте, я недавно переустонавил винду на ноут и когда я включаю фильм , то он пишет ошибка инициализации DirectX (GetDeviceCaps). помогитие пожалуста, как исправить, я не програмист точных терменов непонемаю, зарание спосибо


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList