前言
使用GDExtension,可以很轻松的写godot4的c++插件,并且不需要编译引擎
强烈建议先观看官方文档:GDExtension C++ example — Godot Engine (4.0) documentation in English
跟着做可以让你实现最基础的GDExtension工程
下载OpenCV
首先,你需要从 OpenCV 官方网站 (Releases - OpenCV) 下载 OpenCV 库。选择最新版本并下载对应操作系统的二进制包。
SCons配置Opencv
1、把下载好的opencv放到gdextension_cpp_example文件夹中(跟着文档教程走)
2、在SConstruct 文件中添加以下语句,指定 OpenCV 库的安装路径:
# 设置OpenCV库的路径
opencv_dir = "C:/Users/yanyan/Desktop/gdextension_cpp_example/opencv/build"
# 添加OpenCV库的include路径
env.Append(CPPPATH=[os.path.join(opencv_dir, "include")])
if env["platform"] == "windows":
env.Append(LIBPATH=[os.path.join(opencv_dir, "x64", "vc16", "lib")])
env.Append(LINKFLAGS=["opencv_world470.lib"])
print("已经导入opencv库:opencv_world470.lib")
这里注意,opencv_world470.lib对应opencv_world470.dll
opencv_world470d.lib对应opencv_world470d.dll
后面有d的是debug版本,如果编译之后闪退可能是用错了,可以换一下试试,并且最好管理员运行项目。
由于我们是下载的编译好的opencv版本,所以应该只有一个opencv_world,其他教程可能会有opencv_highgui、opencv_imgproc、opencv_core之类的东西,其实不用管,因为opencv_world都包含了。
3、手动把opencv_world470.dll复制到C:\Users\yanyan\Desktop\gdextension_cpp_example\demo\bin
这样项目运行时就能找到opencv的dll了
4、编译代码
使用cmd 输入scons platform=windows -j6
如果加上dev_build=yes则可以生成更多调试文件如pdb
注意你的gdexample.gdextension文件里面的
[configuration]
entry_symbol = "example_library_init"
[libraries]
windows.x86_64="res://bin/libgdexample.windows.template_debug.dev.x86_64.dll"
使用Opencv
#include <godot_cpp/variant/utility_functions.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
void GDExample::createOpencv(const String &name) {
UtilityFunctions::print("start");
cv::Mat img = cv::imread("C:/Users/yanyan/Desktop/gdextension_cpp_example/demo/aaa.png", cv::IMREAD_COLOR);
UtilityFunctions::print("zhongjian");
if (img.empty()) {
UtilityFunctions::print("Failed to load image");
};
cv::namedWindow("Image", cv::WINDOW_AUTOSIZE);
cv::imshow("Image", img);
cv::waitKey(0);
UtilityFunctions::print("over");
}