忍者ブログ
盛大な独り言日記・自分用メモ2010.11.17~
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

OpenGLの復習
隠面処理:3D空間の中に2つの物を配置した時、カメラからの前後関係を計算して、
カメラから見てかぶって配置されている部分は手前の物だけを描画する処理

隠面処理にはzバッファを使う
zバッファとは画素1つ1つに存在する記憶領域のこと。z値が入る。
z値はカメラとの距離だと思っておけばいいのかな…。z値が小さいと描き直すらしい。

流れ
z値を初期化→複数のオブジェクトの、各画素のz値を比較
→もしz値が小さかったら、その時だけ描き直し
→頭に戻る

隠面処理をさせる手順は
glutInitDisplayMode(GLUT_RGBA)を
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH)に

glClear(GL_COLOR_BUFFER_BIT)を
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)に書き変える

描画するところで、
glEnable(GL_DEPTH_GEST) と glDisable(GL_DEPTH_TEST)
に囲まれた部分の描画関数に隠面処理が適用される。

ってさ!

あ、モンハン届きました\(^o^)/
PR
ダブルバッファする時とかウィンドウサイズが必要になるけれど、ウィンドウサイズ取得の仕方がわかんなかったので書いておく

CRect 変数名;
GetClientRect(&変数名);

GetClientRect();でウィンドウの四角形の情報をCRectクラスに入れてると思えばいいのかな
CRectは(top,bottom,left,right)をメンバに持つので、
高さは変数名.bottom
幅は変数名.right
で呼び出せるようになる。
ダブルバッファが必要なのは知ってたけどよくわかってなかったのでここに書いておく

そのままディスプレイ描画させるのとダブルバッファの違いって
多分ライブペイントで展示するか完成した作品を展示するかの違いみたいなものだと 思 う

描画しながら表示するから動かしたときとかにちらつきが発生する
ダブルバッファリングで別の場所に描画をして、描画が終了した絵をディスプレイにもってくると、ちらつかない。
ダブルバッファリングで使う、ディスプレイじゃない所に描いた絵の事をオフスクリーンバッファっていうらしいけど覚えなくていい気もする。

作りかた!

①ダブルバッファを定義する(CDC)
②bmpを作成する(cBitmap)
③今まで描いてきたものの描画先を、ダブルバッファ用のDCに変更する
授業で使うVC++ではpDCはポインタだけどダブルバッファはポインタで無いので、
-> を . に書き変える
④バッファに描いた図をpDCに貼り付ける(pDC->BitBit(0,0,幅,高さ,&バッファ名,0,0,SRCCOPY);)



OpenGLの復習中…

視点のこと
平行投影と透視投影がある
普通に目で見るのに近いのは透視投影、3DCGを表現するなら普通こっち?
平行投影は距離の遠さによらずサイズ一定

透視投影の設定で
gluPerspective(視野の角度(°) , 断面の横 / 断面の縦 ,視点から頂面まで , 視点から底面まで )
って書いてあったけど、
底面=視野の限界ってことでいいのかな
頂面が何なのかよくわからない。

と思ったら頂面はカメラ側の視野の限界で、底面は奥側の視野の限界でした!あってるよな…
つまり頂面から底面の範囲かつカメラアングルの範囲=プログラム起動時に見える範囲ってことでいいのかな

アングルは大きいほど広角で小さいほど望遠になる


VisualC++を使った課題
とりあえず今回の授業までに学んだことを利用したプログラム。
・マウス操作とキーボード操作に対応して何かできるもの
・上のメニューバーも使うほうがいい?
・見本のFaceに手を加えるだけではいけないらしい…。

何を作ろうかな…思いつかない。
・クリックでめくるおみくじ→四角を9枚くらい用意して、そのうえでクリック→めくれる
→マウスの座標の取得の仕方とか分からないけど出来るかな
→おみくじが出来るなら神経衰弱(色とかでわける)の方が色々使えそう
→キーボードェ…
・マーク作る何か
→プルダウンで図形を追加して、全部円形に並べていく
→Ellipseはともかく、四角形円形に並べるときとか集中線とか出すのにradianいるから大変そう
・よけゲー
→まだオブジェクト同士の衝突判定とかどうしたらいいか分からない!
→C++では出来たんだから作れない事もないのかな。普通にView.cppファイル内で関数とか変数を追加すればいいんだろうか…。わからぬ


いい加減寝ないと。風邪っぽいです。

[1]  [2]  [3]  [4
プロフィール
 たごさく(@Ta56)
カレンダー
05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
最新CM
最新記事
最新TB
バーコード
ブログ内検索
最古記事
Admin / Write
忍者ブログ [PR]