股票量化软件:赫兹量化中绘制三角形

概述

当您搞明白用 DirectX 绘制一个图元三角形时,需要编写大量代码并填充巨大的 C++ 结构,您就会想到初始化仪式。 不用提更复杂的东西了,比如纹理、变换矩阵和阴影。 幸运的是,MetaQuotes 解决了这个问题:它们隐藏了整个例程,而只留下了最必要的函数。 然而,它也有一个副作用:任何之前不熟悉 DirectX 的人都无法看到整个画面,也无法理解这一切发生的原因和方式。 而且依然还要编写很多 MQL 代码。

由于不了解引擎盖下的内容,DirectX 令人感到无从下手:“为什么它如此困难和令人困惑,难道不能让它变得更简单吗?”....然而这只是第一阶段。 此外,您还要学习 HLSL 着色器语言,和视频卡编程的特性。 为了避免所有这些混淆,我建议研究 DirectX 的内部结构,但务须太深入。 然后我们将用 MQL 编写一个小脚本,在屏幕上显示一个三角形。

输入布局

输入布局通知管道顶点缓冲区的结构。 我们只需要坐标,这就是为什么我们可以简单地传递 float4 类型的顶角数组,而无需使用特殊的结构。 float4 是由四个 float 变量组成的结构。

 
 

struct float4 { float x; float y; float z; float w; };

例如,考虑由一个坐标和两种颜色组成的更复杂的顶点结构:

 
 

struct Vertex { float4 Pos; float4 Color0; float4 Color1; };

该结构的 MQL 输入布局如下所示:

 
 

DXVertexLayout layout[3] = {{"POSITION", 0, DX_FORMAT_R32G32B32A32_FLOAT}, {"COLOR", 0, DX_FORMAT_R32G32B32A32_FLOAT}, {"COLOR", 1, DX_FORMAT_R32G32B32A32_FLOAT}};

“layout” 数组的每个元素定义顶点结构的对应元素。

  • DXVertexLayout 结构的第一个元素是语义名称。 它将顶点结构的元素映射到顶点着色器中的结构元素。 “POSITION” 表示该值负责坐标,“COLOR” 用于颜色。

  • 第二个元素是语义索引。 如果我们需要传递多个相同类型的参数,例如,两个颜色值,第一个对应索引 0 一起传递,第二个对应索引 1 一起传递。

  • 数值结构中的最后一个表示顶点的类型。 DX_FORMAT_R32G32B32A32_FLOAT 字面意思它是一种 RGBA 颜色,每个组件由 32 位浮点值表示。 这可能会令人困惑。 这种类型可用来传递坐标 — 它提供关于四个 32 位浮点值的信息,就像顶点结构中的 float4 一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值