• ベストアンサー

OpenGLです

OpenGLを用いて,赤い球を15秒後に青色に変化させるプログラムを作成するにはどうすればいいのでしょうか? 一応,glutTimerFunc()を使えば出来ました. しかしながら,私としては,「キーボードのあるボタンを押してから15秒経過すると円の色が変化する」といったプログラムにしたいです. glutTimerFunc()ではおそらくできないです. 何かいい方法がありましたら,ご教授お願いします

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8042/17183)
回答No.1

単に色を変化させることができているんなら,ちょっと変えてキーボード関数の中でglutTimerFunc()を使うだけじゃないの?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • OpenGLのグラデーションについて

    現在、C++でOpenGLのプログラムを書いているのですが、 赤から青にグラデーションをする場合、中間色が紫になります。 カラーパレットとかにある、赤→黄色→緑→青のようにグラデーションしてもらいたいのですができません。 どうすれば、紫のところが黄色にできるのでしょうか? OpenCVを使用しても構いませんので、中間色を指定するような方法を教えて頂けたらと思います。

  • VC++のダイアログでOpenGLの動画とボタン

    OpenGLのグラフィクスをVC++のダイアログ上に表示させて,プログラムを作成しているのですが,OpenGLを動画にするとボタンが押せなくなってしまいます. ディスプレイの更新はOnPanit()を呼び出すことで,グラフィクスを常に更新させているのですが,この手法では,グラフィクスの更新中はボタン入力待ちになってないみたいです. グラフィクスを常に更新し続け,ボタン等のツールも利用できるようにしたいのですが,ご存知の方がいらっしゃいましたらご教授ください.

  • OpenGLについて質問です

    OpenGLでマウスをドラッグしているときに座標を取得して線を描画する プログラムを作成したのですが、以下のことが分かりません (1)ドラックしている座標は何秒(何FPS?)ごとに取得しているのか (2)座標を取得する間隔を時間で計測できるのか? (3)またその方法 よろしかったらお答えください なお、自分はC言語の時間計測のコマンドでできるのではないのかと考えています

  • C++でOpenGL

    OpenGLのピクセルデータの"色"の情報を取得し表示したいのですがどうしたらよいでしょうか? glReadPixels()という物が在るらしいのですが、使い方もこれで出来るのかも分かりません。 方法、手順、サンプルなどご教授願います。

  • VC++でopenGLを利用したい...。

    VC++でダイアログベースのプログラムを作成したいと考えています。 そのダイアログ内のウィンドウにopenGLを表示させたいと思っているのですが、どうすればよいのかわかりません。 ご存知の方がいらっしゃいましたら、ご教授ください。 参考のになりそうなサイトでもかまいませんのでよろしくお願いします。

  • 【opengl オブジェクト読込】

    現在VC++でプログラムの開発を行っています。 Shadeや3dsMAXなどで作った3次元オブジェクトをVC++で実行するopenGL上の プログラムに読み込みたいのですがよい方法はあるでしょうか?(opengl+glut) 現在以下を参考にしてvrml形式に変更して読み込んでいるのですが、複雑な形状になると読み込めなくなってしまいます。。。 http://www.komoto.org/opengl/sample12.html ほかによいサンプルや方法などあれば教えてください。 色情報なども保持したまま読み込みたいので、dxf形式ではなくvrmlやobj形式での読み込みを考えています。

  • OpenGLでの描画のタイミング

     OpenGLの使い方について疑問があったので質問しました.  OpenGLを用いて3Dのゲームを作っています.しかし, どうも処理が遅くカクカクした動きになってしまいます. 描画の量が多くなるにつれて遅くなっているので,原因は 描画の時に原因があるようです.ダブルバッファリング を用いて描画しているのですが,描画のときは… 1「描画関数の実行」(glVertex3f()などの実行) 2「裏に描画」(見えていないバッファに描画) 3「裏表入れ替え」(2つのバッファを交換) 0「一定時間待機して自分自身を呼び出す」            (60FPSなら1/60秒程度) を繰り返すものと考えています.  「1230」と繰り返せば通常通り動くのですが, 「1」に計算がかかりすぎると,「2」と「3」が遅れてしまい, カクカクしてしまうのだろうと考えました. (↑これがそもそも間違っていたらすいません><)  そこで,対策を2つ考えたのですが,これでいいでしょうか? それとも,もっと良い方法はないでしょうか?(「1」を 速くするしか方法はないでしょうか?) 【1】一定時間待機する秒数を可変的にする  現在のところ,「0」では,1/60秒待機させています.  しかし,1に1/30秒かかったとすると,「1230」を 1回繰り返すのに,3/60秒かかってしまうことになり, 結局FPSは20止まりです.  そこで,「123」でかかった時間を記録し,その秒数 を1/60から引いた分だけ「0」で待機すれば,1/60秒になる だろう,という方法です. 【2】描画のタイミングを変える  現在のところ,「1230」の順番で繰り返しています. しかし,これでは描画の関数を呼び出した時,「1」に 1/30秒かかったとすると,実際に表示できるのは1/30秒後 ということになります.よって,プログラムの始めに 「1232」を実行しておき,描画の関数の中身は 「3120」とする,という方法です. (そもそも,「2」と「3」のタイミングを   離せるのかどうかもよくわかりません><)  もちろん【1】と【2】の方法は併用もできると思っています. 「2」はOpenGLに入っているglFlush() 「3」はOpenGLに入っているglutSwapBuffers() 「0」はOpenGLに入っているglutTimerFunc() を用いています. 質問が長くなってしまいましたが,よろしくお願いします. 参考までに… 【OS】Mac OS10.7(Lion) 【開発環境】Xcode3 【言語】c++ 【プログラミング歴】6年(c++2年,OpenGL1年) 【CPU】2.66 GHz Intel Core 2 Duo 【メモリ】4 GB 1067 MHz DDR3

  • openGLで物体を半透明にして表示させたいです。

    openGLで物体を半透明にして表示させたいです。 現在、openGLを使って画像を半透明にし重ね合わせて比較するプログラムを作成しています。 ほかの人が作成したプログラムなのですべて理解していないのが現状ですが、半透明にするところで詰まっています。 画像を透明にするにはアルファ値をつかうのはなんとなく分かったのですが、それはglColor4f()を使いますよね?? 現在改良しているプログラムにはglColor4f()ではなくglfloatで書かれているんです。 あまり、いじりすぎるとまずいらしいので、glColor4f()を使わない形で透明にできれば一番良いのですがなんとか方法はないでしょうか?? 自分でも透過について調べては見たのですがglColor4f()を使っての透過だったので・・・ 方法がなければもう書き換えてもいいかな、と思っていますが方法があれば教えていただけないでしょうか。 よろしくお願いします。

  • OpenGLでのコンター表示

    OpenGLにて、物体表面(ポリゴン表面)上に、温度などの観測値の分布図をコンター表示するプログラムを組んでいます。 現在考えているのは、事前処理にて観測値に基づく色分布を求めこれを基にテクスチャの画像を自作し、後は、OpenGLの通常の処理でポリゴンに貼り付けることを考えていますが、もっと簡単な方法がないかと探しているところです。 当方、OpenGLについて初歩レベルであり、これについてどのようなアプローチがあるか、まったく別の方法も含めて、いろいろと模索しておりますので、ご助言いただければ幸いです。 よろしくお願いします。

  • openGLにおける複雑な図形のモデリング

    稚拙な質問だと思うのですが、ご教授下さい。 OpenGLを勉強中で立方体の表示とかはできるようになったのですが、いざ複雑な図形となると何をどうすべきなのかがさっぱりわかりません。 DirectXの解説ページには、モデリングのツールで作成したファイルを読み込んでプログラムから表示することができるようなことが書いてあるのですが、openGLに関してこのようなページを見つけることができませんでした。 OpenGLで人などをモデリングして表示する際は、こつこつと頂点やら面やらを吐くコードを書きながら調整して行くのが主流なんでしょうか? ・・・そんなわけはないと思うので、既存のツールやそのツールで作ったものをプログラムから利用する手順に関する資料のあるページへのポインタだけでも教えて下さると幸いです。