合計で25msで1周と言うことです。それぞれの行が光っている時間は同じ時間の間隔でないといけません。1/60にすれば全体が光って見える、と言う事ですね。なると、最初のFPS調節は必要無いみたいなので、図を書き直します。周期か1/50sec=25msだとすると残りの24.92msは最後の行だけが光っていることになります。最後の行しか点灯していないように見えるでしょう。この周期と言うのはLEDマトリックスの最初の行から最後の行までを光らせている時間ですよね?LEDマトリックスの点灯時間が短いと人間の目には見えないので、最初の行から最後の行まで点滅して見えない程度にLEDを光らせて、次の行への切り替えは高速に行うと言う事でしょうか。LEDマトリックスについて図を書き直します。この様な感じだと思ったのですが。タイマー割り込みを利用すると言うのは、カウンタの値を自分で決めた値と比較して、一致した時に割り込みを発生させると言う事なのでしょうか。大体1周で1/50~1/60秒にすれば目と脳がダマされて全体が光っているように見えるようになります。シューティングゲーム等のFPSと同じですね。マイコンでプログラムのFPSを制御する時は、処理にかかった時間をどうやって図ればよいのでしょうか。BH-B例えば、マイコンでLEDマトリックスを何かの形に光らせる場合、1フレーム中に1行ずつ光らせて行くのでしょうか。複数行のLEDを光らせようとすると、LEDマトリックス内の導線が共通な為に思い通りに光らせる事が出来ませんでした。最後にここを光らせるこの様な感じでよろしいのでしょうか。【雑談】と言うかテストのお願い。【雑談】と言うかテストのお願い。・接続直後で5秒以内に表示されるか。マイコンのメモリについて情報が少ないので答える事が難しい、有償のサービスを利用してみてはどうか、と私に伝える為に「何のメリットも無い」、「無価値」と喧嘩を売る言葉をわざわざ使う必要があるのでしょうか。「喧嘩を売る言葉」と考えるのか理解に苦しみます。わからない話に終始してしまうと、それは「他の閲覧者にとって何のメリットもない話」になります。それは公開掲示板にとっては「無価値」ですし、多くの閲覧者に有益な情報を残そうと回答している回答者たちにとっても「無価値」なやり取りになります。単なる事実関係でしかないと思うのですが...。マイコンのメモリについてそれと「同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。」はフォーラムルールにある義務行為ですので、大筋においては間違ってはいないとも言えます。仮に、何らかの方法で環境に関する共通認識を持てるに至ったとしても、ほかの大多数の閲覧者がその認識に到達することはまず無理です。それであれば、「同じ事で困っている人の為に...」といっても「同じ事」なのかどうかすら判断が付かない情報しか残らないのです。現実問題としては、そうした状況に至ることさえ稀で、よくわからない抽象論に終始することでしょう。それなら、掲示板以外の方法を使う方がやはり得策なのです。マイコンのメモリについて開発環境の話が多いですが、こちらの都合で提示出来ません。それなら有償のサービスを利用する方が得策です。公開掲示板で、他の閲覧者にとって何のメリットもない話を展開しても無価値だからです。かぎさんは上記の事を私と面と向かって話せる覚悟を持っていますか。それなら良いですが、人を批判するなら自分が批判される覚悟を持って下さい。かぎさんの発言は、管理人のDixqさんに言われるなら私も素直に納得します。ここの掲示板に質問する人達は、殆どがプロではなく素人の人間です。私も含め、彼らが何故質問するかと言えば、ただ楽しくプログラミングを勉強したいからです。マイコンのメモリについて前述した様に、こちらの都合で開発環境は提示出来ません。それの為に、話が進まない様ですので解決とします。返信どうもありがとうございました。マイコンのメモリについて開発環境の話が多いですが、こちらの都合で提示出来ません。intの代わりにcharを使った場合、整数拡張が頻繁に行われて速度効率もサイズ効率もかえって低下する可能性があります。整数拡張とは下記の事でしょうか。メモリの小さなマイコンだとプログラムはFlashでスタックと変数はRAMに書き込むの一般的です。変数と言うのは、静的変数を含んだ全ての変数でよろしいでしょうか。マイコンへの書き込み方ですが、プログラムはFlashでスタックと変数はRAMに書き込む設定と言うのはデフォルトでそうなっているのでしょうか。charで特に不都合なことは思いつきませんが、どういう文脈で出た話か分かりますか?アラインメント、処理速度がどうのこうの、と言う様な話だった気がします。int型だったかもしれません。vector」があります。PC上のプログラムが用いるメモリに相当する物は、RAMで良いのでしょうか。ここからは上記だと仮定して話をします。[Kbytes]なので、メモリ節約のために、例えばint型を使わずにchar型を使う等の方法を取ろうと思います。PC上ではint型の代わりにchar型を使う事で不都合な事が出てくると聞きました。それは何なのでしょうか、また、マイコンの場合でも同じ事が言えるのでしょうか。vectorやlistを使ったほうが安定性やメンテ性で有利ですが速度は犠牲になります。それにサイズ可変の配列でもプログラム起動中に何度もサイズが変わらなくて添字上限下限をガード出来るならnew[]で生成したほうがシンプルでメンテ性が高いかも知れません。速度に関しては、シーケンシャルアクセスとランダムアクセスでlistとvectorでは速度優位が変わります。ケースバイケースです。「C++なら配列よりvector」主義の様なものがあるのかと思い、すっきりしました。ケースバイケースが大切なんですね。SUEさん、softyaさん、ISLeさん、返信ありがとうございました。メモリの格納領域についてvectorを使うメリットは動的にサイズを拡張してくれることもメリットながら、添字範囲外のガードがされている事などが大きなポイントだと思います。ポインタ問題や添字問題をガード・隠蔽できる安全な使い方と言えるでしょう。添え字範囲外のガードと言うのはatの事でしょうか。atは非常に処理に時間がかかると聞いたので[]でアクセスしていました。それに対して、vectorインスタンスを動的に生成することで十分なメリットがあるほどメモリ節約になるのでしょうか?安全性を犠牲にするほどのメリットがあるのか?それが問題ですね。メモリの格納領域についてPCに専用のグラフィックボードが搭載されているとき、画像など描画関係のデータはほとんど、グラフィックボード上のメモリに読み込まれます。(但しそれが足りないときや、あらかじめ使わないよう指定したとき、あるいはそもそもボードが無いときはメインメモリが使われます。いうメモリには普通アクセスすることが出来ないので、DirectXなどのAPIというプラックボックスを介してデータを操作します。使うライブラリにもよりますがOSがメモリを動的確保してハンドルを返す場合もあります。GPU内のメモリ領域に読み込む場合もあります。メモリの格納領域は上記の様な感じだと思うのですが、インスタンスの格納とはメンバ変数の格納と言う事でしょうか。・ローカルインスタンスのメンバ変数はスタック領域に格納される。・静的インスタンスのメンバ変数はデータ領域に格納される。言う事で良いのでしょうか。スレ立てるまでもない質問フレームレートを一定に保つため、レンダリングが完了してからバッファを入れ替えるまで時間が空きます。そのあいだメインCPUを何もせず待たせるのはもったいないですよね。フレーム落ちしなければどちらが後でもかまわないのですよ。背景のモブとか他のオブジェクトに影響与えないオブジェクトの内部処理を前のフレームから進めておいて、バッファを入れ替えたらすぐにシーンをプッシュ、レンダリングしている間にメインオブジェクトの内部処理を行いシーンをプッシュ...と交互に進めると並行処理を活用できます。透過テクスチャ透過する木の葉、枝を描画してから壁を描画していませんか。透過処理のアルファブレンディングより前に、深度テストと言う処理があります。深度テストは、これから描画しようとする物が、既に描画されている物より後ろにあるなら描画を行わない様にする処理です。透過する木の葉、枝を先に描画し、その後に壁を描画すると深度テストによって枝に隠れた部分は描画されません。よって、透過して見えるはずの壁が書かれていないのでステージの外の部分が見えているのだと思います。以上の事が原因なら、以下の2つのどちらかの方法で解決すると思います。・半透明な物より奥にある物は、半透明な物よりも先に描画する。スレ立てるまでもない質問GPUが働いている時間以下の処理でなければならない理由はないですね。GPUとプログラムの処理のどちらが先に終わるかではなくて、互いに相手の処理が終わるのを待っている無駄な時間を少なくすることに意味があるので。私が何か勘違いしている様で理解できません。GPUが描画を完了したらバッファを入れ替えて表示をしますよね。描画が完了した時に、別の処理をしていてすぐにバッファを入れ替えられないと無駄な時間が発生しませんか。スレ立てるまでもない質問もっと重要なのはEndSceneのあと、Presentでデバイス画面を更新するまでのあいだ上手にGPUのレンダリングと並行して処理を進めることです。EndSceneの直後にPresentしたりするとレンダリングが完了するまで無駄に待つことになります。EndSceneの後、GPUがデータを受け取って描画を行い、バックバッファとフロントバッファを入れ替えるまでに、「GPUの描画処理時間以下の処理時間の処理」を行うと効率が良いと言う事でしょうか。いう仕様だからとしか言えないのですが...。実際にどのように動作するかはGPU側の実装によりますが、GPU側にとっては命令がバラバラに送られるより、まとめて送られたほうが最適化しやすく、BeginScene/EndSceneはひとまとまりであることを示すための目印となります。これからは、BeginSceneとEndSceneの間で描画する様にします。BeginScene~EndSceneのあいだにカメラやライトを変更すると最適化の邪魔になってパフォーマンスに少なからず悪影響を与えると思います。前私が書いた方法ですが、複数のモデルの移動を考えていませんでした。スレ立てるまでもない質問ウィンドウが最初に表示されるときにはもちろんクライアント領域が描画されなければならないので、最初はクライアント領域全体が無効領域です。クライアント領域が見えないからといってWM_PAINTを処理しないでおくとウィンドウを開いたときからずっと発行され続けることになります。いうことだったんですね。新しい質問をさせてください。BeginSceneとEndSceneについてです。この二つは描画開始宣言と描画終了宣言であり、この間で描画を行わなければならないと良く聞きます。スレ立てるまでもない質問ウィンドウプロシージャでWM_PAINTに対してBeginPaint,EndPaintを呼ばずにリターンすると無効領域がクリアされないままなのでWM_PAINTがいつまでも発行され続けますけど。WM_PAINTに対してBeginPaint,EndPaintを呼び出して戻り値0でリターンするか、ハンドリングしないでDefWindowProcを呼び出してそのまま戻り値とするかどちらかが必須です。Direct3Dを使うプログラムなら後者ですね。背景ブラシもNULLにして。処理を渡したら無事にWM_PAINTは発行されなくなりました。スレ立てるまでもない質問ISLeさん返信ありがとうございました。違う質問をさせてください。3Dモデルの描画の話です。どちらがいいんでしょうか。WM_PAINTは無効領域が生じたら発行されると聞きました。DirectXではウィンドウを隠したりWM_TIMERでInvalidateRect等を呼び出さなくても発行されている気がします。マイクロソフトの開発製品(無償配布のSDK含む)はライセンス上、デバッグ版ライブラリの配布が許可されていません。デバッグビルドした実行形式を他人に渡すこともできません。デバッグ版は問題箇所の発見に役立つ代わりに実行速度が遅いです。普段はデバッグ版を用いて、リリースビルドの時にリリース版を用いるのが無難なのでしょうか。公式の記述は無いみたいですがたぶんそうでしょうね。公式にも無いんですね。(デバッグ版)この二つについて。この組合せのライブラリは、バージョンを問わずありますよね。それぞれ、リリース版、デバッグ版、だと聞いたのですが、何が違うんでしょうか。前から気になっていた事でDirectXの「D3D」はDirect3Dの略だと思うんですが、「D3DX」は何の略なのでしょうか。eXtend」当りの略だと私は思ったのですが。挨拶・雑談などみなさんはじめまして、私「Fimbul」と言います。私の夢と言うか目標と言うか、その一つがDirectXを使って3Dゲームを作る事なので、このコミュニティに参加しました。してもコードが作れません(WinSock)[編集]私の勘違いでした。listクラスを使うことは可能です。クラス化されたリスト構造って事です。配列を止めてリスト構造にするって事になるのでは?そうなりますね。タスクシステムの場合実行順序の制御が必要になります。これをどうやって実現するかですが結局リスト構造なようなものが必要になってくると思います。やってみて実感して見ることが大事だと思いますので、まず実験してみては?実行順序の制御がなぜ必要か分からないので、色々試して再度分からない所が出てきたら質問する事にします。softyaさん、名前は開発中のものです。さん、ありがとうございました。以下の様に直しました。戻り値用の見えない変数があると思って貰ったほうが良いと思います。softyaさんありがとうございます。気になっていた事なので、すっきりしました。疑問に思った事があるので、質問します。上の様なコードを考えます。fooの値を返します。fooが解放されるタイミングはhoge関数を抜けた瞬間だと思うのです。静的メンバstageクラスのload関数の実装で、クラス名がstageではなくSTAGEになっています。テンプレートやインライン関数など例外はありますが、基本的にはヘッダファイルでクラスの定義をし、ソースファイルで関数の実装をする形式が良いです。[修正]分けてありますね。