Я работаю с 2D-текстурами и хочу нарисовать простой круг, используя эту функцию, чтобы узнать, находится ли пиксель в круге или нет, а затем назначить ему цвет:
где (a,b) — центр окружности.
Я не возражаю, если это глупый и неэффективный способ достижения эффекта, я просто хочу научиться манипулировать плавающими элементами, чтобы рисовать этот круг. Предполагая, что вся часть в C # верна, а текстура представляет собой квадрат, как я могу исправить свой код?
sampler s0;
int radius;
static const float X_c = radius/2;
static const float Y_c = radius/2;
float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0
{
float4 color = tex2D(s0, coords);
float2 coords_sec = coords*radius*2; //To map coordinates in [0, radius*2] instead of [0,1]
//The same equation as above, just putting to the left radius
if ( ( (int)pow((coords_sec.x - X_c),2)
+ (int)pow((coords_sec.y - Y_c),2)
- (int)pow(radius,2) ) == 0.0 )
{
color.r = 1; //I want to draw a red circle
}
return color;
}
technique Technique1
{
pass Pass1
{
PixelShader = compile ps_2_0 PixelShaderFunction(); //Dice quale versione del pixelshader compilare
}
}
Пс. Кажется, я ничего не рисую. Я подозреваю, что условие if всегда ложно
Второй вопрос: есть ли простое руководство, блог или книга, которые помогут мне понять эти концепции (о 2D)?