Después de mucho pegarme con el código y de mucho mirar en webs, por fin he conseguido mostrar un triangulo usando Shaders.
El Shader es muy básico, solo tiene un Vertex Shader que coloca el triangulo en el mundo (aquí su código):
struct VertexToPixel
{
float4 Position :POSITION;
float4 Color :COLOR0;
};
float4x4 xViewProjection : WORLDVIEWPROJECTION;
VertexToPixel SimplestVertexShader (float4 inPos : POSITION, float4 inColor : COLOR0)
{
VertexToPixel Output = (VertexToPixel)0;
Output.Position = mul(inPos, xViewProjection);
Output.Color= inColor;
return Output;
}
technique Simplest
{
pass Pass0
{
VertexShader = compile vs_1_1 SimplestVertexShader();
PixelShader = NULL;
}
}El único pero, es que debo hacer algo en el código que hace que cuanto mas tiempo se esta ejecutando mas baja el framerate, es algo del Shader porque cuando utilizo el Fixed Pipeline de Directx sin el Shader no me ocurre este decremento de Framerate.
Aqui pongo una imagen con el ejemplo, el triangulo de la derecha se crea con el Fixed Pipeline de DirectX y el de la izquierda con el Shader arriba publicado.

14/09/08:
Ya he encontrado el problema, era la carga e inicializacion del Effect que se hacia en cada ciclo, simplemente lo he puesto en la inicialización y ya se ha solucionado, ademas gracias a los Shaders he visto que hay un pequeño incremento del Framerate frente a usar el Fixed Pipeline.
El siguiente paso sera el Pixel Shader.