如何制作游戏中的大地图?

cenxaoi 2006-04-21 08:16:02
首先解决一张小地图平铺成为大地图的做法。
我的代码是
------------
//下面是全局变量
HBITMAP bitBK;
BITMAP bitDes;
HDC MemDC;
HDC dc0;//临时的
---------------
MemDC=CreateCompatibleDC(NULL);
dc0=CreateCompatibleDC(NULL);
bitBK=(HBITMAP)LoadImage(theApp.m_hInstance,"桌面BMP.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(bitBK,sizeof(HBITMAP),&bitDes);
SelectObject(MemDC,bitBK);
int hi=0,wi=0;
for(;hi<2;hi++)
for(;wi<2;wi++)
BitBlt(MemDC,wi*bitDes.bmWidth,hi*bitDes.bmHeight,
(wi+1)*bitDes.bmWidth,(hi+1)*bitDes.bmHeight,
dc0,bitDes.bmWidth,bitDes.bmHeight,SRCCOPY);
DeleteDC(dc0);
在OnPaint中的代码是
RECT rc;
HDC tmpdc;
::GetClientRect(this->m_hWnd,&rc);
tmpdc=::GetDC(this->m_hWnd);
::BitBlt(tmpdc,0,0,rc.right-rc.left,rc.bottom-rc.top,MemDC,bitDes.bmWidth*2,2*bitDes.bmHeight,SRCCOPY);
::ReleaseDC(this->m_hWnd,tmpdc);

------------
想把dc0分4次考到MemDC中,结果还是只显示左上角一张图片,。

问下这是不是游戏中实现大地图的正确的思路?
如果是以上代码有什么错误?
...全文
321 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
anikan_yu 2006-04-24
  • 打赏
  • 举报
回复
这么简单?不会吧!看看BSP树的资料吧。
syy64 2006-04-23
  • 打赏
  • 举报
回复
游戏也可能以3D贴纹理的方式来实现大地图的方式.
菜牛 2006-04-21
  • 打赏
  • 举报
回复
BitBlt中第4、5个参数是目标矩形的宽度和高度,而不是坐标。
BitBlt中第7、8个参数是源矩形的左上角坐标,而不是宽度和高度。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧