草庐IT

反射率

全部标签

c# - C# 中的反射不适用于 COM(和 C++)

首先:我是COM的初学者。我在团队中从事大型项目。服务器部分是用C++编写的。客户端是用C#编写的。它们通过COM进行通信。现在-我在C#中有接口(interface)IA。我有对象o,其类型是类A(在C++中实现IA-它以某种方式通过COM传输)。我想使用反射来获取该类型的所有属性,但它无法正常工作。它只返回我在代码中使用的那些属性。这是检索属性的反射代码:Type[]ifaces=typeof(A).GetIterfaces();foreach(Typeifaceinifaces){foreach(PropertyInfoinfoiniface.GetProperties()){/

c++ - 如果没有递归光线跟踪,反射和折射是不可能的吗?

我正在使用GLSL计算着色器编写基于GPU的实时光线跟踪渲染器。到目前为止,它确实工作得很好,但是当涉及同时具有反射和折射时,我偶然发现了一个看似无法解决的问题。我的逻辑告诉我,为了在一个物体(如玻璃)上产生反射和折射,射线必须分成两束,一束射线从表面反射,另一束射线穿过该表面。这些光线的最终颜色然后将基于某些功能进行组合,并最终用作光线所源自的像素的颜色。我的问题是我无法在着色器代码中拆分光线,因为我必须使用递归来做到这一点。根据我的理解,着色器中的函数不能递归,因为由于与旧GPU硬件的兼容性问题,所有GLSL函数都类似于C++中的内联函数。是否可以在着色器代码中模拟或伪造递归,或者

c++ - 使用 Boost Hana 反射(reflect) C 风格数组

BOOST_HANA_DEFINE_STRUCT是声明具有内省(introspection)的结构时的绝佳宏。如果我有这样的结构:structPerson{std::stringname;std::stringlast_name;intage;};我们可以像这样重新定义它来添加内省(introspection):structPerson{BOOST_HANA_DEFINE_STRUCT(Person,(std::string,name),(std::string,last_name),(int,age));};但是如果我们有这样的结构呢:structPerson{floateye_di

C++反射是如何实现的

我知道C++不支持反射,但我看了论文Reflectionsupportbymeansoftemplatemeta-programming,但是没明白这是怎么实现的。关于如何使用模板元编程在C++中实现这一点,有人会提供更多详细信息或示例吗? 最佳答案 下面是一个结构示例,它在编译时测试Obj类型的Type是否具有名为“foo”的Type类型的公共(public)数据成员。它使用C++11特性。虽然可以使用C++03功能来完成,但我认为这种方法更优越。首先,我们使用std::is_class检查Obj是否是一个类。如果它不是类,则它不

c++ - C++ 11 是否支持模板类反射?

我对C++11模板略知一二。我的意图是具有如下所示的模板函数:templatevoidfunction(T*a){if(TbelongstoclassM){a->function_m();}else{a->function_o();}}C++11是否支持这种模板类反射? 最佳答案 是的,更好的是,您不需要执行if(...){}else{}语句来执行此操作。您可以使用标记分派(dispatch)或特化来避免条件语句。以下示例使用标签调度。例子:#include#includetemplatevoidfunction(D*a){func

c++ - 反射镜角度的解析法

我在3D空间中有一个固定光线Lr和一个可以围绕固定点Mrot旋转的镜子M,这一点不在镜子的同一平面上,换句话说,镜子平面与以Mrot为中心且半径固定d的球体相切。使用该配置,我想找到一个方程式,该方程式接收点P作为参数,并根据镜子在3D空间中的旋转得出结果。我们可以认为镜像平面没有边界(无限平面)并且它的旋转没有限制。此外,镜子仅在其旋转点的另一侧反射。图中是输入点P1和P2不同的两种情况,分别有解角alpha1和alpha2。图片为2D,简化绘图,真实案例为3D。此刻我在随机旋转计算与镜面的交点,然后计算光线反射,看看离我想到达的点(P)有多远。最后迭代一些条件改变旋转直到它匹配。显

c++ - 核心文件的大小是否反射(reflect)了应用程序崩溃时的内存使用情况?

我的应用程序(C++onSol10-32位)崩溃了,应用程序生成的内核大小为4GB。我可以假设应用程序在即将崩溃时可能会使用最多4GB的内存(与核心文件的大小相同)吗?附言。我的应用程序是独立的,不依赖于任何其他进程。有没有办法通过核心文件检查应用程序使用的总内存? 最佳答案 是的,核心文件代表崩溃发生时进程使用的整个虚拟内存区域的转储。32位进程的核心文件不能超过4GB。在Solaris下,您可以使用位于/usr/proc/bin中的几个命令从核心文件中获取信息。特别是:filecore:将确认核心文件来自您的进程pstackco

MATLAB模拟矩阵法绘制多层薄膜反射率与波长关系曲线

1.程序流程1.输入参数中心波长λ0入射介质折射率n0基片折射率ng膜层数量x依次输入n1、n2、n3…并且每输入一次n,选择一次该膜层对应的光学厚度入射角theta,并转化为弧度制2.计算各层参数由折射定律计算每一层的折射角计算每一层的ηp和ηs计算基片折射角和η3.循环产生变量λ用矩阵法循环计算不同λ对应的R、Rs、Rp4.绘制图像2.运行结果第一次:单层膜(直接带公式)第二次:单层膜(矩阵法、可输入入射角) 第三次:双层膜运行结果1(V型): 运行结果2(W型):多层膜: (以中心波长为510nm测试,未特别说明时,n1=1.0,ng=1.52)(单层膜,λ0/4)(单层膜,λ0/2)(

【Java 数据结构】反射

反射1定义2用途(了解)3反射基本信息4反射相关的类(重要)4.1Class类(反射机制的起源)4.1.1Class类中的相关方法(方法的使用方法在后边的示例当中)4.2反射示例4.2.1获得Class对象的三种方式4.2.2反射的使用5、反射优点和缺点1定义Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制2用途(了解)在日常的第三方应用开发过程中,经常

c++ - 镜面反射分量不正确的法线贴图和 phong 着色

我正在世界空间坐标中实现法线/凹凸贴图(我发现它们更容易使用)并且我的照明在没有法线贴图的情况下也能正常工作,但是当引入法线贴图(以及使用TBN矩阵计算的新vector)时我的照明的镜面反射组件已关闭。镜面反射分量不在相机和灯光之间,所以有些地方是错误的。但是,查看我的代码我找不到任何问题。切线和双切线来自ASSIMP对象加载器,eyePos和lightPos也在世界坐标中。由于光照在镜面反射部分看起来是正确的(显示了凹凸贴图),我认为它与切线空间变换有关?这是一张展示问题的图片:顶点着色器:#version330layout(location=0)invec4vertex;layou