修改ETM,使之支持多格多层纹理

        ETM本身的多层纹理帖图功能是针对整个地图的,所有地形分块都是使用的一个材质,这样跟据我的显卡,只支持四层纹理,再去掉覆盖图,只能用三张帖图来表示整个地面,表现内容很不丰富。要使ETM基于格子附帖图就得找到Material与mesh的关联代码,可是分析完ETM刷帖图这部分的源代码后,怎么找都找不到ETM对设置进去的材质进行关联。他的setMaterial()函数只是简单的把材质赋给成员变量mMaterial,而这个mMaterial经过查找后发现这个成员变量重来就没有被使用过。这使我很诧异,变量没有使用,怎么可能绘制时确有效果呢,后来感觉可能不是ETM中的问题,问题可能是OGRE中的特殊机制。ETM中Tile这个类是从OGRE中的Renderable和MovableObject中派生出来的,Renderable是绘制mesh网格的类,最有可能与材质关联有关系了,与是我看了一下renderable类,发现getMaterial()是纯虚函数,而ETM中继承后只是简单的将mMaterial成员变量返回了下。于是我在getMaterial函数上加断点,发现每循环这个函数都被调用,在堆栈中看是RenderQueue类调用的getMaterial(),这下明白了,OGRE把getMaterial设成纯虚函数让用户去实现,然后OGRE会在渲染队阵类中自动调用用户实现后的getMaterial()去关联相关的mesh。也就是说只要修改下getMaterial函数,给每个tile增加个成员材质,get时返回这个成员,就可以实现每格相对独立的多层纹理。

### STM32 ETM调试方法 #### 使用硬件追踪模块(ETM) 嵌入式跟踪宏单元 (Embedded Trace Macrocell, ETM) 是一种用于记录程序执行流程的硬件机制。通过利用STM32微控制器内部集成的ETM,开发者可以获得详细的指令级运行轨迹,这对于性能分析和复杂问题排查非常有用。 为了启用并配置ETM,在STM32CubeMX中创建新工程时可以选择支持Trace功能[^1]: ```plaintext Project Manager -> Debug/Trace Tab -> Select "Serial Wire" as the debug method and enable ITM & ETM trace options. ``` 完成上述设置之后,还需要确保目标板上的SWD接口连接正常,并且开发环境已安装必要的驱动和支持包来处理来自ETM的数据流。 当一切准备就绪后,可以在STM32CubeIDE里启动调试会话,此时不仅能够像平常一样暂停、继续执行代码,还可以查看由ETM捕获的信息。具体操作如下所示: - 打开Debug视图中的“Peripherals”标签页; - 寻找名为`CoreSight Components`的部分; - 展开该节点找到`ETM`选项卡; - 设置好触发条件和其他参数后点击Apply按钮激活跟踪模式; 值得注意的是,由于ETM会产生大量的原始数据,因此通常建议配合专门的日志解析工具一起使用,以便更高效地理解和定位潜在的问题所在[^2]。 对于进一步深入理解如何有效运用这些特性,《Cortex-M3权威指南》第十五至十六章提供了详尽的技术细节说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值