有关着色器的新手问题 [英] Newbie question about shaders
问题描述
嗨!
首先,我的英语很糟糕,我为此感到抱歉。
我正在写一份财务资料图表,以及在着色器中设置的所有操作都是从原始财务数据(索引,高,低,开,关)绘制烛台模式。我在几何着色器上做了这个。
这个任务很简单,因为它基于每个顶点。但是当我想要创建移动平均线时......问题就出现了。
移动平均算法很简单。
in c ++就是那样
////////////////////////// ////////////////////
//移动平均线5的例子(5可以是x)
std :: vector< DataPoint> MABUF;
//先跳过5
(size_t i = 0; i< 5; i ++)
mabuf.push_back(DataPoint());
//计算ma 5
size_t vbuflen = vbuf.size(); // vbuf =顶点缓冲区
float sum = 0.f;
for(size_t i = 0; i< vbuflen; i ++)
{
if(!(i%5))
{
DataPoint dp = vbuf [一世];
dp.pos.y = sum / 5.f;
sum = 0.f;
vbuf.push_back(dp);
}
sum + = vbuf [i] .pos.y;
}
我的问题是如何在hlsl中写出类似的东西?如何从N个先前顶点生成顶点?
抓住nvidia fxcomposer,它已经有很多着色器
Hi!
First of all, my english is bad and i am sorry for that.
I am writing a financial chart, and all managed to do in the shader is to draw a candlestick pattern from raw financial data ( index, high, low, open, close). I did this on geometry shader.
That task was easy because was based per vertex. But when i wanned to create a moving average.... the problems comes.
The algorithm of moving average are simple.
in c++ is like that
////////////////////////////////////////////// //example of a Moving Average 5 ( 5 can be x ) std::vector<DataPoint> mabuf; //skip first 5 for(size_t i = 0; i < 5; i++) mabuf.push_back(DataPoint()); //calculate ma 5 size_t vbuflen = vbuf.size();// vbuf = vertex buffer float sum = 0.f; for(size_t i = 0; i < vbuflen; i++) { if(! (i % 5) ) { DataPoint dp = vbuf[i]; dp.pos.y = sum / 5.f; sum = 0.f; vbuf.push_back(dp); } sum += vbuf[i].pos.y; }
My question is how can write somethig like that in hlsl? How to generate a vertex from N previous vertices?
go grab the nvidia fxcomposer, it has many shaders available already
这篇关于有关着色器的新手问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!