2011-07-13 31 views

回答

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 

這裏Ptr是清單仍然在範圍內,所以我們可以通過映射M來釋放每個指針。如果您想稍後釋放內存,則可以保留該列表或保留ixPtrPtr並使用peekArray來獲取原始指針。

+0

這似乎是我需要的。謝謝! – Eric

+0

@Eric:如果我的答案解決了您的問題,請將其標記爲「已接受」。這對我們倆都有幫助。 –

相關問題