游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1433|回复: 3

向各位请教 全屏运行游戏的问题!!!

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-4-26 19:17:00 | 显示全部楼层 |阅读模式
我写的dx程序 全屏运行 d3dpresent_parameters.Windowed=false;没有问题 一点都不卡,但是一但改乘 true用窗口运行 就非常卡 不知道为什么??

我图象设备属性是这样设置的:
        D3DPRESENT_PARAMETERS d3dpresent_parameters;
        ZeroMemory(&d3dpresent_parameters,sizeof(d3dpresent_parameters));
        d3dpresent_parameters.BackBufferWidth=800;
        d3dpresent_parameters.BackBufferHeight=600;
    d3dpresent_parameters.BackBufferFormat=d3ddisplaymode.Format;
        d3dpresent_parameters.BackBufferCount=1;
        d3dpresent_parameters.hDeviceWindow=hwnd;
    d3dpresent_parameters.Windowed=false;//改变是否全屏幕
        d3dpresent_parameters.SwapEffect=D3DSWAPEFFECT_FLIP;
        d3dpresent_parameters.PresentationInterval=D3DPRESENT_INTERVAL_DEFAULT;
        d3dpresent_parameters.EnableAutoDepthStencil=true;
        d3dpresent_parameters.AutoDepthStencilFormat=D3DFMT_D16;
投影矩阵是这样设置的:
D3DXMATRIX projection;
D3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4,float(fullview.Width)/float(fullview.Height),                                                   1.0f,1000.0f);
direct3ddevice->SetTransform(D3DTS_PROJECTION,&projection);
direct3ddevice->SetRenderState(D3DRS_NORMALIZENORMALS,true);
direct3ddevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);
direct3ddevice->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
direct3ddevice->SetSamplerState(0,D3DSAMP_MIPFILTER,D3DTEXF_POINT);
direct3ddevice->SetRenderState(D3DRS_LIGHTING,false);

创建窗口用的是:hwnd=CreateWindow("3d","3d game",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hinstance,NULL);

请高手帮忙看看 出了什么问题 全屏没问题 一旦窗口运行就会很卡!!!

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-4-26 19:46:00 | 显示全部楼层

Re:向各位请教 全屏运行游戏的问题!!!

你说的“卡”是什么意思?
FPS降低了?

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-4-27 13:25:00 | 显示全部楼层

Re:向各位请教 全屏运行游戏的问题!!!

对fps降低 但是全屏幕运行 画面很流畅

2

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
QQ
发表于 2006-4-27 14:06:00 | 显示全部楼层

Re:向各位请教 全屏运行游戏的问题!!!

我一般只设置
d3dpresent_parameters.Windowed = TRUE;
d3dpresent_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpresent_parameters.BackBufferFormat = D3DFMT_UNKNOWN;

这三个参数。要是开zbuffer的话加上
d3dpresent_parameters.EnableAutoDepthStencil=true;
d3dpresent_parameters.AutoDepthStencilFormat=D3DFMT_D16;

这两个,其他都默认了,窗口大小到
HWND hWnd = CreateWindow()里去设置。

我注意到你使用的参数是
d3dpresent_parameters.SwapEffect=D3DSWAPEFFECT_FLIP;
你开了多个backbuffer吗?
没有的话你试一下D3DSWAPEFFECT_DISCARD这个参数看看。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 08:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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