分かりました。アドバイスありがとうございます!ISLe さんが書きました:オフトピック1. WM_ERASEBKGNDで何もせず1を返す
2. WM_PAINTで何もせずBeginPaintとEndPaintだけを呼び出す
をテンプレにしておくとよいと思います。
1.は背景消去処理そのものを無効化します。
2.はWM_PAINTメッセージが連投されないように無効領域を解消します。
検索結果 28 件
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); の行をコメントアウトしたらどうなります?ついでにWndProcのWM_PAINTを処理しているところも省いて。 色々コードを取り除いた時の弊害かもしれませんが、インデントがめちゃくちゃだったり WinMainが__stdcallになっていなかったり、ブロックの対応関係がとれていなかったり DirectInputのヘッダとリンクが行われていなかったりでこのままのコード動きませんね。 動いても何も描画はされない状態・・・。 ありがとうございます!wc.hdrBackgroundの行をコメン...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
ありがとうございます。
じっくり読み解いてみますね
今作っているのはゲームというよりは3Dモデルのモデリングツールみたいな感じでしょうか。
なので全画面モードで起動した事はないです。
ただゲームを見越して汎用性を高く組んでいる(つもり)なのでゲームを作るのにソースは使用すると思います。
じっくり読み解いてみますね
今作っているのはゲームというよりは3Dモデルのモデリングツールみたいな感じでしょうか。
なので全画面モードで起動した事はないです。
ただゲームを見越して汎用性を高く組んでいる(つもり)なのでゲームを作るのにソースは使用すると思います。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
普通にマウスで移動してるだけです。 編集時に見切れてしまったようですすみません。 元々は一番初めの検証の現象を起こらないようにする方法を探していて見つけられずに質問したのですが、方法を提示してもらい試したところラグに気づき相談したところInvalidateRectのフラグに関して教えていただいたので色々検証してこうなりました。 やはり不思議なことをしているように見えますよね(笑) この過程で思いつきで同じくDirectXを使っている東方原作でウィンドウを画面に入れたり出したりしましたがこのような事は起こりませんでした。(まぁ東方がどの様なソースでどの様に処理をしているのかわからないので試したと...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
拡張子が対応して無かったのでzipで添付してあります。(中身はmp4です)
画面上にどのようなソースコードの状態で実行したかを書いています。
最初以外はすべてWM_PAINTをメッセージクラッカーを使用して受け取って再描画しています。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
スクショによる図解が必要そうですね…Math さんが書きました:基本的に書き方が変わるだけでそういう効果はないでしょうね。う~ん、どうしてそんなことになるのか全く思いつかないです。私が読んでるDirectXのサイトでもそういう事が見当たらないです。私には”何の事”か根本的な意味がわかりません...。
私の配慮不足です。すみません。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
言われたリンク先を読んでメッセージクラッカーを実装して試してみましたが再描画時の結果はどちらも変わりませんでした…
(一日遅れですが明けましておめでとうございます)
(一日遅れですが明けましておめでとうございます)
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
いえ、メッセージクラッカーは初めて聞きました。
今少し調べて見たのですがswitchの中身がHANDLE_MSGに変わっていますね。
http://keicode.com/windows/win02.php
の解説には
「毎回毎回 lParam をLPCREATESTRUCT にキャストするような煩雑さが消えます。」とありますが、
毎回のデータ型の変換を省くことができるという解釈でよろしいでしょうか?
メッセージクラッカーを使うことでコードの処理の効率化も測れるのでしょうか?
DXlibを使ってからDirectXに移行してきたためWin32API側のプログラミングや仕様には疎いもので…
今少し調べて見たのですがswitchの中身がHANDLE_MSGに変わっていますね。
http://keicode.com/windows/win02.php
の解説には
「毎回毎回 lParam をLPCREATESTRUCT にキャストするような煩雑さが消えます。」とありますが、
毎回のデータ型の変換を省くことができるという解釈でよろしいでしょうか?
メッセージクラッカーを使うことでコードの処理の効率化も測れるのでしょうか?
DXlibを使ってからDirectXに移行してきたためWin32API側のプログラミングや仕様には疎いもので…
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
再描画を二回やる方法試してみました。
TRUEでの描画を先に、FALSEでの描画を後にやるとTRUEで描画したときの移動中の点滅のみが残り、
FALSEでの描画を先に、TRUEでの描画を後にやると両方の欠点が同時に起こる感じでした…
どうすればいいんでしょうね…?
TRUEでフレームレートが合うようにSleepでも入れればいいのでしょうか…
TRUEでの描画を先に、FALSEでの描画を後にやるとTRUEで描画したときの移動中の点滅のみが残り、
FALSEでの描画を先に、TRUEでの描画を後にやると両方の欠点が同時に起こる感じでした…
どうすればいいんでしょうね…?
TRUEでフレームレートが合うようにSleepでも入れればいいのでしょうか…
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
InvalidateRect試してみました。
bEraseをTRUEにすると画面外に出て消えた部分の再描画に対してのラグは無くなりましたがウィンドウを移動したときに描画タイミングがずれているのかわかりませんがクライアントエリアの描画物が点滅するようになりました。
FALSEにすると移動時の点滅はありませんがやはり消えた部分の再描画時にラグがありました。
とりあえずに今これを書きながら思いついたのは再描画をWM_PAINT内でbEraseをTRUEのものとFALSEのものを二回行うことですかね。
ちょっと試してみます。
bEraseをTRUEにすると画面外に出て消えた部分の再描画に対してのラグは無くなりましたがウィンドウを移動したときに描画タイミングがずれているのかわかりませんがクライアントエリアの描画物が点滅するようになりました。
FALSEにすると移動時の点滅はありませんがやはり消えた部分の再描画時にラグがありました。
とりあえずに今これを書きながら思いついたのは再描画をWM_PAINT内でbEraseをTRUEのものとFALSEのものを二回行うことですかね。
ちょっと試してみます。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
#include <windows.h> #include <stdio.h> #include <d3dx9.h> #include <shlobj.h> #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") ///////// メイン変数宣言 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HRESULT InitD3D(HWND,bool,int,int); BOOL InitDirectInput(HWND); void Inputkeyrerese();...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
#include <windows.h> #include <stdio.h> #include <d3dx9.h> #include <shlobj.h> #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") #define APPNAME TEXT("3Dmodel") #define MENUID TEXT("MENUBAR") #include "../../directoryname/lib/libmain.h" #include "dinput.h" #include "../../directoryna...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
リンク先見ましたがVS2008の方はDirectX9で設定してあるんですよね?だったら動くはずなのですが…
…VS2010で書いたコードだから動かないのか…?
取り敢えず試せること試しながら詳しい人のアドバイス待ちますね。本当にありがとうございます。
…VS2010で書いたコードだから動かないのか…?
取り敢えず試せること試しながら詳しい人のアドバイス待ちますね。本当にありがとうございます。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
リンク先見ましたがVS2008の方はDirectX9で設定してあるんですよね?だったら動くはずなのですが…
…VS2010で書いたコードだから動かないのか…?
取り敢えず試せること試しながら詳しい人のアドバイス待ちますね。本当にありがとうございます。
…VS2010で書いたコードだから動かないのか…?
取り敢えず試せること試しながら詳しい人のアドバイス待ちますね。本当にありがとうございます。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
あ、すみませんそのヘッダーファイルは自作の物なのでインクルード宣言は削除してください。消し忘れていました。
InvalidateRectですか…調べて検証してみますね。
詳しく解説ありがとうございます。
InvalidateRectですか…調べて検証してみますね。
詳しく解説ありがとうございます。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
#include <windows.h> #include <stdio.h> #include <d3dx9.h> #include <shlobj.h> #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") #define APPNAME TEXT("3Dmodel") #define MENUID TEXT("MENUBAR") #include "../../directoryname/lib/libmain.h" #include "dinput.h" #include "../../directoryna...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
#include <windows.h> #include <stdio.h> #include <d3dx9.h> #include <shlobj.h> #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") #define APPNAME TEXT("3Dmodel") #define MENUID TEXT("MENUBAR") #include "../../directoryname/lib/libmain.h" #include "dinput.h" //#include "../../directory...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
Re: 画面外に出た部分の描画内容の消滅
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_DESTROY: //DeleteCriticalSection(&cs); PostQuitMessage(0); return 0; case WM_LBUTTONDBLCLK: dcflag[0]=1; return 0; case WM_RBUTTONDBLCLK: dcflag[1]=1; return 0; case WM_MBUTTONDBLCLK: dcflag[2]=1; ret...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: 画面外に出た部分の描画内容の消滅
- 返信数: 38
- 閲覧数: 15329
画面外に出た部分の描画内容の消滅
大変お久しぶりでございます。
現在C++でDirectXを使用しプログラミングを行っています。
ウィンドウを移動させて画面外に出た部分があるとその部分に描画されていたものが消えてしまうのを回避する方法を探していたのですがなかなか思うような情報が得られずにいます。
この現象(?)の回避する方法にはどのようなものがあるのでしょうか?
また、現象の名称をお願いします。
毎回初歩的な質問ばかりですみません。ご回答よろしくお願いします。
現在C++でDirectXを使用しプログラミングを行っています。
ウィンドウを移動させて画面外に出た部分があるとその部分に描画されていたものが消えてしまうのを回避する方法を探していたのですがなかなか思うような情報が得られずにいます。
この現象(?)の回避する方法にはどのようなものがあるのでしょうか?
また、現象の名称をお願いします。
毎回初歩的な質問ばかりですみません。ご回答よろしくお願いします。
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
Re: 配列型構造体の数値代入について
自己解決しました。
どうやらstbc(ポリゴン生成用の変数)の配列の個数が足りなかっただけのようです。
ご返信くださった皆様、ありがとうございました。
こんな初歩的なことに気づかないとは恥ずかしいです(笑)
どうやらstbc(ポリゴン生成用の変数)の配列の個数が足りなかっただけのようです。
ご返信くださった皆様、ありがとうございました。
こんな初歩的なことに気づかないとは恥ずかしいです(笑)
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
Re: 配列型構造体の数値代入について
≫の開発者さん
返信ありがとうございます。参考になりました。
しかし、私の質問からは少しずれてしまっているようです。
返信ありがとうございます。参考になりました。
しかし、私の質問からは少しずれてしまっているようです。
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
Re: 配列型構造体の数値代入について
どうやら調べているうちに for(int t=0;t<stbnum;t++){ float ou1 = (float)stbt[t].Imgx1 / stbt[t].Imgsi, ou2 = (float)(stbt[t].Imgx2 -stbt[t].Imgx1) / stbt[t].Imgsi; float ov1 = (float)stbt[t].Imgy1 / stbt[t].Imgsi, ov2 = (float)(stbt[t].Imgy2 -stbt[t].Imgy1) / stbt[t].Imgsi; switch(stbt[t].Type){ case 0: break; c...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
Re: 配列型構造体の数値代入について
void stgback(){ switch(stagemode){ case 1: break; case 2: break; case 3: for(int t=0;t<stbnum;t++){ for(int s=0;stbt[t].fromz+stbt[t].zhaba-s*stbt[t].zhaba>stbt[t].toz;s++){ for(int l=0;l<stbt[t].sidlo;l++){ stbt[t].stbc[stbt[t].sidlo*s+l].z-=20; for(int i=0;i<6;i++){ stbt[t].stbc[stbt[t].sidlo*s+l...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
Re: 配列型構造体の数値代入について
返信が遅れて申し訳ありません。 そのように判断された根拠を教えてください。 実行時に何かエラーメッセージでも出ましたか? すみません。確認してみたところ0番以外に入らないのではなく代入に指定されているうちの最も小さい番号にしか入らないことがわかりました。 試しに stbt[2].Img=LoadGraph("../プロジェクトファイル/resource/graph/stageback/stage3/water.png"); stbt[2].Imgsi=255; stbt[2].Imgx1=0; stbt[2].Imgx2=255; stbt[2].Imgy1=0; stbt[2].Imgy2=...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列型構造体の数値代入について
- 返信数: 7
- 閲覧数: 3972
配列型構造体の数値代入について
背景表示の構造体に配列型構造体を使用しているのですが、stbtという名前の構造体の0番以外の配列に値を代入することができずに困っています。原因の究明をしたいので、ソースコードの間違いの指摘をお願いいたします。 #include "../resource/dxlib/DxLib.h" #include <stdio.h> #include <math.h> #include "../header/stageback.h" #include "../header/mode.h" #define PI 3.141592 #define STB_MAX 20 #define STBNUM_MAX 21...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポリゴンを使用した画像の描画について
- 返信数: 3
- 閲覧数: 2754
Re: ポリゴンを使用した画像の描画について
有難う御座います。
言われたとおりにnormメンバの設定を行ったらちゃんと色付きで描画されました!
言われたとおりにnormメンバの設定を行ったらちゃんと色付きで描画されました!
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポリゴンを使用した画像の描画について
- 返信数: 3
- 閲覧数: 2754
ポリゴンを使用した画像の描画について:追記
色々試したところ、モノクロという表現は間違いだったようです。
画像を変えたりと色々行ってみましたが透過色の設定をFALSE(反映しない)にしたり透過色のない画像にすると、真っ黒になってしまいました。
なのでおそらくアルファ以外の三色がまったく反映されていないのだと思います。
画像を変えたりと色々行ってみましたが透過色の設定をFALSE(反映しない)にしたり透過色のない画像にすると、真っ黒になってしまいました。
なのでおそらくアルファ以外の三色がまったく反映されていないのだと思います。
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポリゴンを使用した画像の描画について
- 返信数: 3
- 閲覧数: 2754
ポリゴンを使用した画像の描画について
はじめまして。 ポリゴンでのグラフィックの表示について質問させていただきます。 ゲームの背景に立体背景を使いたいと思い、DrawPolygon3Dの三角形ポリゴンを使用して描画を行っています。 同じ画像の敷き詰めに成功しスクロールにも成功しているのですが、なぜか画像がモノクロで表示されてしまいます。 画像のフェードインとフェードアウトには成功しているのでアルファ成分は反映されているのだと思います。 描画部分のソースコードは以下の通りです。 #include "../resource/dxlib/DxLib.h" #include <stdio.h> #include <math.h> #inc...