ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

OpenGL

glutSolidSphereの描画後

glutを使っていろいろと試しているのだが、いまだにうまくいかない。 なぜかglutSolidSphere()で球を描画した後は、その後のラインやポリゴンの色が変わってしまう。マテリアルの設定が変わってしまうのだろうか。

光源その2

マウスでカメラを動かそうとコードをいろいろ追加していたら、ライトがうまくあたらなくなってしまった。原因は視点の位置を決定する前に光源の位置を設定していたからだった。 GLfloat lightPosition[4] = {1.0f, 1.0f, 1.0f, 0.0f}; glLightfv(GL_LIGHT0, …

球とティーポット

GLUTには球とティーポットを描画する関数が用意されている。 glutSolidSphere(radius, slices, stacks); radiusは球の半径。slicesはZ軸まわりの分割数、stacksはZ軸にそった分割数。 glutSolidTeapot(size); sizeはティーポットの大きさ。 ティーポットを描…

光源

OpenGLで光源を有効するには、glEnableでGL_LIGHTINGを指定する。そして光源の位置や色などをglLightfvで指定する。コードは次のような感じ。 glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); GLfloat lightPosition[4] = {1.0f, 1.0f, 1.0f, 0.0f}; GLfloat l…

ダブルバッファ化

ダブルバッファで描画するように改良。ついでにマウス関連の関数も追加。 #include <GL/glut.h> // ウィンドウが描画されるとき void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // ここでラインやポリゴンの描画 glutSwapBuffers(); } // </gl/glut.h>…

キーボードで終了

アプリケーションを終了するのにいちいちウィンドウの×ボタンを押すのが面倒だったので、キーボードのqまたはEscを押したときに終了できるようにした。 追加したコードは次のとおり。 void keyboard(unsigned char key, int x, int y) { switch (key) { case…

軸とグリッドの描画

XYZの各軸とXZ平面のグリッドの描画を追加した。 #include <GL/glut.h> // 軸の描画 void drawAxis(void) { GLdouble axis[][3] = { { 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 } }; glBegin(GL_LINES); for(int i = 0; i<3; i++) { gl</gl/glut.h>…

GLUTのセットアップ

ちょっと3Dの勉強をしていて簡単に試せる環境が欲しくなったので、GLUTでテスト環境を作ってみることにした。 まずはセットアップの手順。Nate Robins - OpenGL - GLUT for Win32 ここから、glut-3.7.6-bin.zip をダウンロード。 展開して、glut32.dll を Wi…

現在の状態

詳しく調べたわけじゃないけど、どうやらOpenGLには現在の状態(たとえば昨日のラインの太さ)を取得するような機能は無いようだ。 つまりユーザーの責任において状態を把握し、そして設定する必要があると。 じゃあ、今の状態を保持するようなものを作るとい…

ベンチマーク

800*600の大きさのウィンドウでいろいろテストしてみた。FPSはFpsLayerを使って調べた。 画面クリアするだけだとだいたい80FPSくらい。800*600の大きさのビットマップテクスチャを3枚くらい描画してもフレームレートは変化しないが、それからはだんだんと落…

ベンチマークソフト GL Excess

OpenGLでどのくらい描画できるのか調べるためにベンチマークソフトを窓の杜からダウンロードして実行してみた。 http://www.forest.impress.co.jp/lib/sys/hrdbnch/3dbench/glexcess.html 当初の目的を忘れて綺麗なデモに思わず見とれてしまった。これをほと…

OpenGLの設定

YanesdkのFAQページにOpenGLの設定についての項目があった。 http://yanesdkdotnet.sourceforge.jp/3/index.html#009 ということで、私の環境でも設定がどうなっているか確認してみた。 グラフィックチップはMOBILITY RADEON 7500。プロパティでOpenGLの設定…