アンチエイリアス(三角形の描画)
事前に次のことを理解しておいてください。
以下が三角形を描画するサンプルプログラムです。
パターン1から4のいずれかのみを有効にして実行してください。
function triangle1
try
AssertOpenGL
ListenChar(2);
%myKeyCheck;
screenNumber = max(Screen('Screens'));
[win, rect] = Screen('OpenWindow', screenNumber, 0, [10 50 750 550]);
%三角形の頂点の座標
apex = [0, 100, 100, 300, 300, 0;
0, 200, 200, 50, 50, 0];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%パターン1
% シンプルに三角形を描く
Screen('DrawLines', win, apex, [], [255, 255, 255]);
% 線分の太さを変える
%Screen('DrawLines', win, apex, [6, 4, 2], [255, 255, 255]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%パターン2
% 頂点の座標を、画面中央が(0, 0)になるようにシフトさせる。
%[center(1), center(2)] = RectCenter(rect);
%Screen('DrawLines', win, apex, [], [255, 255, 255], center);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%パターン3
% 3本の線分の色を変える
% 1本目:白から赤、2本目:白から緑、3本目:白から青)
%colvect = [255, 255, 255, 0, 255, 0;
% 255, 0, 255, 255, 255, 0;
% 255, 0, 255, 0, 255, 255];
%Screen('DrawLines', win, apex, 2, colvect);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%パターン4
% 三角形の辺を滑らかに描画する
% 線分の太さが1のだと点線のように描画されてしまうことがある。
%[center(1), center(2)] = RectCenter(rect);
%Screen('BlendFunction', win, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
%Screen('DrawLines', win, apex, 2, [255, 255, 255], center, 1);
Screen('Flip', win);
KbWait;
sca;
ListenChar(0);
catch
sca;
ListenChar(0);
end
注意点
- 線分幅がデフォルトの1のままでアンチエイリアシングを有効にすると、点線のように描画されることがあるようです。線分幅は2以上の値のほうがよいようです。
- Screen('DrawLine')という関数がありますが(LinesではなくLineであることに注意)アンチエイリアシングを有効にできません。アンチエイリアシングが必要であれば1本の線分でもScreen('DrawLines')を使ったほうがよいでしょう。