Delphi 2009 で OpenGL 3.2 アプリケーションを使用しています。FastMM 4.97 を FullDebugMode で定義して使用すると、UBO はデータを適切に取得しません。FullDebugMode undefined を使用すると、すべてが魅力的に機能します。
例: レンダー フレーム クラスの 2 つのプライベート整数フィールド 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
OSはWindows7 64bitです。
編集:見つけた!OpenGL とはまったく関係ありませんでした。Result := @AnsiString(Object.Name)[1];コードベースの他の場所では、メモリが解放されただけで変更されていないため、Thisを使用して PAnsiChar を返す関数がほとんどの場合正常に動作しました。FullDebugMode では、解放時にデータが $80 シーケンスで上書きされました。