На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Скриншот directx приложения
    Товарищи, просветите, как получить снимок экрана работающего directx приложения (к примеру какой то игры).
    Нашёл несколько примеров, которые хорошо делают скриншоты рабочего стола, но на directx обламываются.

    Вот один из примеров, которые обламываются:

    ExpandedWrap disabled
      void D3Screen(){
          IDirect3D9 *g_pD3D;
          HWND hWnd;
       
          IDirect3DDevice9 *g_pd3dDevice;
          IDirect3DSurface9 *pSurface;
          D3DDISPLAYMODE d3ddm;
          D3DPRESENT_PARAMETERS d3dpp;
       
          hWnd=GetConsoleWindow();
       
       
          if((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) {
           printf("fail 1");
          }
          if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm))) {
          printf("fail 2");
          }
          ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
       
          d3dpp.Windowed = TRUE;
          d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
          d3dpp.BackBufferFormat = d3ddm.Format;
          d3dpp.BackBufferHeight = d3ddm.Height;
          d3dpp.BackBufferWidth = d3ddm.Width;
       
       
          if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
                                     D3DDEVTYPE_HAL, hWnd,
                                     D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                     &d3dpp, &g_pd3dDevice))) {
          printf("fail 3");
          }
       
       
          // кердык
          if(FAILED(g_pd3dDevice->CreateOffscreenPlainSurface(d3ddm.Width, d3ddm.Height,
              D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &pSurface, NULL)))
          {
              printf("fail 4");
          }
       
          g_pd3dDevice->GetFrontBufferData(0, pSurface);
          D3DXSaveSurfaceToFile(L"c:\\temp\\game.bmp",D3DXIFF_BMP,pSurface,NULL,NULL);
          pSurface->Release();
      }


    Обламывается на вызове метода CreateOffscreenPlainSurface.
        ыыы... спасибо. Попробую для начала откомпилировать.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0165 ]   [ 14 queries used ]   [ Generated: 18.05.24, 12:08 GMT ]