|
|
初始化窗口时用了
hWnd = CreateWindow(
" lanarEngine",
"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] |
|