Direct3D改变分辨率&真假全屏

原创 2012年03月27日 11:23:42
    BOOL bRet = FALSE;

    m_d3dpp.BackBufferWidth = 0; 
    m_d3dpp.BackBufferHeight = 0;

    GetWindowRect(hwnd, &m_rcWindow);
    RECT rect = {0, 0, nWidth, nHeight};
    AdjustWindowRectEx(&rect, GetWindowLong(hwnd, GWL_STYLE), 
        FALSE, GetWindowLong(hwnd, GWL_EXSTYLE));

    SetWindowPos(hwnd, HWND_NOTOPMOST, m_rcWindow.left, m_rcWindow.top, 
        rect.right - rect.left, rect.bottom - rect.top, 
        SWP_SHOWWINDOW);

    //务必释放dx资源
    OnDeviceLost();

    HRESULT hResult = m_d3d_Device->Reset(&m_d3dpp);
        
    if(!FAILED(hResult))
    {
        //重新设定dx资源
        SetupResource();
        bRet = TRUE;
    }

    ShowWindow(hwnd, SW_SHOW);
    UpdateWindow(hwnd);
    return bRet;


    真假全屏

    m_bFullScreen = TRUE;
    m_d3dpp.Windowed = !bRealFullScreen;

    m_d3dpp.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);
    m_d3dpp.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN);

    ::SetWindowLong(hwnd, GWL_STYLE, WS_EX_TOPMOST | WS_POPUP);
    ::SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 
        GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 
        SWP_SHOWWINDOW);
    OnDeviceLost();

    HRESULT hResult = m_d3d_Device->Reset(&m_d3dpp);
        
    if(!FAILED(hResult))
    {
        //重新设定dx资源
        SetupResource();
        bRet = TRUE;
    }


相关文章推荐

D3D11与D3D9全屏/窗口化切换差异

D3D11或D3D10中,程序由窗口化切换到全屏,只需要简单的调用 IDXGISwapChain::SetFullscreenState  来改变换链的状态即可实现切换,开发者不用考虑资源丢失与重建...

Direct3D 和 OpenGL真假全屏

全屏显示在Windows程序中,有不同的实现方法,有真全屏和假全屏之分,真全屏是将要显示的内容独占显示设备所有的全部资源,程序不加载窗外的框架。另一种是假全屏,实现的原理是调整要显示的内容的尺寸与位置...

Direct3D离屏表面

  • 2011年04月22日 13:41
  • 29KB
  • 下载

Direct3D和openGL故事【转】

自1996年开始,3D API之战延续至今,并随着GPU程序的广泛应用而炮火渐希,淡出争论的焦点。如果非要论个输赢的话,应该是OpenGL绊倒了自己,以致大业未成。而OpenGL ES异军突起,反而要...
  • wag2765
  • wag2765
  • 2016年01月25日 16:25
  • 809

【Visual C++】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术:Direct3D渲染五步曲

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 文章链接: http://blog.csdn.net/zhmxy555/article/details/8223965 ...

【Visual C++】游戏开发笔记二十八 最精简的Direct3D11 Demo筋骨脉络全攻略

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7707628 ...

Direct3D纹理映射技术

一、纹理映射的基本概念 IDirect3DTexture9来表示,纹理是类似于表面的像素矩阵,与表面不同的是它可以被映射到三角形单元中。 1.纹理坐标系是2D纹理图像中的uv坐标系,因为直到三角形顶点...

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之2: Chap4: Direct3D Initialization

从这一期开始,我们正式来研究“龙书”第二版的课后习题啦!这一次讲的是第4章的习题。可能有人会奇怪:为何从第4章开始呢?手头有书的同学大概没有这样的疑问,因为前面3章是讲述3D图形的数学知识的,基本上就...

Direct3D顶点坐标变换

Direct3D顶点坐标变换 分类: 游戏开发2010-06-29 18:19 1724人阅读 评论(0) 收藏 举报 direct3dfloat图形360c 开始的话:顶点...

用Direct3D设计二维横版过关动作类游戏的角色运动(双倍速、二段跳)

用Direct3D设计二维横版过关动作类游戏的角色运动 演示程序下载地址:http://download.csdn.net/detail/jiangcaiyang123/4278008 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Direct3D改变分辨率&真假全屏
举报原因:
原因补充:

(最多只允许输入30个字)