- 投稿日:2019-12-14T17:33:46+09:00
mac Visual Studio Code のターミナルのShellをZshに変更する
目的
- Visual Studio CodeのターミナルShellをZshに変更する方法のメモを書く
※本作業はPCにすでにZshが入っており、terminalでは使用できていることを条件とする。実施方法
- Visual Studio Code(以降、VScode)のエディタ画面の左上の「Code」をクリックする。
- 「基本設定」→「設定」と進む。
- 「設定の検索」に
terminal.integrated.shell.osx
と入力する。- 「settings.jsonで編集」をクリックする。
開いたファイルに下記の内容を追記する。場所はどこでもOK
"terminal.integrated.shell.osx": "/usr/local/bin/zsh"PCを再起動させてからVScodeのターミナルを開く
下記の内容が出力されるがEnterを押す
This is the Z Shell configuration function for new users, zsh-newuser-install. You are seeing this message because you have no zsh startup files (the files .zshenv, .zprofile, .zshrc, .zlogin in the directory~). This function can help you with a few settings that should make your use of the shell easier. You can: (q) Quit and do nothing. The function will be run again next time. (0) Exit, creating the file ~/.zshrc containing just a comment. That will prevent this function being run again. (1) Continue to the main menu. --- Type one of the keys in parentheses ---下記コマンドを実行してshellがZshになっているか確認する。
echo $SHELL >/usr/local/bin/zsh
- 投稿日:2019-12-14T16:44:55+09:00
【OpenGL】エンジンに頼らずゲーム作りたい -図形の描画-【2】
緒論
前回表示したウィンドウに自由な描画をできるようになることを目的とする.
方法
前回,警告文を消さずにプログラムを書いたが以下のサイトより
【XCode】Mac OSX 10.9 でも GLUTを非警告で使う#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
で警告文を消すことができた.
1.描画する
glBeginとglEndでくくりglVertex2dで座標の指定をするのが一連の流れのようだ.
void Display() { // (GLbitfield mask)ウィンドウを塗りつぶす maskは塗りつぶすためのバッファを指定する glClear(GL_COLOR_BUFFER_BIT); // ▼図形を描くためのプログラム▼ // (GLdouble r, GLdouble g, GLdouble b)これから描画するものの色を指定する glColor3d(0.0, 0.0, 0.0); // (GLnum mode)modeに図形タイプを入力 LINE_LOOPは折れ線を描く glBegin(GL_LINE_LOOP); // (GLdouble x, GLdouble y)二次元の座標値を設定する glVertex2d(-0.9, -0.9); glVertex2d(0.9, -0.9); glVertex2d(0.9, 0.9); glVertex2d(-0.9, 0.9); // (void)Begin~Endまでに図形の各頂点の座標値を指定する glEnd(); // ▲図形を描くためのプログラム▲ // (void)まだ実行されていないOpenGLの命令を実行 glFlush(); }結果が以下の通り.今回glBeginのmodeで指定したGL_LINE_LOOPは折れ線を描くものなので指定した座標を繋げた折れ線が描画された.
modeには以下のタイプが指定できるようだ.
glBegin() の引数 mode に指定できる図形のタイプには以下のようなものがあります. 詳しくは man glBegin を参照してください.
GL_POINTS
点を打ちます.
GL_LINES
2 点を対にして, その間を直線で結びます.
GL_LINE_STRIP
折れ線を描きます.
GL_LINE_LOOP
折れ線を描きます. 始点と終点の間も結ばれます.
GL_TRIANGLES / GL_QUADS
3 / 4 点を組にして, 三角形 / 四角形を描きます.
GL_TRIANGLE_STRIP / GL_QUAD_STRIP
一辺を共有しながら帯状に三角形/四角形を描きます.
GL_TRIANGLE_FAN
一辺を共有しながら扇状に三角形を描きます.
GL_POLYGON
凸多角形を描きます.2.触ってみる
星型とか描画したいと思い,多角形を描くための関数を作ってみた.
void Polygon(int N) { glColor3d(1.0, 0.0, 0.0); for(int i=0;i<N;i++) { glVertex2d(cos(PI/180*(90+i*360/N))*0.9, sin(PI/180*(90+i*360/N))*0.9); } }これの引数Nを5にしてfor文の条件を(i=0;i<2*n;i+=2)にするとできる.色指定を少し変えて以下の通りになった.
結果
色々作って遊んでみた.今回作ったPolygon関数の頂点の数を増やせば,ほぼ円になるので日の丸になりました.今回作成した描画は以下の通り.
main.cpp
main.cpp#include <OpenGL/OpenGL.h> #include <GLUT/GLUT.h> #include <math.h> #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #define PI 3.141592 // 多角形を描画するための関数 Nは頂点の数 void Polygon(int N) { for(int i=0;i<N;i++) { glVertex2d(cos(PI/180*(90+i*360/N))*0.9, sin(PI/180*(90+i*360/N))*0.9); } } // この中に描画したいものを入れる void Display() { // (GLbitfield mask)ウィンドウを塗りつぶす maskは塗りつぶすためのバッファを指定する glClear(GL_COLOR_BUFFER_BIT); // ▼図形を描くためのプログラム▼ // (GLdouble r, GLdouble g, GLdouble b)これから描画するものの色を指定する glColor3d(1.0, 0.0, 0.0); // (GLnum mode)modeに図形タイプを入力 LINE_LOOPは折れ線を描く glBegin(GL_POLYGON); // (GLdouble x, GLdouble y)二次元の座標値を設定する Polygon(100); // (void)Begin~Endまでに図形の各頂点の座標値を指定する glEnd(); // ▲図形を描くためのプログラム▲ // (void)まだ実行されていないOpenGLの命令を実行 glFlush(); } // 初期化処理を行う関数 void init(void) { // (GLclampf R, GLclampf G, GLclampf B, GLclampf A)glclearでウィンドウを塗りつぶす際の色の指定 glClearColor(1.0, 1.0, 1.0, 1.0); } int main(int argc, char *argv[]) { // (int *argcp, char **argv)GLUTとOpenGL環境の初期化 glutInit(&argc, argv); // (unsigned int mode)ディスプレイの表示モードを設定 GLUT_RGBAを指定すると色の指定を三原色で行える glutInitDisplayMode(GLUT_RGBA); // (char *name)ウィンドウを開く関数 glutCreateWindow("Title"); // (void (*func)(void))ウィンドウが開かれたり再描画の際に実行 glutDisplayFunc(Display); init(); // (void)無限ループの関数,イベント待ち状態 glutMainLoop(); return 0; }結論
- 2D描画できるようになった!