游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1148|回复: 0

初始化窗口的问题

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-4-27 22:22:00 | 显示全部楼层 |阅读模式
初始化窗口时用了
            hWnd = CreateWindow(
                &quotlanarEngine",
                "PlanarEngine(-Debug)",
                WS_OVERLAPPED | WS_SYSMENU ,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                DisplayMode_Width,
                                DisplayMode_Height,
                NULL,
                NULL,
                hInst,
                NULL);
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);

lpPlanarEngine->UpdateFrame();
刷新时在_debug 模式下

LOCK
重绘 Backbuffer
UNLOCK

   m_lpDDSPrimary->Blt(&dst_rect,m_lpDDSBackbuffer, &src_rect, DDBLT_WAIT,0);



并且在两处进行了窗口刷新
//*********************** UpdateFrame_1  *******************
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
        MSG msg;
       
        if(!InitApp(hInst, nCmdShow)) return FALSE;

        while(1)
        {

                if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
                {
                        if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam;
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
                else if(bActive)
                {
                        lpPlanarEngine->UpdateFrame();
                }
                else WaitMessage();
        }
}

//*********************** UpdateFrame_2  *******************
---我这样做的目的是让窗体看起来无闪烁/否则窗口自己PAINT默认背景色
long PASCAL WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

        int dx,dy;
        switch(message)
        {
        case WM_ACTIVATEAPP:
                bActive =wParam;
                break;
        case WM_PAINT:
                if(lpPlanarEngine!=NULL)        lpPlanarEngine->UpdateFrame();
                break;

我遇到的问题是
这样创建窗口后FPS 偶尔会有 等于5的情况
在WIN2000下按  Ctrl + alt + del 之后再按 Esc 退回
程序崩溃 返回错误 x00...05  

在win2000运行了一些其他小游戏
一个游戏虽然不崩溃但是也是窗体停止响应  
一个游戏是在偶然时间会停止响应

这些究竟是为什么呢?

如何能让窗体本身自己不绘制背景色呢?

希望得到的大家帮助
也希望大家一起讨论游戏技术等待...

//**********************************************************
我无法测试16bit 555模式
不知道怎样可以买到支持16bit 555的显卡 或支持16bit555的方法?

//**********************************************************
我把24bit-bitmap的位图文件读出来后转换成RRRRRGGGGGGBBBBB 16bit-565模式
就是能3*8 ->  2*8   少用一个字节的代价是什么样的呢?视觉敏感么?
之后在用LZW压缩
bitmap 898 KB   -> 压缩后218 KB
这样的效果理想?
由于没有数百兆测试不知道会影响速度到什么程度

//**********************************************************
24bit-bitmap 位图是倒放的当转换为16Bit-565时把它转过来就可以用memcpy直接拷贝到
16Bit-565 LPDIRECTDRAWSURFACE上了
这样再做Alpha ,透明色时 是不是就可以直接操作内存中存储的16Bit-565结构达到提高速度
的目的?

大家给点看法吧 在讨论中进步

知道吗?其实你很幸运,你可以选择回复我或者不回复我,而我只能选择等待你或者更期待你...... [em2]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 13:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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