小编Sri*_*ran的帖子

PyBind - 重载函数

首先,我要感谢大家努力解决我的这个疑问。我正在转换一个最小的 C++ 项目以在 Python 中使用。这种努力背后的真正原因是为了速度。

我遇到了 PyBind,对它的功能以及他们提供的文档数量感到非常惊讶。现在有一些事情阻止了工作,因为我不知道该怎么做。考虑文件“MySource.hpp”中的以下代码,您能告诉我如何完成绑定吗?

    struct Point3D  
    {
    public:
        double x, y, z;
        CPoint3D();
        CPoint3D(double x, double y, double z); 
        inline double Len() const;
        inline void Normalize();
    };

    Point3D VectorCross(const Point3D& pt1, const Point3D& pt2, const Point3D& pt3);
    void VectorCross(const float* u, const float* v, float * n);
Run Code Online (Sandbox Code Playgroud)

我能够将 Point3D 的绑定定义为一个类及其某些成员函数。但我不知道如何为重载方法“ VectorCross ”进行绑定。它有两种方法,一种接受 Point3D 的实例,另一种接受指向浮点数组的指针。

到目前为止我写的绑定如下所示

PYBIND11_MODULE(mymodule, m)
{
    py::class_<Point3D> point3d(m, "Point3D");
    point3d.def_readwrite("x", &CPoint3D::x);
    point3d.def_readwrite("y", &CPoint3D::y);
    point3d.def_readwrite("z", &CPoint3D::z);
    point3d.def(py::init<>());
    point3d.def(py::init<double , double , double >());
    point3d.def("Len", &CPoint3D::Len);
    point3d.def("Normalize", …
Run Code Online (Sandbox Code Playgroud)

swig boost-python cythonize pybind11

4
推荐指数
1
解决办法
4341
查看次数

如何使用 THREE.ShaderLib 创建自定义着色器

我一直在努力学习THREEJS着色器材料。到目前为止我了解了uniforms、vertexShader和fragmentShader在glsl和webgl的世界中如何在顶点和片段的投影和着色方面发挥作用。我一直在尝试找到一些很好的例子,其中使用 THREE.ShaderLib 扩展了 THREEJS 的 ShaderMaterial。

假设我想扩展一个标准的 Threejs 材质(THREE.ShaderLib['standard'])来写入 envmap 纹理,这可能吗?或者我是否绝对有必要从头开始编写所有内容?

javascript webgl three.js webgl-extensions aframe

3
推荐指数
1
解决办法
2825
查看次数