Bug经典回放(二)

continue....

二)今年最经典的bug。
准确的说。我还不知道这个是谁的bug。bug的发现是源于给别人做的一个外包程序。
这是一个OpenGL应用程序。初始化代码是我写于2001年。并且一直沿用到现在的代码。可以所是酒精考验了。我从来没有怀疑这样的代码会出现问题。症状如下:
该程序在以前的机器上没有什么问题,运行十分流畅而且也非常稳定。年初突然接到朋友报告说,程序在新的机器上出现了问题。速度很慢,约为10几秒才更新一次画面。我严重的不相信。但是事实总是事实。于是我开始检查OpenGL的驱动。显卡是Nvidia的GeForce 7300Go。驱动也是最新的。而我当时开发的时候显卡是5600。后来调试的时候也在6600上顺利运行。。。。。
把framebuffer和摄像头的数据保存下来后,发现数据竟然都是对的。更新都是实时的。debug viewer打印出来的信息也表示我的程序以fps30的速度正常运行。问题似乎陷入了绝境。我也进入了幻觉状态。无奈只好背着那台出问题的笔记本回家了(笔记本是很不错的笔记本哦~_~)。
一个礼拜,实在想不错问题。两个礼拜快过去了。还是没主意。突然有一天一个朋友要拷贝我的一个场景编辑器。于是我就把那个编辑器重新编译了一下。神奇的事情来了。几个月前在同样的一台机器上还好好的编辑器。竟然也出现了相同的问题!!!!!
该死的Driver. 于是我把driver还原到7x.xx版本。问题果然好了。。。。那么问题显然出在了OpenGL相关的代码上。。。
检查一下以前的OpenGL程序是这么写的。
HDC hDC = GetDC(m_hwnd);
ChoosePixelFormat(hDC ,pixel_format);
Release(hDC);
.......

HDC hDC = GetDC(m_hWnd);
SwapBuffer(hDC);
Release(hDC);
......

HDC hDC = GetDC(m_hWnd);
glMakeCurrent(hRC, hDC);
Release(hDC);

怀疑这里是不是hDC没有保存的问题。以前因为老师说hDC是很宝贵的资源。所以每次我用完了就还给Windows了。于是把hDC保存起来。问题解决!!!!!

反思:
即使是经历了几年。程序的bug也是会潜伏下来的。今天正常的程序,明天也许就不正常了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity游戏操作回放是一种记录和重放游戏操作的技术。通过使用Unity引擎提供的功能,可以将游戏中的玩家操作记录下来,并在以后的时间点上进行回放回放游戏操作具有许多应用,其中包括游戏开发和游戏教学。在游戏开发中,回放功能可以帮助开发者调试游戏,查找潜在的bug和问题。通过重新播放游戏操作,开发者可以重现特定的情境并找到问题的根源,从而更好地优化游戏体验。 此外,回放功能还可以用于游戏教学。教师可以记录自己的游戏操作并与学生分享,让学生在观看教师的游戏过程中学习游戏技巧和策略。这种教学方式能够更加生动地呈现游戏内容,并提供互动的学习体验。 实现Unity游戏操作回放的一种方法是使用Unity的序列化功能。开发者可以将玩家的操作转化为序列化的数据,并保存到文件中。在回放时,可以重新加载该文件,并按照序列化的数据重现游戏操作。通过在回放过程中控制游戏对象的状态和行为,可以实现对游戏操作的准确回放。 总的来说,Unity游戏操作回放是一种非常有用的技术,可以在游戏开发和游戏教学中发挥重要作用。通过记录和重现游戏操作,开发者和教师可以更好地理解和传递游戏内容,提升游戏的质量和教学的效果。 ### 回答2: Unity游戏操作回放是指记录并重播游戏中的操作过程,使玩家能够重新观看自己或其他玩家在游戏中的游戏操作。在Unity游戏引擎中,可以通过记录玩家的输入、游戏物体状态和事件等信息来实现游戏操作回放功能。 实现游戏操作回放的基本原理是将玩家的输入数据和游戏状态以一定的方式进行记录和存储。在游戏进行回放时,通过读取存储的数据,将游戏状态逐帧还原,并根据记录的输入数据重新执行操作,从而还原玩家的操作过程。 Unity提供了一系列的API和工具来实现游戏操作回放功能。具体而言,可以使用Unity的Input类和相关方法来记录玩家的输入数据,例如键盘按键、鼠标点击等。可以使用Unity的组件系统来记录游戏物体的状态信息,例如位置、旋转、缩放等。可以使用Unity的事件机制来记录游戏中的事件,例如碰撞、触发等。 在回放时,可以使用Unity的Time类和相关方法来控制游戏的时间流逝,从而实现逐帧还原游戏状态和操作。通过重新执行记录的输入数据和事件,可以还原玩家在游戏中的操作过程。同时,可以利用Unity的渲染和动画系统将回放的操作过程以视觉的形式展现给玩家。 总之,Unity游戏操作回放是一种记录和还原玩家在游戏中操作的技术,通过记录输入数据、游戏状态和事件等信息,实现对游戏操作过程的回放。它可以为玩家提供学习、观赏和分享的机会,同时也是游戏开发中重要的功能之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值