DXライブラリ質問&雑談掲示板2
[トップに戻る] [使いかた] [ワード検索] [管理用]
おなまえ
題  名
メッセージ
削除キー (記事削除用。英数字で8文字以内)
クッキー情報を保存

<管理人>
ご返信は一週間に一度、土日のどちらかで行います。平日は時間に余裕があるときだけご返信します。
この掲示板はマルチポスト禁止です。

[5430] paiza 投稿者:sakana 投稿日:2024/05/22(Wed) 15:53 [返信]
paizaのCランクの問題が難しいのですが どうやって勉強をしたら解けるようになりますか?

[5429] ご返信 投稿者:管理人 投稿日:2024/05/10(Fri) 13:21 [返信]
> Tom201512 . u . さん > 制作者本人である確証もなしにお願いしてしまい申し訳ございませんでした。 そう言われてみればそうですね (^ ^; ただ、確かにツイッターのアカウントも消えていたりと仰られている事に間違いは ありませんでしたので対応させていただきました > おれさん > if (posY > 672 && posX + 16 >= asiba_X && posX <= asiba_X + 64) ↑ こちらの式ですが、posY については 672 より大きい値かどうかしか判定していません こちらを posX と同じように障害物がある範囲にプレイヤーが居るかどうかを判定する 条件式にする必要があります

[5428] ブロックの上に乗る処理とジャンプ処理 投稿者:おれ 投稿日:2024/05/10(Fri) 11:09 [返信]
今、2Dの縦スクロールのゲームを作っているのですが、 障害物の下でジャンプすると、障害物のところまでワープする。 という結果になっており、うまくいかないです。どなたか教えていただけますでしょうか。 int posX = 240; // キャラクターのX座標 int posY = 765; // キャラクターのY座標 int y_prev = 0; // 前のフレームでプレイヤーがいたY座標 int y_temp = 0; // 現在のフレームでプレイヤーがいるY座標 int asiba_Y = 704;//足場のx座標 int asiba_X = 64;//足場のY座標 bool jflag = false; // ジャンプしているかのフラグ void Player::playerJump(void) { // ジャンプ処理 if (jflag == true) { y_temp = posY; posY += (posY - y_prev) + 1; y_prev = y_temp; // もし障害物に乗っていたら止まる if (posY > 672 && posX + 16 >= asiba_X && posX <= asiba_X + 64) { jflag = false; posY = 672; } //キャラクターが765のところにいたら着地 if (posY > 765) { jflag = false; posY = 765; } } if (CheckHitKey(KEY_INPUT_SPACE) == 1 && jflag == false) { jflag = true; y_prev = posY; posY = posY - 20; if (posX <= 156 && posX > 64) { //posY = posY + 10; } } }

[5427] Re:[5426] ご返信 投稿者:Tom201512 . u . 投稿日:2024/05/09(Thu) 21:52 [返信]
こちらの方で確認がとれました。 制作者本人である確証もなしにお願いしてしまい申し訳ございませんでした。 ですが削除してくださり本当にありがとうございました。 > > Tom201512 . u . さん > > 承知いたしました > 私の方で "GLORYWING Operation Iron Storm(試遊版)" のご投稿の削除をしましたのでご確認ください m(_ _)m

[5426] ご返信 投稿者:管理人 投稿日:2024/05/08(Wed) 22:28 [返信]
> Tom201512 . u . さん 承知いたしました 私の方で "GLORYWING Operation Iron Storm(試遊版)" のご投稿の削除をしましたのでご確認ください m(_ _)m

[5425] 作品掲示サイトの旧自作ゲーム削除依頼 投稿者:Tom201512 . u . 投稿日:2024/05/08(Wed) 00:44 [返信]
DXライブラリには大変お世話になっています。"GLORYWING Operation Iron Storm(試遊版)"を 作成したTom201512.u.(旧垢名とむぅ)です。 長らくこのサイトに掲示をしていましたが、この作品の削除依頼をお願いしたく、 その点について管理人様にご相談したく、投稿させていただきました。 誠に残念ながら、専門学校時代時のPCが今無いので、パスワードを紛失してしまった状態です。 かつ、すでに旧ツイッターアカウントも消してあるので、ダウンロードもできない状態となっています。 あと、あの作品をもう残すことはないので、できれば管理人様の方で削除をしていただければと 考えているのですが... もし削除していただけるのであれば、何卒宜しくお願い致します。

[5424] ご返信 投稿者:管理人 投稿日:2024/05/06(Mon) 03:32 [返信]
> たあしさん お手数をお掛けしました 正常に動作したようで何よりです (^ ^; > sinoさん > DXライブラリ用のUIライブラリとかありませんか? すみません、ありません m(_ _;m ( 自分で簡単なツールを作成する際も毎回直書きなので… ) > ポカリさん > 『ゲーム開発で学ぶC言語入門』(廣瀬豪、インプレス) > という本はどうでしょうか? > 今年の3月に出た本で、visual studio community2022とDXライブラリによる作例が掲載されています 昨年もDXライブラリが使用された書籍が出版されていたのでてっきりそちらの書籍のことかと思ってしまったのですが、つい最近出た書籍なのですね DXライブラリが登場するのが164ページという大ボリューム( 全497ページ )でサンプルゲームの数も9つと凄いですね…! テンション上がって久しぶりにトップページの書籍紹介を復活させてしまいました (^_^; ( 10年前の書籍も電子書籍で購入できるみたいなので古い書籍も一緒に復活 )

[5423] 無題 投稿者:sino 投稿日:2024/05/05(Sun) 20:55 [返信]
自分でボタンとかのクラス作るの楽しかったんですが、 ちょっと仕様を変更するとバグを潰すのに長い時間を無駄に消費するので、 DXライブラリ用のUIライブラリとかありませんか? ボタンや値操作用のオブジェクト作っては見ましたが、 車輪の再発明とかそんな感じで、楽しいんだけど無駄なことやってるっぽいので、、、 youtu.be/2hpk7_TzTOw?t=309

[5422] Re:[5421] ご返信 投稿者:たあし 投稿日:2024/05/05(Sun) 16:34 [返信]
管理人様 > 修正版をアップしましたので、お手数で申し訳ありませんが再度ダウンロードをしてください m(_ _;m 動きました!ありがとうございます。 お忙しかったと思いますが、迅速な実装と修正に感謝します。 活用させて頂きます。

[5421] ご返信 投稿者:管理人 投稿日:2024/05/05(Sun) 03:24 [返信]
> たあしさん すみません、手元でも DrawCapsule3D が正常に描画されないことを確認しました 修正版をアップしましたので、お手数で申し訳ありませんが再度ダウンロードをしてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) > また、SetUseReversedZを使うと、シルエットも表示されないのですが、カメラを負の方向に向けなければならないでしょうか? いえ、カメラ関係の扱いは何も変更しなくて大丈夫です

[5420] Re:[5418] ご返信 投稿者:たあし 投稿日:2024/05/04(Sat) 21:28 [返信]
管理人様 > IEEE754 というアルゴリズムは 0 に近い値ほど精度が高くなり、0 から離れた値ほど > 精度が低くなるようです > > なので、リバースでは近いほど 1 になり、遠くなるほど 0 になるので、IEEE754 のルールに > 当てはめると近いほど精度が低くなり、遠いほど精度が高くなるということになります なるほど、そういう仕組みなのですね。ふわっとしか理解していませんでしたが、勉強になりました。 > 前置きが長くなりましたが、リバースZの機能を実装してみましたので、よろしければ > こちらをダウンロードしてください m(_ _)m 勝手なお願いにもかかわらず、さっそく実装して下さってありがとうございます! それで試してみたのですが、私の方法がまずかったのか、うまく動きませんでした。 VisualStudioCommunity2022を使っているので、DxLibVCTest.zipをダウンロードして、「プロジェクトに追加すべきファイル_VC用」の中に上書きしました。 そしたらウィンドウは正常に表示されるのですが、3D系の命令がうまく動かなくなりました。 例えばDrawCapsule3Dを使うと、真っ黒のシルエットのみで、シェーディングがうまく表示されません。 試しに新規プロジェクトを作成してみましたが、変わりませんでした。 また、SetUseReversedZを使うと、シルエットも表示されないのですが、カメラを負の方向に向けなければならないでしょうか? お手数をおかけしますが、教えて頂けないでしょうか。よろしくお願いします。

[5419] Re:[5410] 勉強したい 投稿者:ポカリ 投稿日:2024/05/04(Sat) 15:02 [返信]
>sakanaさん 『ゲーム開発で学ぶC言語入門』(廣瀬豪、インプレス) という本はどうでしょうか? 今年の3月に出た本で、visual studio community2022とDXライブラリによる作例が掲載されています 自分も読んでいる途中なのですが、プログラミングの基礎知識から始まるのでなかなか良いと思います 横からすみません、お互いに頑張りましょう

[5418] ご返信 投稿者:管理人 投稿日:2024/05/04(Sat) 00:47 [返信]
> おれさん 2Dのマリオのような横スクロールアクションを作成されているのでしょうか? ジャンプしてブロックに乗るというような処理はこちらのサンプルプログラムで 行っていますので、よろしければご覧ください <アクションサンプルプログラム> https://dxlib.xsrv.jp/program/ActionSample.cpp > たあしさん > DXライブラリはSetCameraNearFar関数でZバッファの精度を決定すると思いますが、 > リバースZの場合はZの逆数なので必ず範囲が0-1になり、精度も近くが高く遠くが > 低くなるということで、たくさんメリットがあるそうです。 リバースではない標準の方式でもZの範囲は必ず0-1になります 精度も『近くが高く』『遠くが低く』なるのも標準の方式でも同様です 違いは、 標準の方式が  近いほど0に近く、遠いほど1に近くなる   のに対して リバースでは  近いほど1に近く、遠いほど0に近くなる   ようです つまりZバッファに書き込まれる値が逆(リバース)ということのようです 何故値の進み方が逆になるだけで精度が上がるのかと言いますと、float型変数などで 使用されている『浮動小数点形式 (IEEE754) 』という、コンピューターで小数点以下の値も 含めた値を扱う処理のアルゴリズムが関係しているようです こちらに詳しく解説されていたのですが <リバース Z (そしてそれがなぜ素晴らしいのか)> https://tomhultonharrop.com/mathematics/graphics/2023/08/06/reverse-z.html ( 英語ですが Google翻訳で問題なく読めます ) IEEE754 というアルゴリズムは 0 に近い値ほど精度が高くなり、0 から離れた値ほど 精度が低くなるようです なので、リバースでは近いほど 1 になり、遠くなるほど 0 になるので、IEEE754 のルールに 当てはめると近いほど精度が低くなり、遠いほど精度が高くなるということになります ただ、元々 Zバッファのアルゴリズム自体が『近いほど精度が高く』『遠いほど精度が低く』なるので、 IEEE754 のアルゴリズムの『0から離れるほど精度が低く』『0に近いほど精度が高い』と併せて プラス・マイナスゼロのような状態になり、総合的にはリバースZの方が精度が高くなる ということのようです( 標準方式では近くばかり精度が高くなっていたのが、遠くも精度が高くなった ) なので、リバースZを使用する場合はZバッファのフォーマットを浮動小数点形式( float形式 )に しないとあまり効果が得られないようです 前置きが長くなりましたが、リバースZの機能を実装してみましたので、よろしければ こちらをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 以下の関数を追加しました // Zバッファに書き込むZ値を標準方式と反転した値( リバースZ )にするかどうかを設定する( DxLib_Init実行前のみ使用可能 ) // Flag TRUE:反転した値にする FALSE:通常の値にする( デフォルト ) int SetUseReversedZ( int Flag ) ; 注釈の通り、DxLib_Init を実行する前に SetUseReversedZ( TRUE ); を実行するとリバースZの 方式で描画が行われるようになります ただ、前述の通りZバッファが float型( 浮動小数点型 )ではないと効果があまりないので同じく DxLib_Init の実行前に SetZBufferBitDepth( 32 ); を実行して、Zバッファのフォーマットを float型( 浮動小数点型 ) にするようにしてください m(_ _;m // リバースZ方式で実行 SetUseReversedZ( TRUE ); // Zバッファのビット数を 32bit( float型 )に設定 SetZBufferBitDepth( 32 );

[5417] Re:[5415] ご返信 投稿者:たあし 投稿日:2024/05/02(Thu) 22:30 [返信]
管理人様 お忙しいところ返信して頂いてありがとうございます。 > 『ティアリングの問題を緩和』という効果は無いと思うのですが、何処かにそのような記述があったのでしょうか? すみません、ティアリングではなく、Zファインディングでした。おっしゃる通りZバッファの精度が上がるので、Z値の近いポリゴンの重なりを正確に描きやすいようですね。 DXライブラリはSetCameraNearFar関数でZバッファの精度を決定すると思いますが、リバースZの場合はZの逆数なので必ず範囲が0-1になり、精度も近くが高く遠くが低くなるということで、たくさんメリットがあるそうです。 もしお手数でなければ、実装を検討していただけると嬉しいです。

[5416] ブロックの上に乗る処理 投稿者:おれ 投稿日:2024/05/02(Thu) 14:47 [返信]
今ブロックの上に乗る処理を作っているのですが、どうしてもうまくいかないです。 わかる方教えていただけないでしょうか。

[5415] ご返信 投稿者:管理人 投稿日:2024/05/01(Wed) 22:41 [返信]
> たあしさん リバースZというものがあることを初めて知りました 載せていただいたサイトの情報を拝見する限りではZバッファの精度を改善する効果があるようです ( 幅・奥行きが数キロメートルあるような巨大な3Dステージの場合、通常のZバッファでは精度が足りず 遠方のオブジェクトが正しい前後関係で描画されないことがある所を、リバースZを使用することで 遠方のオブジェクトも正しい前後関係で描画できるようになる、という手法のようです ) 『ティアリングの問題を緩和』という効果は無いと思うのですが、何処かにそのような記述があったのでしょうか?

[5414] DXライブラリでリバースZをサポートする予定はありますか? 投稿者:たあし 投稿日:2024/04/30(Tue) 18:12 [返信]
はじめまして。DXライブラリを使わせて頂いています。素晴らしいライブラリを作って下さりありがとうございます。 突然ですが、DXライブラリでリバースZを使用することはできるでしょうか?もしくはサポートして頂けると嬉しいです。 参考: //nlguillemot.wordpress.com/2016/12/07/reversed-z-in-opengl/ //developer.nvidia.com/content/depth-precision-visualized 近年Unityが使用していたり、GodotEngineもサポートする予定だそうです。 プロジェクション行列を変更する必要がありそうですが、ティアリングの問題を緩和したりできるそうなので、もしよければ検討して頂けるでしょうか。

[5413] ご返信 投稿者:管理人 投稿日:2024/04/29(Mon) 06:17 [返信]
> naohiro19さん DrawFormatString はC言語の標準関数にある printf のように変数に代入されている値を簡単に 文字列で描画できるようにするために追加しました

[5412] 質問です 投稿者:naohiro19 投稿日:2024/04/26(Fri) 15:31 [返信]
DXライブラリに関してちょっとだけお聞きいたします。 DXライブラリの「DrawFormatString」関数はどのような経緯で実装したんでしょうか?

[5411] ご返信 投稿者:管理人 投稿日:2024/04/23(Tue) 00:45 [返信]
> sinoさん 1フレーム700万! (・o・ 単純計算で1400万ポリゴン…!( 画像を1毎描画するには2ポリゴン必要なので ) 動画を拝見しましたが中々見応えのある花火映像ですね! お役に立てたようで何よりです > girusuさん ご希望の処理が実現できたとのことで何よりです > sakanaさん Dixqさんの『新・ゲームプログラミングの館』が参考になるかもしれません <新・ゲームプログラミングの館> https://dixq.net/g/ その他にはDXライブラリを使ったゲームプログラムの作り方について書かれた書籍もあります <14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編> https://www.amazon.co.jp/14%E6%AD%B3%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BC%E8%A8%80%E8%AA%9E%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E6%95%99%E5%AE%A4-Visual-Studio-2013%E7%B7%A8-%E5%A4%A7%E6%A7%BB%E6%9C%89%E4%B8%80%E9%83%8E/dp/4899774117 10年も前の書籍ですが、DXライブラリ自体は10年前と比較してもほぼ変わっていないので、 書籍の内容はそのまま現在でも使用することが出来ます ( Visual Studio のインストール関連だけは Visual Studio 2022 に置き換えて読む必要がありますが… )

[5410] 勉強したい 投稿者:sakana 投稿日:2024/04/22(Mon) 11:56 [返信]
DXライブラリでゲームを作りたいのですが難しくて どうやって勉強したらいいですか?

[5409] Re:[5407] ご返信 投稿者:girusu 投稿日:2024/04/21(Sun) 23:11 [返信]
> > girusuさん > > DrawExtendGraph では画像を回転させることはできませんので、画像の回転描画を行うための関数である DrawRotaGraph を使用してみてください m(_ _)m > > <DrawRotaGraph の解説> > https://dxlib.xsrv.jp/function/dxfunc_graph1.html#R3N10 実現出来ました。ご助言いただきありがとうございました。

[5408] 無題 投稿者:sino 投稿日:2024/04/21(Sun) 19:45 [返信]
オーバーヘッドっぽいところ削っていったら、C#でも1フレームあたり描画回数700万ぐらいまではfpsかなり落ちるとはいえ、 まともに動くようになりました youtu.be/vceisAXcu5E 本当に助言ありがとうござます

[5407] ご返信 投稿者:管理人 投稿日:2024/04/17(Wed) 22:11 [返信]
> girusuさん DrawExtendGraph では画像を回転させることはできませんので、画像の回転描画を行うための関数である DrawRotaGraph を使用してみてください m(_ _)m <DrawRotaGraph の解説> https://dxlib.xsrv.jp/function/dxfunc_graph1.html#R3N10

[5406] 画像表示に関して 投稿者:girusu 投稿日:2024/04/17(Wed) 00:47 [返信]
下記、DrawExtendGraphでカード画像の裏表を表示しています。 カード画像を45°回転させた状態で裏表表示をしたいため、 色々と試行錯誤しましたが実現できませんでした。 ご助言をいただけないでしょうか。 double angle = 0; double rateX; // 時間をインクリメント CountTime[0]++; // 回転角度を変更 angle = (PI / 60) * CountTime[0]; // 現在の角度でのx座標値を算出 rateX = (int)(cos(angle) * 60 * 0.5); // 裏と表、どちらが見えているかを角度で判断 if (angle < PI / 2.0f || angle > PI / 2.0f + PI) {  // 裏が見えている場合  DrawExtendGraph((int)(20 + 60 * 0.5 - rateX) + 1, (int)y1, (int)(20 + 60 * 0.5 + rateX) - 1, (int)(20 + 80), backimage, transFlag); } else {  // 表が見えている場合  DrawExtendGraph((int)(20 + 60 * 0.5 + rateX) - 1, (int)y1, (int)(20 + 60 * 0.5 - rateX) + 1, (int)(20 + 80), imageHandle, transFlag); } // 1回転(π)以上 if (angle >= PI) {  // 時間を初期化  CountTime[0] = 0; }

[5405] ご返信 投稿者:管理人 投稿日:2024/04/10(Wed) 21:30 [返信]
> naohiro19さん ご提案ありがとうございます 現状でも文字列の描画は行えますが、DirectWrite による描画をお勧めされるのは 何か理由があるのでしょうか? (・・

[5404] DXライブラリに文字列描画の設定を追加してみたらどうでしょうか? 投稿者:naohiro19 投稿日:2024/04/09(Tue) 21:09 [返信]
int SetDrawStringMode(int DrawTextMode); DX_DRAWSTRING_DEAULT:従来の方法で文字列を描画する DX_DRAWSTRING_DIRECTWRITE:DirectWriteを使った文字列描画 この関数はDrawString関数などをで従来の方法で文字列を描画するか DirectWriteを使った描画にするのかを設定をする関数です。 この関数を読んだ後にDrawString関数を呼ぶとDirectWriteのAPIを使って文字列を描画する仕組みを用意したらどうでしょうか?

[5403] ご返信 投稿者:管理人 投稿日:2024/03/30(Sat) 14:59 [返信]
> naohiro19さん Visual Studio 2022 で GraphHandle = LoadGraph( R("Image\Graph1.bmp") ); をコンパイルしてみたのですが error C3861: 'R': 識別子が見つかりませんでした と、コンパイルエラーになってしまいました naohiro19さんの環境ではエラーにならずにコンパイルできますでしょうか?

[5402] DXライブラリのミニテクニックのページについて 投稿者:naohiro19 投稿日:2024/03/28(Thu) 09:01 [返信]
C++の生文字リテラルを用いると、以下の記述は、 GraphHandle = LoadGraph( "Image\\Graph1.bmp" ) ; この記述は、以下のように記述ができます。 GraphHandle = LoadGraph( R("Image\Graph1.bmp") ) ; \\ を書く必要がなくなります。

[5401] CheckHitKeyAll()に付いて。 投稿者:辺見!真琴 投稿日:2024/03/05(Tue) 15:08 [返信]
細事に対応いただき、ありがとうございました。

記事No 削除キー

- Aska BBS -