Quiero que al estar en modo WireFrame me dibuje las líneas de un color que yo especifique.
Este es el shader:
//----------------------------------------------------------------------------------
//***********Las siguientes variables DEBEN tener EXACTAMENTE este nombre***********
float4x4 WorldViewProjection;
float4 Color_Pixel;
//----------------------------------------------------------------------------------
struct VS_INPUT
{
float3 position: POSITION;
};
struct VS_OUTPUT
{
float4 position: POSITION;
};
VS_OUTPUT VShader( VS_INPUT vin )
{
VS_OUTPUT vout;
// En la definición de shader utilizamos un float3 para la posición y necesitamos convertirlo a un float4
float4 Posicion_Vertice=float4(vin.position,1.0f);
vout.position = mul(Posicion_Vertice,WorldViewProjection);
return vout;
}
struct PS_OUTPUT
{
float4 color0: COLOR0;
};
PS_OUTPUT PShader()
{
PS_OUTPUT pout;
pout.color0= Color_Pixel;
return pout;
}
technique RenderScene
{
pass p0
{
VertexShader = compile vs_1_1 VShader();
PixelShader = compile ps_1_1 PShader();
}
}
Las texturas se ponen a NULL.
Pues me dibuja el wireframe en blanco :blink:
He probado poniendo el valor en el diffuse, pero nada.
¿ideas?
Prueba a en vez de poner esto:
PS_OUTPUT PShader()
{
PS_OUTPUT pout;
pout.color0= Color_Pixel;
return pout;
}
esto:
PS_OUTPUT PShader()
{
PS_OUTPUT pout;
pout.color0= float4(cualquier_color_menos_blanco);
return pout;
}
Esto es para asegurarse de que el problema no está al pasar el color al pixel shader. Si aún así sale blanco, el problema estará en algún render state.
Saludos.
ya lo probé y sale blanco. Pero aquí los RenderStates no deben afectar, a no ser que en modo wireframe, los pixelshaders NO actuen
Pues he hecho una prueba en RenderMonkey. En wireframe, como era de esperar, cambia el color de la malla al que tú le especifiques en el pixel shader. Lo único que he hecho ha sido especificar el modo wireframe y el resto de render states como los pone Direct3D por defecto.
Así que imagino que será algún render state...
Saludos.
Citara no ser que en modo wireframe, los pixelshaders NO actuen
El modo wireframe, ( fill o points ) establece como se rasterizan los poligonos, el siguiente stage del pipeline son las operaciones de pre-fragment, asi que los pixel shaders deberian funcionar con wireframe.
Yo tb pienso que pueden ser algun estado del render... con el mismo código, lo renderizas fill, se ve ok ?
Un Saludo.
Ya está, he descubierto el error. El problema es que no hacia el Pass del effect. :blink:
Gracias.