• 391阅读
  • 2回复

[提问]Direct3D导致QWebView使用百度地图出现怪异问题 [复制链接]

上一主题 下一主题
离线yyzq
 

只看楼主 倒序阅读 楼主  发表于: 05-17
开发环境:VS2012 + qt-opensource-windows-x86-msvc2012_opengl-5.4.0.exe + qt-vs-addin-1.2.5.exe
问题描述:使用QWebView基于百度地图的相关功能,在没有使用Direct3D之前功能一些正常,但是现在软件内另一个模块需要使用Direct3D渲染视频通话,结果地图这块就出问题了,加载异常缓慢,而且拖放等效果也慢的基本没法用,[backcolor= transparent][backcolor= transparent][backcolor= transparent]Direct3D我也不熟,照猫画虎,现在实在搞不清楚是什么问题,不知道有没有遇见过的给个指导。。。
[backcolor= transparent][backcolor= transparent][backcolor= transparent]

[backcolor= transparent][backcolor= transparent][backcolor= transparent]这是初始化Direct3D的代码
  1. IDirect3D9 *_d3d = Direct3DCreate9(D3D_SDK_VERSION);
  2.     if (_d3d == NULL)
  3.     {
  4.         return ;
  5.     }
  6.     D3DCAPS9 caps;
  7.     _d3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
  8.     int vp = 0;
  9.     if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
  10.     {
  11.         vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
  12.     }
  13.     else
  14.     {
  15.         vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
  16.     }
  17.     D3DPRESENT_PARAMETERS d3dpp;                    //D3DPRESENT_PARAMETERS设置,设置IDirect3DDevice的特性
  18.     ::ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
  19.     d3dpp.BackBufferWidth = 1920;
  20.     d3dpp.BackBufferHeight = 1080;
  21.     d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
  22.     d3dpp.BackBufferCount = 1;
  23.     d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
  24.     d3dpp.MultiSampleQuality = 0;
  25.     d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  26.     d3dpp.hDeviceWindow = (HWND)AppHelper.mainWindow()->winId();
  27.     d3dpp.Windowed = TRUE;
  28.     d3dpp.EnableAutoDepthStencil = true;
  29.     d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
  30.     d3dpp.Flags = 0;
  31.     d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
  32.     d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
  33.     IDirect3DDevice9* d3d_device;
  34.     if (_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (HWND)AppHelper.mainWindow()->winId(), vp, &d3dpp, &d3d_device) != D3D_OK)
  35.     {
  36.         int i = 0;
  37.         return ;
  38.     }


离线weinkym

只看该作者 1楼 发表于: 06-05
5.7.1遇到过,跟webengine冲突了
离线yyzq

只看该作者 2楼 发表于: 06-15
回 weinkym 的帖子
weinkym:5.7.1遇到过,跟webengine冲突了 (2018-06-05 14:21) 

请问你们最后是如何解决的,我打算把浏览器换成cef,现在还没时间搞。。。
快速回复
限100 字节
 
上一个 下一个