|
想要查看内容赶紧注册登陆吧!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在最终的render()中,将纹理拷贝到显存中时,source和destination矩形框的改变,可以实现BMP的剪裁式显示
原型:
SDL_RenderCopy(渲染器指针,纹理指针,源图矩形指针,目标位置矩形指针);
//尝试之前,修改背景色为纯黑:
- //设置当前渲染色,rgba,红绿蓝透明四通道
- SDL_SetRenderDrawColor(m_pRenderer, 0x0, 0x0, 0x0, 0xFF);
复制代码 //尝试一:
//如果在查询纹理代码之后,加上为源矩形框的高宽赋值代码:
- m_srcRect.w = 50;
- m_srcRect.h = 50;
- //那么显示到屏幕上的图片,将只有0~50的范围
复制代码
//尝试二:
//修改目的矩形值
- m_destRect.x = 100;
- m_destRect.y = 100;
- //这将改变图片在屏幕上的显示位置
复制代码
//尝试三:
//在以上的基础上,再次修改源的起点值
- m_srcRect.x = 50;
- m_srcRect.y = 50;
复制代码
//尝试四:
//如果传入RenderCopy的源和目的值都为NULL,则源图会将整个屏幕占满
//修改render()中的代码:
SDL_RenderCopy(m_pRenderer, m_pTexture, 0, 0);
最后:完整的代码片段(Game.cpp中) - //然后设置需要绘制到屏幕的位置和高宽。以下代码是使用原图片高宽
- m_srcRect.w = 50; //尝试一:改变源图需要显示的高宽
- m_srcRect.h = 50;
- m_destRect.x = m_srcRect.x = 0;
- m_destRect.y = m_srcRect.y = 0;
- m_destRect.w = m_srcRect.w;
- m_destRect.h = m_srcRect.h;
- m_destRect.x = 100;
- m_destRect.y = 100;
- m_srcRect.x = 50;
- m_srcRect.y = 50;
- std::cout << "init success\n";
- m_bRunning = true; //所有初始都成功,可以开始主循环了
- return true;
- }
- void Game::render()
- {
- SDL_RenderClear(m_pRenderer); //清屏
- //绘制纹理对象
- //SDL_RenderCopy(m_pRenderer, m_pTexture, &m_srcRect, &m_destRect);
- SDL_RenderCopy(m_pRenderer, m_pTexture, 0, 0);
- SDL_RenderPresent(m_pRenderer); //双缓冲翻转,新内容显示到屏幕上
- }
复制代码
|
|