ffunctionglMultiDrawElementsには、引数の 1 つとしてポインターへのポインターが必要です。Ptr(Ptr a)StorableArray Int から を取得するにはどうすればよいでしょaうか?
1 に答える
3
Ptr最初にインデックスのリストを にマーシャリングし、次にそれらを にPtrマーシャリングする必要がありますPtr (Ptr Int))
このようなことができます
import Foreign.Marshal.Array
indices :: [[Int]]
do
ixPtrs <- mapM newArray indices
sizes <- newArray $ map (fromIntegral . length) indices
ixPtrPtr <- newArray ixPtrs
glMultiDrawElements enumType sizes iType ixPtrPtr (fromIntegral $ length indices)
mapM_ free ixPtrs
free ixPtrPtr
free sizes
ここで s のリストPtrはまだスコープ内にあるため、その上に mapM をマップして各ポインターを解放できます。後でメモリを解放したい場合は、リストを保持するか、ixPtrPtr を保持しpeekArrayて元のポインタを取得するために使用できます。
于 2011-07-13T12:30:42.397 に答える