小编Wan*_*ong的帖子

当我为numpy编写自己的C扩展时发生错误

我正在尝试为numpy编写一个C扩展来对大数组进行一些计算,但是当我使用"PyArray_SimpleNew"或"PyArray_FromDims"来获取PyArrayObject时,我遇到了一个大问题.这是我的代码:

#include<stdio.h>
#include "Python.h"
#include"arrayobject.h"

static PyObject *MyExtGFV(PyObject *self, PyObject *args)
{
    npy_intp dims = 1;
    PyArray_SimpleNew(1, &dims, PyArray_FLOAT32);
    retuurn Py_BuildValue("i", 1);
}
static PyMethodDef my_ext_methods[] = 
{
    {"GFV", MyExtGFV, METH_VARARGS, "used to generate feature vectors"},
    {NULL, NULL}
}

PyMODINIT_FUNC initMyExt(void)
{
    Py_InitModule("MyExt", my_ext_methods);
}
Run Code Online (Sandbox Code Playgroud)

为了调试它,我删除了函数MyExtGFV()中的大部分代码,只留下

PyArray_SimpleNew(1, &dims, PyArray_FLOAT32);   
Run Code Online (Sandbox Code Playgroud)

在它,但当我导入它并在我的python代码中使用它时,它说"python已经停止工作".我已经搜索了这个问题很长一段时间,但似乎没有其他人有同样的问题,它几乎让我感到烦恼,任何帮助将不胜感激!

python numpy python-2.7

5
推荐指数
1
解决办法
713
查看次数

如何使用 GLSL 计算指定彩色像素的数量?

我有一个灰度纹理(8000*8000),每个像素的值是一个ID(其实这个ID就是这个片段所属的三角形的ID,我想用这个方法计算出有多少个三角形,有哪些三角形在我的场景中可见)。

现在我需要计算有多少唯一 ID 以及它们是什么。我想用 GLSL 实现这一点,并最大限度地减少 GPU RAM 和 RAM 之间的数据传输。

我最初的想法是使用一个shader存储缓冲区,将其绑定到GLSL中的一个数组,其大小为totalTriangleNum,然后在shader中遍历ID纹理,将索引等于ID的数组元素加1质地。

之后,将缓冲区读取到 OpenGL 应用程序并得到我想要的。这是一种有效的方法吗?或者是否有一些更好的解决方案,例如计算着色器(我不熟悉它)或其他什么。

opengl glsl compute-shader

2
推荐指数
1
解决办法
727
查看次数

标签 统计

compute-shader ×1

glsl ×1

numpy ×1

opengl ×1

python ×1

python-2.7 ×1