游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2389|回复: 4

关于DirectDraw中Clipper的问题,请大家帮忙解答

[复制链接]

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2004-8-5 12:25:00 | 显示全部楼层 |阅读模式
我最近正在学习DirectDraw编程,在学习中我试用了DirectX8sdk中封装的CDisplay类。在做画面剪裁时使用了CDisplay::InitClipper()函数,却没有产生剪裁效果不知道是什么原因,请大家帮忙解答。

CDisplay::InitClipper()函数如下:
HRESULT CDisplay::InitClipper()
{
    LPDIRECTDRAWCLIPPER pClipper;
    HRESULT hr;

    // Create a clipper when using GDI to draw on the primary surface
    if( FAILED( hr = m_pDD->CreateClipper( 0, &pClipper, NULL ) ) )
        return hr;

    pClipper->SetHWnd( 0, m_hWnd );

    if( FAILED( hr = m_pddsFrontBuffer->SetClipper( pClipper ) ) )
        return hr;

    SAFE_RELEASE( pClipper );

    return S_OK;
}

我的用法如下:

//创建全屏显示的场景
if( FAILED( hr=m_pDisplay->CreateFullScreenDisplay( hWnd, SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP ) ) )
        return hr;

//初始化剪切
if (FAILED(hr=m_pDisplay->InitClipper()))
        return hr;

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-8-5 15:44:00 | 显示全部楼层

Re:关于DirectDraw中Clipper的问题,请大家帮忙解答

你的InitClipper()使用的pClipper->SetHWnd( 0, m_hWnd );这条语句是针对窗口模式下的程序的,在全屏的模式下,需要调用clipper的setrgn(好像是叫这个函数,抱歉,我这里没有ddraw的help),给clipper设置一些需要裁减的矩形,才可以!

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2004-8-9 09:26:00 | 显示全部楼层

Re: 关于DirectDraw中Clipper的问题,请大家帮忙解答

谢谢william9527
你说的那个函数我没有在DirectXsdk的help中找到,又没有Clipper剪裁使用的范例,发一个让我学习一下。

11

主题

44

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2004-8-9 21:06:00 | 显示全部楼层

Re:关于DirectDraw中Clipper的问题,请大家帮忙解答

通过SetClipList来实现裁剪的设置
需要一个RGNDATA结构

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-8-9 23:47:00 | 显示全部楼层

Re:关于DirectDraw中Clipper的问题,请大家帮忙解答

具体可以参考《windows游戏大师技巧》这本书。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-16 13:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表