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 に答える