国产渲染引擎ssRender(Plugin插件篇)

ssRender插件(Plugin)使用说明:第一章 如何创建

最近关注到一款国产的渲染引擎(ssRender),其主打车载嵌入式领域,于是做了一下该软件的调查,把自己的使用过程记录一下,如果可以给大家作为参考,不胜荣幸!

首先我关注到的是这款软件的一个插件系统,官方称之为Plugin插件,其主要用于配合工具端使用,能提供数据、做自定义渲染等等等。

话不多说,我们先从创建开始搞!

首先plugin说明文档中提到需要使用visual studio2015,我们打开软件,我这里使用的是community版本。

1.创建一个c++->空项目。然后命名工程为Plugintest。

2.首先需要注意到的是,插件是一个动态链接库,所以我们在Windows平台下需要编译出来dll格式的文件,所以我们首先需要设置编译成果物的格式为dll,先右键点击工程->属性,然后 配置类型->动态库(.dll)。

3.添加cpp和.h文件,右键点击资源文件和头文件,选择 添加->新建项,依次添加cpp和.h文件。

创建完成之后,工程的主体如图所示:

4.然后我们需要设置引用头文件的位置和引用lib库的位置,这些文件在我们安装软件的目录都可以找到。

以图中为例 头文件引用位置,右键点击工程-> 属性->VC++->包含目录:

以下路径供参考:

Lib文件引用位置,右键点击工程-> 属性->VC++->库目录::

引用的lib库, 点击链接器-> 输入-> 附加依赖项:


jpeg.lib
glfw3.lib
ssrCore.lib
freetype.lib
libpng16.lib
ssrPlugin.lib
pthreadVC2.lib

还有一点说明中提到要加预编译宏:OS_Windows,右键点击工程 属性->c/c++ ->预处理器,添加OS_Windows。

5.然后呢,我们要夸一夸设计人员,已经为我们准备好了示例代码,刚好符合本人的拿来主义习惯hia!hia!。我们直接可以将说明文档中的代码拷贝粘贴即可。

"testPlugin.cpp"


#ifndef _PLUGIN_TYPE_RENDER_      
//#define _PLUGIN_TYPE_RENDER_//该宏定义是为了区分数据类型的plugin和渲染类型的plugin      
#endif      
 
#include "testPlugin.h"      
 
UserPluginDLL::UserPluginDLL()
{
#ifdef _PLUGIN_TYPE_RENDER_  
    loadMyShader();
#endif  
}

UserPluginDLL::~UserPluginDLL()
{
}

void UserPluginDLL::init_plugin(RenderEngineBase* renderEngine, func_writelog write_log)
{
    PluginBase::init_plugin(renderEngine, write_log);
}

SSRObject* UserPluginDLL::createSSRObject()
{
#ifdef _PLUGIN_TYPE_RENDER_//该宏定义是为了区分数据类型的plugin和渲染类型的plugin      
    SSRObject* ssrObj = new UserPluginDLL;
    ssrObj->m_ssRptr_plugin = this;
#else      
    SSRObject* ssrObj = new SSRObject;
    ssrObj->m_ssRptr_plugin = this;
#endif      

    ssrObj->m_ssRtype = OBJECT_TYPE_PLUGIN;

    m_ssrObject = ssrObj;
 
    return ssrObj;
}
 
void UserPluginDLL::release_plugin()
{
    if (m_ssrObject)
    {
        delete m_ssrObject;
        m_ssrObject = NULL;
    }
}

SSR_PLUGIN_DEFINITION(UserPluginDLL)//调用此宏定义,创建预定义函数接口    

#ifdef _PLUGIN_TYPE_RENDER_     
//自定义Shader :    

//Vertex Shader     
char vShaderStr_my[] =
"attribute vec3 ssVertexPosition;            \n"  //【不可修改】变量名固定    
"attribute vec2 ssVertexUV;                  \n"  //【不可修改】变量名固定    
"uniform mat4   ssMVP;                       \n"  //【不可修改】变量名固定    
"varying vec2   ssUV;                        \n"  //【不可修改】变量名固定    
"void main()                                 \n"
"{                                           \n"
"gl_Position = ssMVP*vec4(ssVertexPosition, 1.0); \n"
"ssUV = ssVertexUV;                          \n"
"}\n";

//Fragment Shader     
char fShaderStr_my[] =
"precision mediump float;                  \n"
"varying vec2 ssUV;                        \n"
"uniform sampler2D ssTextureSampler;       \n" //【不可修改】变量名固定    
"uniform vec3 myColor;                     \n" //【自定义】变量    
"void main()                               \n"
"{\n"
"gl_FragColor = texture2D(ssTextureSampler, ssUV)+vec4(myColor, 0.1);\n"
"}\n";

void UserPluginDLL::loadMyShader()
{
    //需要定义Program名字     
    setMyShaderSource("Custom_MyItem", vShaderStr_my, fShaderStr_my);
}

void UserPluginDLL::updateMyVar()
{
    //修改自定义变量的值     
    setVec3("myColor", 1.0, 0.0, 0.0);
}

#endif  

"testPlugin.h"


#pragma once   
#include "PluginBase.h"    

#ifdef _PLUGIN_TYPE_RENDER_ //该宏定义是为了区分数据类型的plugin和渲染类型的plugin    
class UserPluginDLL : public PluginBase, public Item
#else    
class UserPluginDLL : public PluginBase
#endif    
{
public:
    UserPluginDLL();
    ~UserPluginDLL();

    //实例化SSR对象    
    SSRObject* createSSRObject();

    //实例化之后执行run    
    void init_plugin(RenderEngineBase* renderEngine, func_writelog write_log);

    //实例化之后停止stop    
    void release_plugin();

#ifdef _PLUGIN_TYPE_RENDER_ //该宏定义是为了区分数据类型的plugin和渲染类型的plugin    
    void loadMyShader();
    virtual void updateMyVar();
    SSR_PLUGIN_DECLARATION(UserPluginDLL, PLUGIN_RENDER, "Author:**", "2023/03/16")
#else                      // 插件名字         插件类型     插件作者         创建时间
    SSR_PLUGIN_DECLARATION(UserPluginDLL, PLUGIN_DATA, "xiaobaidian", "2023/03/16")
#endif    

    SSR_PLUGIN_PROPERTY_DEF_BEGIN(UserPluginDLL)
                                 //  属性组名称        属性名称       属性数据类型 属性值  属性值最小值  属性值最大值    tips
        SSR_PLUGIN_PLUGIN_PROPERTY("GROUP_NAME", "PropertyName",   TYPE_INT,   "1",   0,         2,        "PROPTY_TIPS")
        //可以多次调用SSR_PLUGIN_PLUGIN_PROPERTY,创建不同的属性。    
    SSR_PLUGIN_PROPERTY_DEF_END()

    SSR_PLUGIN_EVENT_DEF(UserPluginDLL)
        SSR_PLUGIN_EVENT("CustomEventId")
        //可以多次调用SSR_PLUGIN_EVENT()创建不同的自定义EventId    
    SSR_PLUGIN_EVENT_DEF_END()
};
 

下面我们直接编译,右键点击工程 -> 生成。

然后我们就可以在工程目录下的Debug文件夹中找到dll文件。

本章结束,如果本教程有帮助到你,请别忘记点个赞那hiahiahia,下一章更精彩!

ssRender力争做国人自己的HMI解决方案!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
freemybatisplugin是一个用于MyBatis框架的插件,它可以简化MyBatis开发过程中的一些繁琐操作,让开发者更加高效地使用MyBatis。 要下载freemybatisplugin插件,首先需要打开浏览器,并进入freemybatisplugin的官方网站。在网站上,我们可以找到插件的下载链接。下载过程中可能需要提供一些基本的个人信息,例如邮箱地址等。 一旦下载完成,我们可以将插件文件(一般为jar文件)保存到合适的位置。接下来,需要将插件添加到我们所使用的IDE中。具体的添加方式根据不同的IDE而有所不同。 例如,对于IntelliJ IDEA这样的IDE,可以通过以下步骤添加插件: 1. 打开IDE,并进入“设置”菜单。 2. 在设置菜单中,找到“插件”选项。 3. 在插件选项中,找到“安装插件”按钮,并点击它。 4. 在弹出的文件选择窗口中,找到并选中之前下载的freemybatisplugin插件文件。 5. 点击“确定”按钮,开始安装插件。 6. 安装完成后,IDE会提示重启,点击“重启”按钮。 完成以上步骤后,freemybatisplugin插件就已经成功添加到IDE中了。接下来,我们可以在开发过程中使用插件提供的功能了。例如,插件可以帮助我们自动生成MyBatis的XML文件和Mapper接口,简化了繁琐的配置过程。 总之,通过以上步骤,我们可以方便地下载并安装freemybatisplugin插件,从而提高MyBatis开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值