/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="bufferable">一种渲染方式</param> /// <param name="shaderCodes">各种类型的shader代码</param> /// <param name="propertyNameMap">关联<see cref="PropertyBufferPtr"/>和<see cref="shaderCode"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable bufferable, ShaderCode[] shaderCodes, PropertyNameMap propertyNameMap, string positionNameInIBufferable, params GLSwitch[] switches) : base(bufferable, shaderCodes, propertyNameMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( bufferable, propertyNameMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
protected override void DisposeUnmanagedResources() { // dispose picking resources InnerPickableRenderer renderer = this.innerPickableRenderer; renderer.Dispose(); base.DisposeUnmanagedResources(); }
/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="model">一种渲染方式</param> /// <param name="shaderCodes">各种类型的shader代码</param> /// <param name="attributeMap">关联<paramref name="model"/>和<paramref name="shaderCodes"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( model, attributeMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="model">一种渲染方式</param> /// <param name="shaderCodes">各种类型的shader代码</param> /// <param name="attributeMap">关联<paramref name="model"/>和<paramref name="shaderCodes"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLSwitch[] switches) : base(model, shaderCodes, attributeMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( model, attributeMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="bufferable">一种渲染方式</param> /// <param name="shaderCodes">各种类型的shader代码</param> /// <param name="propertyNameMap">关联<paramref name="bufferable"/>和<paramref name="shaderCodes"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable bufferable, ShaderCode[] shaderCodes, PropertyNameMap propertyNameMap, string positionNameInIBufferable, params GLSwitch[] switches) : base(bufferable, shaderCodes, propertyNameMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( bufferable, propertyNameMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="model">一种渲染方式</param> /// <param name="shaderProgramProvider">各种类型的shader代码</param> /// <param name="attributeMap">关联<paramref name="model"/>和<paramref name="shaderProgramProvider"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( model, attributeMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
/// <summary> /// /// </summary> /// <returns></returns> public uint GetVertexCount() { InnerPickableRenderer renderer = this.innerPickableRenderer; if (renderer == null) { throw new Exception("InnerPickableRenderer is null!"); } return(renderer.GetVertexCount()); }
/// <summary> /// /// </summary> /// <param name="arg"></param> public void Render4Picking(RenderEventArgs arg) { InnerPickableRenderer renderer = this.innerPickableRenderer; if (renderer == null) { throw new Exception("InnerPickableRenderer is null!"); } renderer.Render4Picking(arg); }
/// <summary> /// /// </summary> /// <returns></returns> public uint GetVertexCount() { InnerPickableRenderer renderer = this.innerPickableRenderer; if (renderer != null) { return(this.innerPickableRenderer.GetVertexCount()); } else { return(0); } }
/// <summary> /// /// </summary> /// <param name="arg"></param> /// <param name="stageVertexId"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public PickedGeometry GetPickedGeometry( RenderEventArgs arg, uint stageVertexId, int x, int y) { InnerPickableRenderer renderer = this.innerPickableRenderer; if (renderer != null) { return(this.innerPickableRenderer.GetPickedGeometry(arg, stageVertexId, x, y)); } else { return(null); } }
/// <summary> /// /// </summary> /// <param name="arg"></param> /// <param name="stageVertexId"></param> /// <param name="x">mouse position(Left Down is (0, 0)).</param> /// <param name="y">mouse position(Left Down is (0, 0)).</param> /// <returns></returns> public PickedGeometry GetPickedGeometry( RenderEventArgs arg, uint stageVertexId, int x, int y) { InnerPickableRenderer renderer = this.innerPickableRenderer; if (renderer == null) { throw new Exception("InnerPickableRenderer is null!"); } PickedGeometry result = this.innerPickableRenderer.GetPickedGeometry(arg, stageVertexId, x, y); if (result != null) { result.FromRenderer = this; } return(result); }