More Related Content
What's hot
PPTX
PDF
PDF
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割 PDF
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた PPT
PDF
カスタムメモリマネージャと高速なメモリアロケータについて PDF
PDF
PDF
JMDC / Looker User Meetup in Tokyo #4 PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか PPTX
PDF
Flutterアプリ開発におけるモジュール分割戦略 PDF
PDF
PDF
チケット駆動開発の解説~タスク管理からプロセス改善へ PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17) PDF
ドキュメントを作りたくなってしまう魔法のツールSphinx PPTX
PPTX
Viewers also liked
PDF
PPTX
PDF
PDF
ODP
The Introduction to Vector Graphics DOCX
Rでの対称行列の固有値・固有ベクトルの最適な求め方 KEY
SurfaceTextureとシェーダを使って遊んでみる PPTX
PDF
簡単!OpenGL ES 2.0フラグメントシェーダー PDF
PDF
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18) PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30) PPTX
PDF
PPT
PDF
PDF
Dbts2015 tokyo vector_in_hadoop_vortex PDF
数式を綺麗にプログラミングするコツ #spro2013 PDF
Tabc vol3 テクニカルアーティストを始めるにあたって PPT
Similar to OpenGL 3DCG
PPTX
PPTX
Delphi で超高速 OpenGL 2D/3D 描画 PPTX
PPTX
PPTX
PDF
SFC Design theory 2012 6/6 PPTX
PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL PPTX
PPTX
PDF
PDF
PDF
coma Creators session vol.2 PDF
PPT
PDF
PDF
PDF
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう PPTX
PDF
More from Takenori Nakagawa
PDF
PDF
PDF
PDF
PDF
PDF
Service Workers Push API Hands-on PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PPTX
PPTX
PPTX
Recently uploaded
PPTX
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜 OpenGL 3DCG
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
x,y,z 軸の描画
GL_LINES で(0, 0, 0) から x,y,z それぞれ長さ 100 の線を引く。
各メソッドの解説
glLineWidth(GLfloat width): 線幅を指定
glColor4d: RGBA で色を指定 (GL_LIGHTING が disable の時のみ有効)
glBegin(GLenum mode): モードを指定して頂点の追加を開始
glVertex3d: XYZ で座標を指定
glEnd(void): glBegin と対になる頂点グループの終わりを示す
- 7.
- 8.
- 9.
三角錐の描画
glBegin(GL_TRIANGLE_STRIP);
glVertex3d(0, 0, 0);glNormal3d(0, 0, -1);
glVertex3d(4, 0, 0); glNormal3d(0, 0, -1);
glVertex3d(0, 0, 3); glNormal3d(0, 0, -1);
glVertex3d(0, 2, 0); glNormal3d(0, 0, -1);
glVertex3d(0, 0, 0); glNormal3d(0, 0, -1);
glVertex3d(4, 0, 0); glNormal3d(0, 0, -1);
glEnd();
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
W,A,S,D で移動
void keyboard(unsignedchar key, int x, int y)
{
printf( "Key Code : %d, Position : %d %dn", key, x, y );
// switch文を用いたキー処理の例(switch-caseを使う場合、breakの書き忘れに注意)
double size = 1.0;
switch(key) {
case 'a':
// x 軸正方向へ移動
wm[12] += size;
break;
case 'd':
// x 軸負方向へ移動
wm[12] -= size;
break;
case 'w':
// z 軸正方向へ移動
wm[14] += size;
break;
case 's':
// z 軸負方向へ移動
wm[14] -= size;
break;
default:
printf( "tKey: Other -> %cn", key );
}
glutPostRedisplay();
}
- 22.
- 23.
マウスでカメラの向きを変更
void mousePressed(int button,int state, int x, int y)
{
printf( "Mouse Button: %d, State: %d, Position %d %dn", button, state, x, y );
// mouse down 時
if (! state) {
// 座標を記録しておく
mouse_pos.x = x;
mouse_pos.y = y;
}
}
- 24.
マウスでカメラの向きを変更
void mouseDragged(int x,int y)
{
printf( "Mouse Drag Position %d %dn", x, y );
pos2d diff = {mouse_pos.x - x, mouse_pos.y - y};
mouse_pos.x = x;
mouse_pos.y = y;
y_rad += diff.x / window.w * M_PI / 5;
x_rad += diff.y / window.h * M_PI / 5;
// y 軸回転
vm_y[0] = cos(y_rad);
vm_y[2] = -sin(y_rad);
vm_y[8] = sin(y_rad);
vm_y[10] = cos(y_rad);
// x 軸回転
vm_x[5] = cos(x_rad);
vm_x[6] = sin(x_rad);
vm_x[9] = -sin(x_rad);
vm_x[10] = cos(x_rad);
// 視点の再計算
resize(window.w, window.h);
glutPostRedisplay(); // ウィンドウに再描画命令を送る(ポストする)
}
- 25.
- 26.
三角錐の自動回転
void idle()
{
// y軸に対して毎度 1 度ずつ右ねじ回転
rad += M_PI / 180;
if (rad > M_PI * 2) {
rad = 0;
}
wm[0] = cos(rad);
wm[2] = -sin(rad);
wm[8] = sin(rad);
wm[10] = cos(rad);
glutPostRedisplay(); // ウィンドウに再描画命令を送る(ポストする)
}
- 27.
- 28.
- 29.