ページが見つかりませんでした https://chiegra.com Mon, 28 Aug 2023 13:58:53 +0000 ja hourly 1 https://wordpress.org/?v=6.4.3 https://chiegra.com/wp-content/uploads/2021/10/fukuro_logo-75x75.png ページが見つかりませんでした https://chiegra.com 32 32 【PCL】VCPKGを使ってPoint Cloud LibraryをVisual Studioにインストール https://chiegra.com/pcl_visual_studio/ https://chiegra.com/pcl_visual_studio/#comments Wed, 25 Jan 2023 15:47:19 +0000 https://chiegra.com/?p=987  

Point Cloud Library(以降PCL)をVisual studioにインストールする方法をご紹介します。
自分も結構苦労したので備忘録もかねて。

Visual Studioのインストール

最初にVisual studioのインストールが必要です。
visual studio 2019のインストールにこの記事を参考にして下さい。

https://chiegra.com/visual-studio2019-install/

 

WindowsへのPCLインストールの方法

PCLはBoostやEigenなど複数の外部ライブラリを必要としますので、インストールも結構面倒です。
インストールもいくつかの方法が用意されています。

ALL-in-one-installer

必要なライブラリをまとめてインストールしてくれるので、一番簡単な方法だとおもいます。
しかしvisual studioの環境によりインストーラーも変わってきます。
色々試したのですが自分は成功しませんでした。

VCPKGを利用する

VCPKGとはC/C++で記述されたオープンソースのライブラリを利用する為のマイクロソフト提供のツールです。
手元でビルドする点が、上記ALL-in-one-installerと異なる点です。
ソースをビルドするので最新版が入手可能となり、自分の環境にも合わせやすいと言うメリットがあります。
今回ご紹介する方法もVCPKGを利用した方法になります。

ちなみにインストールには30GByte以上必要となりますので、十分な空き容量を確保して下さい。

VCPKGのインストール

githubよりvcpkgをクローンしVCPKGをビルドします。

GitHubよりVCPKGのクローン

VCPKGをインストールしたいフォルダVCPKGをクローンします。
vcpkgのgithubはアドレスは以下になります。
https://github.com/microsoft/vcpkg

Gitが初めての方は以下の記事を参考にしてみて下さい。

https://chiegra.com/github_registration/

以下はtourtoiseGitを利用した例です。
VCPKGのインストールフォルダはd:\pcl_testとしました。
1)d:\pcl_testフォルダを右クリックしGitクローンを選択します。

2)URLにvcpkgのgithubのアドレスを入力します。ディレクトリに項目は自動で入力されるはずです。
他の項目はデフォルトのままで構いません。
OKを押すとクローンが始まります。
クローンが成功するとd:\pcl_test配下にvcpkgフォルダが生成されます。

 

VCPKGのビルド

ビルド作業はPowerShell上で行います。コマンドプロンプトではありませんのでお気を付け下さい。

1)PowerShellを立ち上げます。

2)PCLをインストールしたいフォルダに移動します。本例ではd:\pcl_test

3)以下のコマンドを打ち込みます。
.

vcpkg\bootstrap-vcpkg.bat
すぐにビルドが完了します。

 

PCLのインストール

PCLのインストールもPowerShellで行います。
フォルダは移動せず(本例ではr:\pcl_test)下記コマンドを入れて下さい。
vcpkg\vcpkg.exe install pcl:x64-windows

インストールには30分~1時間ほどかかります。

Visuallizationのインストール

この状態ではまだvisualizaitionがインストールされていません。
必要に応じてこちらもインストールします。
vcpkg\vcpkg.exe install pcl[visualization]:x64-windows –recurse

vcpkg\vcpkg.exe install pcl[visualization] –triplet x86-windows –recurse

※2023年8月28日現在、コマンドが修正されたようです。
コメントを頂きましたikumiti様ありがとうございます。

 

こちらもかなり時間がかかります。

CMake

visual studioではビルド環境をソリューションと呼びますが、CMakeでこれを構築します。
通常のプログラムではVisual studioのウィザードから構築出来ますが、PCLでは必要なライブラリが多数ありますのでCMakeを利用します。

先ずはサンプルソースを作成するフォルダをpcl_test配下に作成して下さい。
ここではsampleフォルダとします。

CMakeのインストール

cmakeのホームページよりWindows用のインストーラをダウンロードし実行して下さい。
64bit版と32bit版がありますのでOSのbit数と同じバージョンを利用します。

Next


ライセンス画面です、確認してチェックを入れてNext


PATHの設定です、不要なはずですが実行時に不具合が出たら設定を有効にします


インストール先です、デフォルトで構いません。(筆者はドライブ容量の関係でDドライブにしています)


Installボタンでインストール開始します。


インストール中


インストール終了。

CMake用の環境設定

先ほど用意したsampleフォルダにCMakelists.txtとソースコードを配置しCMakeを走らせることでプロジェクトを生成します。
プロジェクト名をsampleとしソースファイルをmain.cppとします。
CMakelists.txtとmain.cppをsampleフォルダにコピーして下さい。

CMakelists.txt

CMake用の設定ファイルです。
シンプルな設定です。

2行目、project(abc)は希望するソリューション名を入れます。
この例ではabcソリューションが生成されます

7行目、add_executable (sample main.cpp)
sampleフォルダのmain.cppを指定してます。

8行目、target_link_libraries (sample ${PCL_LIBRARIES})
sampleフォルダを指定します。

上記以外の行はそのままで構いません

main.cpp

特に処理はしていない、シンプルなmain.cppを用意しました。

CMakeの実行

PowerShellでd:\pcl_test\sampleフォルダに進み以下のコマンドを入力します。

cmake -B D:\pcl_test\sample\build -DCMAKE_TOOLCHAIN_FILE=D:\pcl_test\vcpkg\scripts\buildsystems\vcpkg.cmake

簡単な説明

このような画面になればCMakeは成功です。

sampleフォルダ配下にbuileフォルダが出来ているのを確認して下さい。

 

Visual studio

これまでの作業でVisual Studioのソリューションファイルが作成されています。
今回の例ではabcソリューン。

abc.slnをクリックしてVisual studioを立ち上げます。
立ち上がったらソリューションエクスプローラーのsampleを右クリックしてスタートアッププロジェクトに設定します。

ビルドを行いエラーが無ければ成功です。

 

チュートリアルコードのコピー

PCLでは様々なチュートリアルコードが用意されています。
次の項からはそれらチュートリアルについて検証します。
チュートリアルはソースコードだけをコピーするよりPCL全体をコピーした方が簡単です。
以下のアドレスよりクローンしてご利用下さい。
https://github.com/PointCloudLibrary/pcl

チュートリアルコードは以下にあります。
pcl→doc→tutorials→content→source

サンプルデータのコピー

チュートリアルで利用するサンプルデータも事前にダウンロードしておくと便利です。
サンプルコードは以下にありますので、クローンして下さい

https://github.com/PointCloudLibrary/data

お疲れ様でした。

 

 

]]>
https://chiegra.com/pcl_visual_studio/feed/ 3
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】 https://chiegra.com/opengl_06/ https://chiegra.com/opengl_06/#respond Sun, 22 Jan 2023 07:19:33 +0000 https://chiegra.com/?p=962 前回作成した図形の回転/移動をおこないました。
図形そのものを回転させています、手で持ったサイコロを回転させているイメージになります。

今回は視点そのものを移動させて図形を上から眺めるサンプルになります。
机の上にサイコロを置いて自分が移動するイメージになります。
メリットは垂直方向の軸が動かないことです。
前回のサンプルでは垂直軸も動いていました。
建築物や人物を確認する際には垂直軸はそのままが良いですよね。

OpneGLによる視点移動

gluLookAt(GL_double x, GL_double y, GL_double z, GL_double px, GL_double py, GL_double pz, GL_double ux, GL_double uy, GL_double uz);

視点移動にはgluLookAt関数を利用します。
最初のx,y,zはカメラの座標、次のpx,py,pzは注視点の座標、最後のux,uy,uzはカメラ本体の向きになります。
カメラ本体の向きとは上下逆さまなどの事です、一般的には正立設置で良いでしょう。

視点移動について

視点移動はgluLookAt関数で簡単にできるのですが、与えるパラメータはどうでしょうか?
表示対象の上に半球状のドームをイメージし、その上をカメラが移動することでなめらかなカメラ移動を実現出来ます。

ドーム座標の計算

ドーム座標は以下の式で求める事が出来ます。
x座標 = 半径*cos(垂直角)*sin(水平角)
y座標 = 半径*sin(垂直角)
z座標 = 半径*cos(垂直角)*cos(水平角)

垂直角は0~90°までです。

サンプルコードの説明

カメラの位置を決めるためのパラメータ、水平角、垂直角、カメラまでの距離はそれぞれrot_h,rot_v,cam_distです。
これらの変数は矢印キーおよび、マウスホールの回転により変化させています。
ドーム上の座標を関数get_doom_xyzで求めた後、opengl_viewで表示を行っています。
opengl_viewでは、view_cube関数の直前でgluLookAtを行う事で視点を設定しています。

サンプルコード全文

視点移動を行った画面です。
前回とことなり垂直軸は動いていません。


いかがでしたか?
visual studioでOpenGLのインストールから視点移動までを解説しました。
OpenGLについてはこの記事で一旦終了とします。
お疲れ様でした。

 

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍

]]>
https://chiegra.com/opengl_06/feed/ 0
GLUTを使わないOpeGL超入門_05【移動・回転】 https://chiegra.com/opengl_05/ https://chiegra.com/opengl_05/#respond Mon, 09 Jan 2023 15:39:18 +0000 https://chiegra.com/?p=957 前回までで基本的な描画を行う事ができたと思います。
今回はOpenGLの醍醐味、作成したデータをぐりぐり回転させて見ましょう。

OpenGL回転

glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);

OpenGLで回転を行う為にはglRoatedを使います(floatの場合はglRoatef)
angleは回転角x,y,zは回転軸を示します。
1回で指定する必要は無くサンプルのようにx,yを順次与えても構いません。

OpneGL移動

glTranslated(GLdouble x,GLdouble y,GLdouble z);

平行移動を行う為の関数です。
x,y,zにそれぞれ移動量を設定します。

サンプルコード説明

平行移動

平行移動のパラメータはグローバル変数mov_h,mov_vを用意しています。
windowsのキーダウンメッセージを受け取るとAキーでmov_hの減算、Dキーで加算、Wキーでmov_vの減算、Sキーで加算を行っています。
これらの変数はopengl_view関数内の
glTranslated(mov_h, mov_v, -5);
で利用されています。
z軸に関しては少し離れたところから全体を見るため-5の固定としています。

回転

グローバル変数として回転制御パラメータ、rot_h_rot_vを用意しています。
平行移動同様Winodwsのキーダウンメッセージで変更しています。
回転もopengl_view関数内でY軸、X軸の順で回転を掛けています。
glRotated(rot_h,0,1,0);←Y軸で回転
glRotated(rot_v,1,0,0);←X軸で回転

サンプルコード全文

回転をかけるとこのようにそれぞれの面を見ることが出来ます。

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍

]]>
https://chiegra.com/opengl_05/feed/ 0
GLUTを使わないOpeGL超入門_04【ビューポート】 https://chiegra.com/opengl_04/ https://chiegra.com/opengl_04/#respond Mon, 09 Jan 2023 09:27:44 +0000 https://chiegra.com/?p=943 前回は立方体の塗りつぶしを行いました。
view_cube関数で縦横0.5の正立方体を定義したはずなのに長方形に表示されていたと思います。
またウインドウサイズを変更するとそれに伴い縦横比が変わってしまいます。
ビューポート変換を行う事で、正しい比率の描画を行う事が出来ます

 

ビューポート変換

ざっくりですが、座標変換はモデル毎に決まる座標系(例えばティーカップの中心を原点とするなど)、それが3次元空間のどこにあるかを示すワールド座標系。
ワールド座標系のデータを(-1,-1,-1)~(1,1,1)のデータ範囲に収まるようにした正規化座標系、さらに表示デバイスにピクセルデータに変換したデバイス座標系があります。
(他にも視点座標系やクリップ座標系がありますが説明は割愛)

この中で正規化座標系からウインドウ座標系に変換する作業をビューポート変換と呼びます。

 

サンプルソースコード

このような画像が作成されれば成功です。
ウインドウの拡大縮小などを行ってみて下さい。
サイズは変わりますが縦横の比率は同じはずです。

解説

基本的にはopengl_view関数を書き換えています。
最初に画面サイズの取得を行っています。
これはビューポート設定に画面サイズが必要なためです。

glViewport(0,0,w,h);
ビューポート設定関数。画面サイズ全面を描画領域としています。

glMatrixMode(GL_PROJECTION);
ビューポートと直接関係ありませんが、遠くの物が小さく見える視野変換を行っています。

glLoadIdentity();
変換行列の初期化を行っています。

gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
視界を設定しています。
最初の30は視野角で30°の視野角を設定しています。
次のパラメータは縦横比になります。
1.0は一番近いZ位置、100は一番遠いZ位置を示します。

glTranslated(0, 0, -5);
ユーザー視点になります。ここではxとyを0として、z方向に-5、つまり後ろに下がった位置を視点としています。

glEnable(GL_DEPTH_TEST);
隠面消去とよばれる深度テストの有効化です。
これによる手前のデータで奥のデータが見えないようにコントロールします。
ちなみにこの行をコメントアウトすると立方体上面の白が見えてしまいます。

サンプルソース全文

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍


 

]]>
https://chiegra.com/opengl_04/feed/ 0
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】 https://chiegra.com/opengl_03/ https://chiegra.com/opengl_03/#respond Tue, 03 Jan 2023 14:46:41 +0000 https://chiegra.com/?p=936 前回はワイヤーフレームで立方体を描画しました。
このままでは表示されている面がわかりにくいので、それぞれの面に異なる色を付けてみましょう。

今回もGLUT以外は下記の書籍を参考にしています。

OpenGL API

OpenGLはシリコングラフィックス社により定義された3Dグラフィックライブラリです。
OSに依存しない設計となっている為、高機能なAPIは含まれず点や線、ポリゴンなどの基本的な描画要素のみがサポートされています。
OpenGLのAPIはプリフィックスがglとなっています。

GLU API

OpenGLのAPIは基本的な描画機能しか含まれていないため、上位機能をサポートするGLUT(OpenGL Utility Library)が用意されています。
球や円柱表示、透視変換などの高度な描画機能を提供しています。
GLUのAPIはプリフィックスがgluとなっています。

本サンプルにおいてもGLU APIを利用しています。

GLUT API

OpenGLはOSに依存しない設計となっている為、ウインドウシステムやキー、マウスなどの入力補助を持っていません。
GLUT(OpenGL Utility Toolkit)はこれらの機能をOpenGL上で提供する補助システムです。

しかしGLUTの持つウインドウシステムは基本機能のみのため、高度なウインドウシステムには不向きだと筆者は考えています。
そのため本サンプルではGLUTは利用せずWindowsの持つウインドウシステムを利用しています。

OpenGLによる立方体の塗りつぶしサンプル

このような表示が出れば成功です。

前回からの修正箇所は、view_cube関数のみです。
簡単にポイントをお伝えします。

glBegin(GL_QUADS);

glBeginは頂点指定のAPIで引数で指定した頂点をどのように利用するかを示します。
前回の線描画ではGL_LINESで2点間を線分で結ぶ指定をしていました。
GL_QUADSでは4点を頂点とする四角形の指定となります。

glColor3dv

カラー指定のAPIです。
前回の線描画で利用したColor3dとは異なり、RGBの配列を指定します。
今回のサンプルでは6面が異なる色で描画する必要があるためあらかじめテーブルで色を用意する必要があります。
このように色を変えるような使い方ではColor3dよりColor3dvが適しています。

 

ソースコードになります。

 

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍

]]>
https://chiegra.com/opengl_03/feed/ 0
GLUTを使わないOpeGL超入門_02【立方体の表示】 https://chiegra.com/opengl_02/ https://chiegra.com/opengl_02/#respond Sun, 01 Jan 2023 09:57:44 +0000 https://chiegra.com/?p=923 前回はVisual StudioでOpenGLを使う環境を整えました。
今回は立方体を表示するサンプルを作成します。
もちろんGLUTは利用しませんがGLUT以外は下記の書籍を参考にしています。

OpenGLの座標系

基礎知識としてOpenGLの座標系をご説明します。
OpenGLでは水平方向横軸がx,縦軸がz、垂直方向がYとなります。
上から見下ろしたイメージではXとZで平面空間を表していますので注意が必要です。
一般的な数学ではXとYで平面空間を表すので間違えないようにして下さい。

座標系以外に必要な知識は、必要なタイミングで解説します。

OpenGL簡単なサンプル

立方体を描く簡単なサンプルです。
描画メッセージWM_PAINTに描画処理を記述します。
サンプルではopengl_view関数で処理を行っています
※Windowsに関する部分の説明は省略します。

OpenGLのコンテキストとデバイスコンテキストを結び付ける

openglで描画する為にはWindowsのデバイスコンテキストを結び付ける必要があります。
流れは以下のようになります。
1)ピクセルフォーマットの選択
2)デバイスコンテキストにテキストフォーマットを設定
3)OpenGLコンテキストを作成
4)作成したOpenGLコンテキストをデバイスコンテキストにする

これらの処理を自前の関数opengl_dcで行っています。
この処理は特に変更の必要は無いと思います。

ピクセルフォーマットの選択

ピクセルフォーマットは構造体PIXELFORMATDESCRIPTORにあらかじめ情報を設定しておきます。
サンプルでは変数名pfdです。
内容に関してはサンプルから特に変更する必要は無いでしょう。
ChoosePixelFormat関数でピクセルフォーマットの番号を取得できます。

デバイスコンテキストにテキストフォーマットを設定

SetPixelFormat関数でピクセルフォーマットとデバイスコンテキストを結び付けています。

OpenGLコンテキストを作成

OpenGL用のコンテキストHGLRCを作成します。
作成したHGRCはプログラム終了まで必要なのでグローバル変数に保存しています。

作成したOpenGLコンテキストをデバイスコンテキストにする

Windowsでは描画はデバイスコンテキストに行われます。
wglMakeCurrentを使ってOpenGL用のコンテキストとデバイスコンテキストを結び付けています。

OpenGLの描画

glClear

glClearAPIでバッファのクリアを行っています。

view_cube

自前の立方体描画関数です

GLdouble vertex[][3]=部分で立方体の頂点座標を登録しています。
OpenGLでは32bit浮動小数点であるGLfloatと64bit浮動小数点であるGLdouble が利用出来ます。
64bitOSを利用している筆者は基本的に64bit浮動小数点を利用しています。
次のint edge[][2]は直線を引く為のテーブル情報です。

glColor3d(1.0, 0.0, 0.0);で描画する線の色を指定しています。
引数はRGBの順で1が最大値になりますのでRを最大値にしていますから線は赤になります。
描画の単位はglBeginからglEndです。
glBeginで描画する種類を指定します。引数GL_LINESは直線描画を指定しています。
glVertex3dvは3D座標を設定する関数です。
例えば座標(0,0,0)から座標(1,1,1)に直線を引く為には以下のように記述します
glBegin(GL_LINES);
glVertex3dv(0,0,0);
glVertex3dv(1,1,1);
glEnd();

サンプルプログラムではこれを直線描画を12回繰り返して立方体の描画を行っています。

※view_cube関数は工学社GLUTによるOpenGL入門を参考にしています。

glFlush

バッファへの描画指示です。
view_cuve関数で行ったような描画指示(glBegin~glEnd)の内容を実際に描画バッファへ書き込みます。
glFlushを行わないと描画されません。

SwapBuffers

ダブルバッファの処理です。
PIXELFORMATDESCRIPTORを設定した際にダブルバッファを有効にしておく必要があります。
本サンプルでも有効になっています。

解放

以下の関数を呼び出して、利用したコンテキストを解放します。
wglMakeCurrent
wglDeleteContext

 

 

実行結果

このような画面が生成されれば成功です。
立方体を描いたのに長方形が表示されていますよね。
これは真横から立方体を眺めているからです。
次回は動かして立方体であることを確認します

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍


 

 

]]>
https://chiegra.com/opengl_02/feed/ 0
GLUTを使わないOpeGL超入門_01【Visual Studio設定】 https://chiegra.com/opengl_01/ https://chiegra.com/opengl_01/#respond Sat, 31 Dec 2022 13:06:32 +0000 https://chiegra.com/?p=900 はじめに

OpenGLはシステムに依存しない3Dのレンダリングシステムですが、実際に画面に描画する為にはOSに依存する部分も多くその部分を補完するためGLUT(OpenGL Utility Toolkit)が多く利用されています。またサンプルもGLUTに依存した物が多く見られます。
しかしWindowsは優秀なWindowシステムを持っているのでこれを利用しない手はありません。
ここではGLUTを使わずOpenGLで簡単に図形を書くまでを解説します。
開発環境はVisual studio、ある程度Windows SDKを使った開発経験のある方を対象としています。

Visual studioのインストール方法についてはこちらを参照して下さい。

 

プロジェクトの作成

OpenGLを動かすためのサンプルプロジェクトを作成します。
新しいプロジェクトの作成からプロジェクトを作ります。

1)空のプロジェクトを選択します。

2)プロジェクト名はお好きななものをどうぞ。

3)プロジェクトが完成。

NuGetを利用したOpenGL用ライブラリの取得

OpenGL用のライブラリを取得します。
NuGetを使うことで簡単に利用する環境を構築できます。

nupengl

1)メニューよりツール→NuGetパッケージマネージャー→ソリューションのNuGetパッケージの管理に進みます。

2)NuGetソリューションのタブが開きます。参照を選び検索ウインドウに”nupengl”を打ち込みます。
nupengl.core,nupengl.core.redistのファイルが表示されるはずです。

3)表示されたファイルのどちらかをクリックすると右のウインドウにインストール用の画面が表示されます。
対象のプロジェクト(ここではno_glut_samp_01)を選択肢インストールを行います。

4)OKを押すとインストール開始

5)インストールが終了画面

glm

glmはOpenGLで使用する行列関連のライブラリになります。
NuGetソリューションの検索にglmと入れて下さい。
glmを選択しインストールを行います。

ライブラリopengl32.lib,glu32.libの設定

最後にOpenGLライブラリを依存関係に追加します。
ソリューションエクスプローラのプロジェクト名で右ボタンをクリック、プロパティを選択します。

構成プロパティ→リンカー→入力より追加の依存ファイルに”opengl32.lib”を追加します

同様に、glu32.libも追加します。

以上でOpenGLを利用する環境は整いました。

サブシステムの設定

OpenGLとは直接関係ありませんが、以降のOpenGLのサンプルはWindowsアプリケーションで動作します。
Visual StudioのデフォルトはコンソールアプリになっていますのでWindows用に切り替えておきます。
切り替えないとリンクエラーになります。

構成プロパティ→リンカー→システムを選択しサブシステムをWindows(/SUBSYSTEM:WINDOWOSにします)

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍


 

 

 

]]>
https://chiegra.com/opengl_01/feed/ 0
GitHubをTortoiseGitで利用する方法を解説【3.TortoiseGitからGitHubをアクセス】 https://chiegra.com/github_access/ https://chiegra.com/github_access/#respond Thu, 29 Dec 2022 16:35:55 +0000 https://chiegra.com/?p=872 はじめに

ソースコード開発において、バージョン管理は欠かせません。
subversionやTeaam Foundation Serverなども有名ですが、現在は主にGitが利用されています。
Visual studioでも標準でサポートされていることから筆者はGitを利用しています。

WindowsでGitを利用する際に便利なGUIクライアント「TortoiseGit」を利用しGitサーバーであるGitHubへのデータ保存までを複数回に渡り解説します。
本章では前回に引き続き具体的にTortoiseGitからGitHubアクセスまでを解説します。

Gitについて

詳しい解説は他に譲るとしてGit利用にあたり最低限必要な知識を解説します。
Gitの特徴はローカルPCにもリポジトリがあることです。
subversionなどのバージョン管理ツールはサーバーにしかレポジトリがありません。
そのため、評価不完全なたソースコードもレポジトリに反映されてしまう欠点がありました。
これは複数のメンバーで開発する際に大きな問題となります。
Gitはローカルにもレポジトリを持つことで評価済みのバグの無いソースをサーバーのレポジトリに反映させることが出来ます。

Git用語解説

コミット:ローカルレポジトリにソースをコピーします。
プッシュ:ローカルレポジトリのソースをサーバーのレポジトリにコピーします。
プル:サーバーのレポジトリのソースをローカルレポジトリにコピーします
クローン:レポジトリそのものをコピーします。下の図ではサーバーからローカルへの矢印になっていますが反対方向にも可能です。

TortoiseGitの設定

 

コミット

リポジトリのURL確認

GitHubの登録を行った際に、レポジトリを作成しました。
今回はそのレポジトリを利用します。
レポジトリを忘れてしまった方は作成したGitHubにサインインして右上のボタンからyour repositoriesを選択して下さい

作成したレポジトリを選択

レポジトリのURLを確認できます。

レポジトリのフォルダの決定

ローカルレポジトリを作成するフォルダを決定します
日本語のフォルダは避けた方が良いでしょう。
ここではDドライブ直下のGitFolをレポジトリリのフォルダとして進めます。
決定したフォルダで右ボタンをクリック、ここにレポジトリを作成を選択します。

Bareを生成のチェックボックは外した状態でOK

レポジトリが作成されました。

フォルダ内に.gitフォルダが生成されているはずです。

コミットテストソースの追加

サーバーへのプッシュを行うテストソースを作成します。
(もちろん手持ちのソースファイルでも構いません)
ここではtest.txtを用意しました。
これをローカルのレポジトリフォルダGitFolに置きます。
このファイルを右ボタンでクリックし追加を選択します。

コミットボタンを押して下さい。

コミット

上でコミットボタンを押すとコミットを行います。
コミットには、そのコミットの内容を示すメッセージが必要になります。
今回はテストなのでその旨を記入しています。

下の枠には変更した項目が表示されています。
test.txtが追加となっているはずです。

最後に下の”コミットしてプッシュ”のボタンを押します。

TortoiseGitの設定

最初はTortoiseGitにサーバーレポジトリのアドレスをセットする必要があります。
この画面で管理ボタンを押します。

TortoiseGitの設定画面に切り替わります。

URLとプッシュURLにGitHubのリポジトリアドレスを記入します。
リモートの”origin”は自動的に記入されます。
OKを押して下さい。

リモートに”origin”が入っていると思います。
そのままOKを押すとコミットが始まります

コミットが正常終了するとこのような画面になります。
閉じるボタンを押して終了です。

 

GitHub上で、コミットファイルが確認できます。

 

最後に

3回にわたりGitの利用について簡単に解説してきました。
Gitを利用することでファイルのバージョン管理が簡単に行えます。
まだ試していない方はこの機会に是非トライしてみて下さい。

https://chiegra.com/github_registration/

https://chiegra.com/tortoisegit_install/

 

]]>
https://chiegra.com/github_access/feed/ 0
GitHubをTortoiseGitで利用する方法を解説【2.TortoiseGitインストール編】 https://chiegra.com/tortoisegit_install/ https://chiegra.com/tortoisegit_install/#respond Thu, 29 Dec 2022 12:35:03 +0000 https://chiegra.com/?p=836 はじめに

ソースコード開発において、バージョン管理は欠かせません。
subversionやTeaam Foundation Serverなども有名ですが、現在は主にGitが利用されています。
Visual studioでも標準でサポートされていることから筆者はGitを利用しています。

WindowsでGitを利用する際に便利なGUIクライアント「TortoiseGit」を利用しGitサーバーであるGitHubへのデータ保存までを複数回に渡り解説します。
本章では前回に引き続きTortoiseGitをインストールするまでを解説します。

TortoiseGitとは

Gitは基本はコマンドラインで操作します。
このためコマンドラインを覚える必要があり少々使いにくい面があります。
TortoiseGitはGUIベースでGitアクセスが出来るため大変使いやすくWindowsユーザーなら使わない手はありません。

ちなみに「トータスギット」と読みます。
時々「トートイズギット」と呼ぶ方もいますが間違っていますので教えてあげましょう。

Git for Windowsのインストール

実はTortoiseGitにはGit本体が含まれていません。
Git本体はGit for Windowsです。
まずはGit for Windowsをインストールします。
以下をアクセスして下さい。
https://gitforwindows.org/

Downloadボタンを押すと自動的にプログラムがダウンロードされます。

ダウンロードした実行ファイル”Git-xxxx-64-bit.exe”を実行します。
1)オプションは気にせずNext

2)インストールフォルダの選択、デフォルトのままで構いません

3)インストールするコンポーネントの選択です、デフォルトのままで構いません

4)スタートメニューです、デフォルトのままで構いません

5)Git上のデフォルトエディタの設定、デフォルトのままで構いません

6)新リポジトリの初期ブランチ名を決めます、こちらもデフォルトで構いません

7)環境変数の設定です。デフォルトを変更し”Use Git From Git Bash only”を選択します。

8)SSHの設定です、デフォルトで構いません。

9)HTTPSで利用するSSLライブラリの選択です、デフォルトで構いません。

10)改行指定です、デフォルトを変更し自動変換しない”check-out as-is commit as-is”を選択します。

11)ターミナルエミュレータの選択です、デフォルトで構いません。

12)pullの設定です、デフォルトで構いません。

13)資格情報マネージャーの設定です、デフォルトで構いません。

14)拡張オプションの設定、デフォルトで構いません。

15)実験的なオプションの設定、デフォルトで構いません。最後にインストールボタンを押してインストールが開始します。

16)Finishボタンを押してインストールの完了です。

TortoiseGitのインストール

いよいよTortoiseGitのインストールです。
以下をアクセスして下さい。
https://tortoisegit.org/download/

 

OSのビット数(32bit/64bit)でファイルを選択してダウンロード下さい。

ページを下に進むと言語ファイルが選択できます。こちらも上と同様にOSのビット数でダウンロードファイルを決めて下さい。

最初にTortoiseGit本体のインストールを行います。

1)Next

2)コピーライトなどの情報画面、内容を確認してNext

3)インストール先フォルダの選択、デフォルトのままで構いません

4)インストール

5)Finishボタンを押してインストール終了(Run First start wizardのチェックは外した方が良いです)

 

TortoiseGitの日本語化

英語版でよろしければ、日本語化の作業は不要です。
以下日本語化の作業の解説です。

先ほどダウンロードした日本語化パッケージ(TortoiseGit-LanguagePack-xx.xxx.-64bit-ja.msi)を実行します。

1)次へ

2)特にオプションなどの選択はなく、終了します。完了を押して下さい

3)日本語化の確認

デスクトップの空いている空間(アイコンなどの無い場所)でマウスの右ボタンを押して下さい。
TortoiseGit→設定を選択します。

設定を選択して下さい

このように日本語化されていれば成功です。

 

 

]]>
https://chiegra.com/tortoisegit_install/feed/ 0
GitHubをTortoiseGitで利用する方法を解説【1.GitHub登録編】 https://chiegra.com/github_registration/ https://chiegra.com/github_registration/#respond Thu, 29 Dec 2022 08:31:49 +0000 https://chiegra.com/?p=815 はじめに

ソースコード開発において、バージョン管理は欠かせません。
subversionやTeaam Foundation Serverなども有名ですが、現在は主にGitが利用されています。
Visual studioでも標準でサポートされていることから筆者はGitを利用しています。

WindowsでGitを利用する際に便利なGUIクライアント「TortoiseGit」を利用しGitサーバーであるGitHubへのデータ保存までを複数回に渡り解説します。
本章ではGitHubにリポジトリを作成するまでを解説します。

バージョン管理とは

ソースコード開発において、修正履歴を残すことはとても重要です。
何か不具合が発生した際に過去のソースと比較することで不具合要因を探る事が出来ます。
また複数のメンバーで一つのソースを修正する場合など、最新バージョンの管理が必要になります。
バージョン管理ツールを利用することで常に最新のソースを取得する事が出来ます。

 

GitHub

Gitを利用するにはソースを管理するサーバーが必要になります。
サーバーは自分で構築する事も可能ですが、一般的には公開されているサーバーを利用します。
GitHubもGitサーバーの一つです。

(実際にはGit以外にも機能を提供しているので単純なGitサーバーではありませんが)

GitHubの登録

はじめにGitHubにアカウントを作成します。
https://github.com/

1) mailアドレスを入れてsign up for GitHubボタンを押して下さい

2)mailアドレスを確認してcontinue

3)mailアドレスを確認してcontinue

4)パスワードを設定してcontinue

5)ユーザー名を設定してcontinue

6)アップデート情報を受け取る/受け取らないの設定です
いくつかの設問が出ますので答えましょう。

最後にcreate assountボタンを押します

 

7)メールに送られてきたコードを入力します

8)personalization入力画面が出ますがskipして構いません。

ここまでで、GitHubの登録は終了です。

リポジトリの作成

次にGitHubの上にリポジトリを作成します。
バージョン管理の項でも簡単に説明しましたが、リポジトリとはサーバー上のソースコードを管理する場所の事です。
ここではテスト用のリポジトリ”test_repo”を作成ます。
publicとpvivateの選択ボタンがあります。publicにすると誰でもリポジトリを閲覧可能になります。
個人用の場合はprivateを選択します。
create a new repositoryボタンを押してリポジトリを作成して下さい

自動的に次のページに切り替わります。
赤枠で囲った箇所がリポジトリのアドレスです。
左のボタンがHTTPSを選択していることを確認して下さい。
アドレスは後ほど必要になるのでエディタなどで控えておきます。

ここまででリポジトリの作成は終了しました。

 

 

 

 

 

 

]]>
https://chiegra.com/github_registration/feed/ 0
【プログラミング言語C】第4章 「関数とプログラミング構造」 4.1 関数についての基本事項 https://chiegra.com/c-4-01-function/ https://chiegra.com/c-4-01-function/#respond Thu, 18 Aug 2022 12:43:10 +0000 https://chiegra.com/?p=799
 

これまででC言語の基本ルールは学びました。
これからは具体的なプログラムを作成しながら、実践で学びます。

一般的にプログラムは複数の機能を組み合わせて実現します。
(既に1章で学んだプログラムのそのような構造になっていましたね)

4.1 関数についての基本事項

関数については1.7章でも簡単に学習しています。
https://chiegra.com/c-1-7-function/

関数の基本

関数の定義はこのようになっています。

戻り値 関数名 (引数の宣言) {


return 数値;

}

関数を呼び出す際は、関数名(引数)呼び出します。
関数の結果はreturnで戻されます。

以下に例を示します。
この関数は引数nを二乗した結果を戻り値として返します。

int square (int n){

return n * n;

}

呼び出しは以下のように行います
int result = square(10);

resultには100が入ります。

戻り値の無い関数

戻り値が無い関数を定義する事も出来ます。
その場合、以下のように定義します

void 関数名 (引数の宣言) {

}

戻り値も引数も無い関数

戻り値も引数も無い関数を定義する事も出来ます。
その場合、以下のように定義します

void 関数名 () {

}

サンプルプログラム

プログラミング言語Cのサンプルプログラムを見てみましょう。
キーボードから入力した文字列の中に検索文字列が存在した場合、キーボードから入力した文字列を画面に表示するプログラムです。
以前説明したように、見やすく一部修正しています。

https://chiegra.com/source-code-readability/

解説

基本になっているプログラムは1.9章で学習した文字配列のプログラムです。
ソースコードは次にように並んでいます。

・検索関数
・キーボードから1行を読み取る関数
・メイン関数

メイン関数

メイン関数から説明します。
char current_line[MAX_LINE];1行のデータを読み込むバッファを宣言しています。
バッファのサイズは1000になります。
char pattern[] = “abc”;で検索する文字列を指定しています。

次はwhile(1)で無限ループを指定しています。
ループ内では、キーボードから1行読みこみ(get_line)、検索関数で読み込んだデータに検索文字列があるかを判定しています。

1行読みこみは1.9章で学習した文字配列のプログラムと全く同じですので説明はそちらを見てください。

検索関数では戻り値が0以上の場合に検索文字列が存在する示します。
その場合、検索対象文字列すべてを画面に表示し再度ループの先頭にもどりキー待ちとなります。

検索関数find

文字列の中に検索文字列が存在するかを確認する関数です。
引数s[]が調査対象文字列でpatt[]が検索文字列になります。
文字列なのでどちらも配列の最後は’\0’が入っている事を忘れないでください。

for (int i = 0; s[i] != ‘\0’; i++) {
最初のループは検索対象の文字列を先頭から調べます。
一般的にループはfor (int i = 0; i < 10; i++)のようにループ数を指定しますが、文字列の場合長さが分からないのでループ数の指定が出来ません。
文字列の場合、文字列の終端は必ず終端文字’\0’が入っている事に着目して s[i] != ‘\0’のようにします。
こうすることで終端文字が見つかるまでループを続けることが出来ます。

次のループ for (int j = 0; patt[j] != ‘\0’; j++) では検索文字列の取り込みループです。
こちらも同様ですね。

実際の比較はこちらのif文で行っています
if (patt[j] != s[i+j])
ポイントは s[i+j]。

流れを示すため、s[] = “123abc456″、patt[]=”abc”として解説します。
最初はi=0、j=0ですのでpatt[j]=’a’、s[i+j]=’1’となります。
当然次のif文は偽ですのでfind_flagを0にしてjのループから抜けます。

ループを出ると最初にfind_flagが1であることをチェックしていますが、もちろん現在は0なので外側のiループに戻ります。
ここでiが+1されてi=1で先ほどと同様に比較まで進みますが、patt[j]=’a’、s[i+j]=’2’でif文が偽になります。

このようにして順に進み、i=3,J=0になった際にpatt[j]=’a’、s[i+j]=’a’となり初めてif文が真となりjループが先に進みます。
次はiは変更されないのでi=3,jはインクリメントされるのでj=1となりpatt[j]=’b’、s[i+j]=’b’となりこちらも真。
このようにして進みjループでpatt[j]=’\0’を見つけると(すなわち検索文字列が最後になると)jループを終了します。

jループに入る前にfind_flagは1になっていますので、if (find_flag == 1) の判定で真となり関数を終了します。
戻り値iは3を示しておりこれは調査対象文字列の先頭からi文字目が検索文字列と一致した事を示します。

 


 

 

 

]]>
https://chiegra.com/c-4-01-function/feed/ 0