游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9334|回复: 33

游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

[复制链接]

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2005-9-23 13:04:00 | 显示全部楼层 |阅读模式
我做了一个打飞机的小游戏,刚开始用DDRAW,没问题,但DDRAW不支持旋转就改D3D了.游戏里我用D3DXSPRITE渲染所有的精灵,包括子弹,于是发现只要子弹一多桢数掉的非常厉害,最多能掉一半!我原来用DDRAW的SURFACE时子弹再多也很流畅,不知为什么...

还有我的游戏最多才60多FPS,我是用每秒游戏刷新的次数表示FPS,这是配置问题么?我跑CS都99FPS啊~~~亦或是我游戏循环不合理?我的循环:"更新鼠,键盘->背景->精灵刷新->更新FPS->显示游戏信息"

我是个新人,来这以后得到大家不少帮助,这真是个不错的论坛啊谢谢所有帮助我的人~~

我把我的游戏放上来了,有DDRAW和D3D两个版本,大家试试就知道FPS差多少了(用作弊码把武器加满了就明显了,DDRAW一点不卡!),大家多批评指正了~

sf_200592313346.rar

800 KB, 下载次数:

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 13:23:00 | 显示全部楼层

Re: 游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

第二个 [em3]

sf_2005923132323.rar

800 KB, 下载次数:

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 13:29:00 | 显示全部楼层

Re: 游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

最后一个 [em7]

sf_200592313291.rar

248.86 KB, 下载次数:

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-23 13:47:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

fighter_d3d.exe CRC 错误

估计你把 Present 的频率设成固定VSYNC了

PS:做的不错

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 18:20:00 | 显示全部楼层

Re: 游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

回楼上,我下的CRC没问题啊?是你解压的顺序有问题把,论坛上传的附件文件名都变了,每次解压一个分卷都要手动指定下一个分卷

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 18:41:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

还有你说的"VSYNC"是否指的是D3DPRESENT_PARAMETERS结构里的FullScreen_PresentationInterval 属性?我是变了它的所有值都不行,还有我把显示模式设成当前模式,FullScreen_RefreshRateInHz设为85还不行啊

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 18:48:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

我的初始化代码:

if(NULL == (pD3D = Direct3DCreate8(D3D_SDK_VERSION)))
                return FALSE;
        if(FAILED(pD3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm)))
                return FALSE;
        ZeroMemory(&d3dpp, sizeof(d3dpp));
        d3dpp.Windowed=FALSE;
        d3dpp.hDeviceWindow=*hWnd;         d3dpp.SwapEffect=D3DSWAPEFFECT_FLIP;
        d3dpp.BackBufferCount=2;
        d3dpp.BackBufferWidth=1024;
        d3dpp.BackBufferHeight=768;
        d3dpp.FullScreen_RefreshRateInHz=85;
        d3dpp.FullScreen_PresentationInterval=D3DPRESENT_INTERVAL_ONE  
        d3dpp.BackBufferFormat=d3ddm.Format;
        d3dpp.EnableAutoDepthStencil=TRUE;
        d3dpp.AutoDepthStencilFormat=D3DFMT_D16;
        if(FAILED(pD3D->CreateDevice( D3DADAPTER_DEFAULT,
                D3DDEVTYPE_HAL,
                *hWnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                &d3dpp,
                &pDev ) ) )
                return FALSE;
        ScreenWidth=1024;
        ScreenHeight=768;
        Setup2DCamera();
        if(FAILED(D3DXCreateFont( pDev, font, &pFont)))return FALSE;
        return TRUE;

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-23 20:00:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

d3dpp.FullScreen_PresentationInterval=D3DPRESENT_INTERVAL_IMMEDIATE;

那个FullScreen_RefreshRateInHz就为D3DPRESENT_RATE_DEFAULT好了

如果是窗口FullScreen_RefreshRateInHz只能为0

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-23 20:19:00 | 显示全部楼层

Re: Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

Quest: Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

d3dpp.FullScreen_PresentationInterval=D3DPRESENT_INTERVAL_IMMEDIATE;

那个FullScreen_RefreshRateIn...


那个就是我一开始的设置...

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-23 20:24:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

对了,,我忘了加上去了,,用D3DSWAPEFFECT_DISCARD

怎么是 *hWnd 。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 02:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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