0
ffunction glMultiDrawElements
要求作爲其參數之一的指針指針。如何從StorableArray Int a
獲得Ptr(Ptr a)
?如何調用函數glMultiDrawElements :: GLenum - > GHC.Ptr.Ptr GLsizei - > GLenum - > GHC.Ptr.Ptr(GHC.Ptr.Ptr a) - > GLsizei - > IO()
ffunction glMultiDrawElements
要求作爲其參數之一的指針指針。如何從StorableArray Int a
獲得Ptr(Ptr a)
?如何調用函數glMultiDrawElements :: GLenum - > GHC.Ptr.Ptr GLsizei - > GLenum - > GHC.Ptr.Ptr(GHC.Ptr.Ptr a) - > GLsizei - > IO()
你需要先列你的索引列表爲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
這裏Ptr
是清單仍然在範圍內,所以我們可以通過映射M來釋放每個指針。如果您想稍後釋放內存,則可以保留該列表或保留ixPtrPtr並使用peekArray
來獲取原始指針。
這似乎是我需要的。謝謝! – Eric
@Eric:如果我的答案解決了您的問題,請將其標記爲「已接受」。這對我們倆都有幫助。 –