我正在使用 Delphi 2009 中的 OpenGL 3.2 应用程序。当使用带有 FullDebugMode 定义的 FastMM 4.97 时,UBO 无法正确获取数据。使用 FullDebugMode undefined 一切都像魅力一样。
示例:在我们的渲染帧类中设置指向两个私有整数字段 FWidth 和 FHeight 的视口尺寸。
glBufferSubData(GL_UNIFORM_BUFFER, VUniform.Offset, VUniform.Size, @FWidth);
这几天我一直在纠结这个问题,我真的不知道如何继续。我不希望这里有完整的 OpenGL 支持,但希望有人可以根据在 FullDebugMode 下运行与不运行之间的已知差异提出一些建议。
项目设置:
[Compiling]
Optimization False
Stack frames True
Use debug .dcus True
[Linking]
Debug info True
Map file Detailed
操作系统是 Windows 7 64 位。
编辑:找到了!它与OpenGL完全无关。在我们的代码库的其他地方,一个函数返回了一个 PAnsiChar 使用Result := @AnsiString(Object.Name)[1];
This 在大部分时间正常运行,因为内存只被释放但没有改变。在 FullDebugMode 中,数据在释放时被 $80 序列覆盖。