有关着色器的新手问题 [英] Newbie question about shaders

查看:53
本文介绍了有关着色器的新手问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!


首先,我的英语很糟糕,我为此感到抱歉。


我正在写一份财务资料图表,以及在着色器中设置的所有操作都是从原始财务数据(索引,高,低,开,关)绘制烛台模式。我在几何着色器上做了这个。


这个任务很简单,因为它基于每个顶点。但是当我想要创建移动平均线时......问题就出现了。


移动平均算法很简单。 


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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆