当前位置: 56net亚洲必嬴 > 数据库 > 正文

C++和C#编写调用COM组件

时间:2019-11-01 16:36来源:数据库
转自:http://www.maomao365.com/?p=6973  C++和C#编排调用COM组件 在unity中,通常都以用Cg语言编写顶点片元着色器,只怕直接行使表面着色器,这两个的编排语言都以Cg,除了Cg外,大家还足以行

转自:http://www.maomao365.com/?p=6973 

C++和C#编排调用COM组件

在unity中,通常都以用Cg语言编写顶点片元着色器,只怕直接行使表面着色器,这两个的编排语言都以Cg,除了Cg外,大家还足以行使OpenGL编写。

1.先是步导包:

摘要:
在sql脚本编写中,若是必要在update delete 中选用表别称的法子,必得依照一定的规行矩步编写,不然将会并发相应的要命音讯,如下所示:
试验情况:sqlserver 二零一零 Tucson2

下载源代码

用Cg编写的措施叫做HLSL,用OpenGL编写的不二秘技叫做GLSL。

1.struts2包:


摘要:以往COM组件的行使更为普及,在依次程序中调用COM组件小编想大家都遭受过,那篇文章便是有关COM组件的编排和调用的,主要含有了使用VC6.0编写和调用COM组件,VS2007中使用C#编辑和调用COM组件,甚至在VC6.0和VS二〇〇六之间交互调用COM组件。

那么,大家习于旧贯上行使Cg,也便是HLSL在unity中编辑shader,但不经常候换个口味也是能够的。
此地介绍的正是利用GLSL编写shader。

 图片 1

 

注重字:VC6.0编写调用COM VS二零零七中C#编排和调用COM VC6.0和VS二零零五以内相互调用COM

当然,这里介绍的只是语法结构,而不是关系比较多,而小编自个儿亦非很专长去编写那类shader。

2.spring包:

---update 表别名的写法
update [别名] set [别名].[字段] =[字段值] from [表名] as [表别名] where [条件]
---delete 表别名的写法
delete [别名] set [别名].[字段] =[字段值] from [表名] as [表别名] where [条件]

正文:

透过这几个语法结构,大家得以将一些用OpenGL编写的着色器获得unity中运用。

 图片 2

 

前阵子在工作中做项目标时候,蒙受了COM组件的调用和选取难点,那个时候研讨和好意气风发阵,才把高级中学级的环节打通,未来写出来为咱们提供方便,这里包括了八个档期的顺序:

OK,直接来看一下代码:

3.hibernate包:

1、在VS2005中,C#编写DLL并使用C++调用

简单的转移颜色shader代码

Shader "LearnShader/GLSL/GLSLTest"{
    Properties{
        _Color("Color",Color) = (1,1,1,1)
    }
    SubShader{
        Tags{
            "Queue" = "Geometry" 
            "RenderType" = "Opaque"
            "PreviewType" = "Plane"
        }
        Pass{
            GLSLPROGRAM
            #ifdef VERTEX
            void main(){
                gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
            }
            #endif
            #ifdef FRAGMENT
            uniform vec4 _Color;
            void main(){
                gl_FragColor = _Color;
            }
            #endif
            ENDGLSL
        }
    }
}

OK,如若您向来把这段代码拷贝进unity中的话会报错的。
在编排shader之间,大家需求对unity做一丝丝更改,使其扶持GLSL编写shader。

找到桌面上的unity赶快方式键,右键,打开属性面板,如下图:

图片 3

Paste_Image.png

在指标那生机勃勃栏中,最前面加多:-force-opengl
若是你的unity是开发的,那么就关闭重启一下。
接下来便是常规的开创shader代码,然后将上述代码写好,保存就可以。

必要我们注意的是:

  1. 若果您想透过inspector面板调度shader属性,那么除了在Properties块中定义属性外,在Pass块中定义属性要求在其品种前边加上 uniform 关键字。
  2. GLSL的代码段是被回顾在 GLSLPROGRAM 与ENDGLSL之间。
  3. 极限与片元着色器,都以透过 #ifdef 与 #endif 加上 VERTEX 与 FRAGMENT 关键字明显的。
  4. 极限与片元着色器中的相像gl_Position等是OpenGL中的语法。

上述就是关于使用GLSL编写shader的语法结构。

最终交给三个相比有趣的shader,也是接受GLSL编写的。

 图片 4

2、在VS2005中C#编写的COM组件,使用VC6.0调用

代码如下:

Shader "LearnShader/GLSL/GLSLTest"{
    Properties{
        _MainTex("Base(RGB)",2D) = "white"{}
    }
    SubShader{
        Tags{"RenderType" = "Opaque" "Queue" = "Geometry"}
        Pass{
            GLSLPROGRAM
            #ifdef VERTEX
            void main(){
                gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
            }
            #endif
            #ifdef FRAGMENT
            uniform sampler2D _MainTex;
            const float size = 0.5;

            void main(){
               vec2 realSize = vec2(textureSize(_MainTex, 0));
               float ratio = (realSize.x > realSize.y) ? 
               realSize.y/realSize.x : realSize.x/realSize.y;

               vec2 texSize = vec2(512., 512.);
               vec2 xy = gl_FragCoord.xy;

               if(realSize.x > realSize.y) {
                  xy.x = xy.x * ratio;
               }
               else
![Animation.gif](http://upload-images.jianshu.io/upload_images/5301156-17a2bc8700542539.gif?imageMogr2/auto-orient/strip)
{
                  xy.y = xy.y * ratio;
               }

               vec2 center = vec2(texSize/2.);

               float maxV = dot(center, center);
               float minV = floor(maxV*(1. - size));
               float diff = maxV - minV;

               vec2 uv = xy / texSize;

               vec4 srcColor = texture2D(_MainTex, uv);

               float dx = center.x - xy.x;
               float dy = center.y - xy.y;

               float dstSq = pow(dx, 2.) + pow(dy, 2.);

               float v = (dstSq / diff);
               float r = clamp(srcColor.r + v, 0., 1.);
               float g = clamp(srcColor.g + v, 0., 1.);
               float b = clamp(srcColor.b + v, 0., 1.);

               gl_FragColor = vec4( r, g, b, 1.0 );
            }
            #endif
            ENDGLSL
        }
    }
}

4.数据库包:

3、在VC6.0中编写COM组件,使用VS2005 C#调用

结果:

图片 5

Animation.gif

 图片 6

4、在VC6.0中编写COM组件,使用VC6.0调用

2.web.xml配置

其间每一个品种都写了七个程序,二个为COM组件程序,三个为调用程序

图片 7

程序达成:

图片 8

1、在VS2005中,C#编写DLL并使用C++调用

 

(1)C#编写DLL程序

 

建立C#编排的DLL程序AddDll,项目项目为:类库

3.struts2的配置:

程序代码:

1.struts.xml

using System;using System.Collections.Generic;using System.Text;namespace AddDll{    public class Add    {        public int iadd(int a, int b)        {            int c = a + b;            return c;        }    }}      

 图片 9

(2)C++编写调用程序

2.s001.xml

确立C++的Win32调整台应用程序UseDll,项目体系为:Win32调节台应用程序

 图片 10

编辑:数据库 本文来源:C++和C#编写调用COM组件

关键词: