如何在C++中绘制纹理/位图的区域



我正在为游戏(GTA IV)制作一个小地图/雷达,我想知道如何隐藏或删除正方形地图区域之外的地图纹理的部分/像素。该函数将在每帧中运行,所以我正在寻找一种有效的方法来实现这一点,最好是使用一些轻量级库或directX。

到目前为止,我想到的是"手动"检查每个像素或纹理中每行像素的坐标,看看它是否在雷达区域之外,但我想每帧大约4个512*512纹理需要相当多的资源。

我怎样才能有效地做到这一点?谢谢,很抱歉,如果这已经被发布了一百万次,但还没有找到与标准图像编辑无关的内容。

如果我理解正确,您希望根据当前位置和实际地图从地图中删除像素。为什么不使用透明度?基本上,您在CPU上填充像素数据(在游戏代码中),然后更新视频卡上的纹理。更好的是,如果贴图不更改,您可以先在一个大纹理中完成所有这些操作,然后将其加载到GPU上(甚至手动执行),然后更改纹理坐标以显示您感兴趣的部分。

最新更新