1

OpenGL を使用すると、効率を高めるためにデータを処理する必要がある場合が多くあります。たとえば、メモリ構造は vertex-color-normal-vertex-color-normal などになります。

たとえば、ある種の memset バリアント (つまり、ループを使用しない) を持つメモリのカラー セクションのみを変更するための実行可能なオプションはありますか。

また、memset のループなどはあるのでしょうか。たとえば、それぞれ 4 つの float で構成される色の配列では、すべての float を特定の色に設定します。

4

2 に答える 2

2

ループを使用するだけです。memset について魔法のようなものは何もありません。内部的にはループを使用しているだけです。0 を使用すると、同じコンパイラで一度に 64 ビットをクリアするようにわずかに最適化される場合がありますが、単一の命令でメモリのブロックを設定することはありません。

于 2011-02-28T04:31:34.353 に答える
1

私はただループで行きます。memset() は反復ごとに複数のバイトを書き込むためにいくつかの巧妙な小さな最適化を行うため、memset() 自体がどのように機能しているかを調べて、それらの種類の最適化がコードに適用されるかどうかを確認してください。でも結局はただのループ。

これが memset() のソース コードです。かなり読みやすいですが、最適化がどのように行われているかを正確に確認するには、すべての typedef とマクロを掘り下げる必要があります。

于 2011-02-28T05:58:28.993 に答える