- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
ffunction glMultiDrawElements
需要一个指向指针的指针作为其参数之一。如何从 StorableArray Int a
获取 Ptr(Ptr a)
?
最佳答案
您需要先将索引列表编码为 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
的列表仍在范围内,因此我们可以对其进行 mapM 以释放每个指针。如果您想稍后释放内存,您可以保留列表或保留 ixPtrPtr 并使用 peekArray
取回原始指针。
关于c - 如何调用函数 glMultiDrawElements::GLenum -> GHC.Ptr.Ptr GLsizei -> GLenum -> GHC.Ptr.Ptr (GHC.Ptr.Ptr a) -> GLsizei -> IO (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676616/
背景故事:我正在尝试使用单个绘制调用在屏幕上绘制尽可能多的正方形。我正在使用专门用于 2D 绘图的自定义 glsl 顶点着色器,它应该是从 samplerBuffer 中提取正方形顶点的位置数据。因为
我有一个模型,我想用 glMultiDrawElements 渲染。准备数据并使用简单的 vector 渲染它工作正常,但当我使用顶点缓冲区时失败。显然我在计算缓冲区偏移量时犯了某种错误。首先是工作代
我在很多网站上都读到过 glMultiDrawElements是“相当于”这样做: for(int i = 0; i < drawCount; ++i){ glDrawElements(mod
我最近从 32 位环境迁移到 64 位环境,除了一个问题外一切顺利:glMultiDrawElements 使用一些数组,如果不在 64 位操作系统下进行一些调整,这些数组将无法工作。 glMulti
我使用 OpenGL 和 GLSL 开发了一个小型 3D 引擎。 我已经合并了一个顶点数据批处理系统,其目标是收集所有几何图形(所有对象)共享相同的着色器程序和相同的变换在一个唯一的顶点缓冲区对象(V
我真的很难为这个问题想出一个好的标题,所以如果你能想出一个好的标题,请提出一个新标题。或许我们可以在解决我的问题后这样做......现在开始: 我目前正在移植代码以使用 glMultiDrawElem
ffunction glMultiDrawElements 需要一个指向指针的指针作为其参数之一。如何从 StorableArray Int a 获取 Ptr(Ptr a) ? 最佳答案 您需要先将索
我是一名优秀的程序员,十分优秀!