ffunctionglMultiDrawElements
需要一个指向指针的指针作为其参数之一。如何Ptr(Ptr a)
从 StorableArray Int获得 a a
?
问问题
207 次
1 回答
3
您需要首先将索引列表编组为Ptr
's,然后将这些Ptr
's 编组为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
这里Ptr
s 的列表仍在作用域内,因此我们可以对其进行 mapM 以释放每个指针。如果您想稍后释放内存,您可以保留列表或保留 ixPtrPtr 并使用它peekArray
来取回原始指针。
于 2011-07-13T12:30:42.397 回答