Download presentation
Presentation is loading. Please wait.
1
本講義の目標: ・C言語とOpenGLを用いて,プログラミングによるコンピュータグラフィックス生成手法について学ぶ ・インタラクティブ性や,より高い自由度を持つアニメーションを生成する 本演習の作品例: ・C言語の基礎知識を前提とする ・提出課題は必ず大学のPCで動作を確認しておくこと
2
OpenGLの概要: 1980年代にSiliconGraphics社が自社製のグラフィックワークステーションIRIS用に提供したIRIS-GL(GraphicsLibrary)を もとにハードウエアに依存しないライブラリとして開発されたもの。約150種類のコマンドからなる。 void myInit ( char *progname ) { int width = 500, height = 500; glutInitWindowPosition( 0, 0 ); glutInitWindowSize( width, height ); glutInitDisplayMode( GLUT_RGBA ); glutCreateWindow( progname ); glClearColor ( 0.0, 0.0, 0.0, 1.0 ); glutKeyboardFunc( myKbd ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 ); } int main( int argc, char** argv ) glutInit( &argc, argv ); myInit( argv[0] ); glutDisplayFunc( display ); glutMainLoop(); return( 0 ); include <stdlib.h> #include <GL/glut.h> #include <GL/gl.h> #define KEY_ESC 27 void display( void ) { glClear( GL_COLOR_BUFFER_BIT ); glColor3f( 1.0, 1.0, 1.0 ); glBegin( GL_POLYGON ); glVertex3f( 0.5, 0.5, 0.0 ); glVertex3f(-0.5, 0.5, 0.0 ); glVertex3f(-0.5,-0.5, 0.0 ); glVertex3f( 0.5,-0.5, 0.0 ); glEnd(); glFlush(); } void myKbd( unsigned char key, int x, int y ) if ( key == KEY_ESC ) exit( 0 );
3
OpenGLの長所: ・Unix,MS-Windows,MacOSなど代表的なプラットフォームに 対応し、移植性が高い ・描画用ハードウエアのサポートが多数ある ・3次元CGの描画機能がある ・コマンド体系が簡潔 ・標準C言語の知識でプログラミング可能 OpenGLの限界: ・3次元オブジェクトのモデルを記述する高水準コマンド無し ・シェーディングモデルはGouraudのみ(拡張手法あり) ・レイトレーシング無し
4
GLU:上位のユーティリティライブラリ.球体、円柱などのプリミティブ、NURBS曲線、透視変換、ビューイング変換、テクスチャ処理など
OpenGLライブラリの構成: GLU OpenGL アプリケーションプログラム(ユーザが書くプログラム) 描画 GL ウィンドウシステム GLUT GL:OpenGLライブラリ.点、線、多角形の描画、色やパタンの制御、幾何変換や投影変換、シェーディング処理などの基本描画コマンド GLUT:OpenGLライブラリ.ウィンドウ管理や入力イベントの管理、GLとGLUを組み合わせた高度な描画
5
プログラムの作成方法: 1)各自のZドライブにVisというフォルダーを作る 2)その下に適宜各回用のフォルダ(例えば01)をつくる 3)01フォルダに移って、 「右クリック」→「新規作成」→「テキストドキュメント」 4)ファイル名を適当につける。例えばc1-1.c ただし、拡張子は必ず.cとする。 もし、拡張子が見えない場合は、Exploreの「ツール」→「フォルダオプション」→「表示」 の「登録されているファイルの拡張子は表示しない」のチェックをはずしておく。 5)TeraPadエディタ等でファイルを開きテキストをいれていく コンパイル・実行!
6
Cプログラムの簡単な復習: 以下のプログラムc1-0.cを打ち込んで実行する. #include <stdio.h> void hello (int num){ printf(“Hello World %d”,num,“ \n”); return; } int main(int argc,char* argv[]){ hello1(1); return; } プログラムのコンパイルと実行方法: A)コマンドプロンプトで行なう 1) 「スタート」→「プログラム」→「MicrosoftVisualStudio」 → 「VSVARS32.BAT」 2)生成されたコマンドプロンプトウィンドウの中で a)>cd 作成したフォルダパス=例えばvis\01 b)>cl c1-0.c (cl:「シーエル」コンパイルして実行形式ファイルをつくる) c)> c1-0(実行) c1-0.cをコンパイルし、実行する。 (ビルド後実行.またはコマンドプロンプトで.)
7
実行! プログラムのコンパイルと実行方法:
B)Visual Studioから実行 :キャンパスシステムガイド参照 あるいはこちら (VS2010Versionなので2013とは若干異なる) debug解説 (ログイン後の最初の立ち上げには数分がかかります) ・VS2013では「デバッグ→ソリューションのビルド」でコンパイルする. ・編集する際はc1-0.slnをダブルクリックして立ち上げ,「表示→ソリューションエクスプローラでソースファイルが見られるようにする. ・実行ファイルはdebugフォルダに入っているが,単純にこれをダブルクリックすると実行後すぐウィンドウが閉じてしまうので「デバッグ」メニューから実行するか,コマンドプロンプト窓を開いて >c1-0.exeを実行する 実行! 配布したプログラムc1-1.cをコンパイルリンクし,実行する. 大文字、小文字は区別されるので注意! 全角の空白をいれないように。 c1-1.pdf
8
実行結果 x (0,0) height prognameで指定した名前がつけられる y width C1-1 画面サイズ
9
1)横640ドット、縦480ドットのウィンドウを画面中央に表示せよ (プログラム名はp1-1-1.cとする)
練習問題1-1: 1)横640ドット、縦480ドットのウィンドウを画面中央に表示せよ (プログラム名はp1-1-1.cとする) 使用しているディスプレイの総ドット数を調べるには int glutGet(GLUT_SCREEN_WIDTH); int glutGet(GLUT_SCREEN_HEIGHT); を用いる。 ヒント:横方向の原点 originw=(総ドット数-表示させるウィンドウサイズ)/2 解答例 2)ウィンドウの背景色をつぎの色に変えよ (プログラム名はp1-1-2y.c,p1-1-2p.c,p1-1-2b.cとする) a)黄色 (R,G,B)=(1.0,1.0,0.0) b)ピンク (R,G,B)=(1.0,0.0,1.0) c)水色 (R,G,B)=(0.0,1.0,1.0) glutGet(GLUT_SCREEN_WIDTH) width ?
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.