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;
    }


如何实现D3D全屏与窗口的转换

有很多游戏会提供这样的功能,比如足球经理,生化危机,魔兽世界等,这样做最大的便利,是让你可以在玩游戏的同时做其他事情 ( I Guess )。 1.首先要做的事情是为D3DPRESENTATIO...
  • programrookie
  • programrookie
  • 2009年06月06日 17:03
  • 4555

Windows客户端开发--获取屏幕分辨率及大小相关

今天介绍一下,windows客户端开发中,屏幕分辨率,以及屏幕客户区大小的获得方法。GetSystemMetrics 函数功能:用于得到被定义的系统数据或者系统配置信息函数原型:int WINAPI...
  • wangshubo1989
  • wangshubo1989
  • 2016年10月25日 20:52
  • 32260

在D3D窗口中渲染WINDOWS的基本控件

         最近没怎么上文,因为做的东西可能较简单,不好意思发了。不过清明要来了。有大块时间Coding了。呵呵。今天接到CSDN上一朋友的提问:如何在D3D独占模式下显示WINDOWS窗口。这...
  • honghaier
  • honghaier
  • 2008年04月02日 13:11
  • 2727

【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。  文章链接: http://blog.csdn.net/zhmxy555/article/details/8547531作者:毛星云(浅墨...
  • zhmxy555
  • zhmxy555
  • 2013年01月28日 04:18
  • 39381

如何实现D3D全屏与窗口的转换

有很多游戏会提供这样的功能,比如足球经理,生化危机,魔兽世界等,这样做最大的便利,是让你可以在玩游戏的同时做其他事情 ( I Guess )。 1.首先要做的事情是为D3DPRESENTATION_...
  • pizi0475
  • pizi0475
  • 2012年08月30日 07:10
  • 1689

DirectX3D游戏开发四 Z-Buffer的实现

欢迎来到EasyLiu的博客! 参考directxtutorial.com DirectX.9.0.3D游戏开发编程基础     在上一节课中我们讲了简单的流水线操作,重点讲了坐标变换,实现了一个三角...
  • liuyi1207164339
  • liuyi1207164339
  • 2015年08月29日 09:50
  • 1200

D3DPRESENT_PARAMETERS详解

翻译自:http://msdn.microsoft.com/en-us/library/windows/desktop/bb172588(v=vs.85).aspx Describes the pre...
  • Blues1021
  • Blues1021
  • 2014年11月30日 22:34
  • 7039

Direct3D 和 OpenGL真假全屏

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

directshow修改视频分辨率

在用directshow开发时可能需要修改视频的分辨率便于网络传输,可以用如下方法:   IAMStreamConfig *pSC=NULL; VIDEOINFOHEADER *vi...
  • Shangrila_lj
  • Shangrila_lj
  • 2012年08月17日 11:11
  • 5434

Direct3D改变分辨率&真假全屏

BOOL bRet = FALSE; m_d3dpp.BackBufferWidth = 0; m_d3dpp.BackBufferHeight = 0; GetWind...
  • krrrr
  • krrrr
  • 2012年03月27日 11:23
  • 1597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Direct3D改变分辨率&真假全屏
举报原因:
原因补充:

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