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

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

[5477] ご返信 投稿者:管理人 投稿日:2024/10/11(Fri) 23:06 [返信]
> ノンおっぱい星人さん すみません、ご返信が遅くなりました > iだけでも中身の数値がキャストされて11番目の文字が変更される気がするのですが。 仮に file[11] = (char)( '0' + i ) ; こちらを file[11] = ( char )i ; と変更した場合は正常にロードは行われなくなります コンピューターは全ての情報( 画像や音楽や3Dモデルなど )を数値で扱うのですが、同じように文字も数値で扱われます 例えば文字の A は数値では 65 となり、i は数値では 105 となっています なので、文字列の AAAiii は、メモリの中では 65 65 65 105 105 105 という数値で保存されていることになります 同じように文字の 0 は数値でも 0 … ではなく 48 となっています、そして文字の 1 は 49、2 は 50、3 は 51、4 は 52 5 は 53、6 は 54、7 は 55、8 は 56、9 は 57 となっています つまり、ある 0 から 9 までの値が格納された変数 i の値を文字の値に変換したい場合は 変数 i に 48 を 足せば良いことになります file[11] = (char)( '0' + i ) ; ↑ こちらは file[11] に i の数値を 0〜9 の文字の値に変換したものを代入しようとしている処理なので file[11] = (char)( 48 + i ) ; ↑ このように書いても同様の処理結果になります、ただ、 48 + i では何をしたいのかパッと見ただけでは良くわからないので 48 の代わりに '0' と書かれているのです

[5476] '0'+iという記述の意味 投稿者:ノンおっぱい星人 投稿日:2024/10/10(Thu) 11:30 [返信]
こちらのサイトでもご紹介されているゲーム開発で学ぶC言語にある記述なのですが(p.338)、 以下のような記述があります。 for ( int i= 0 ; i < IMG_ENEMY_MAX; i++ ) { char file[] = "image/enemy*.png"; file[11] = (char)( '0' + i ) ; imgEnemy[i] = LoadGraph( file ) ; } シューティングゲームの作成場面で、敵機の画像が複数枚あるので、 それをfor文でロードしようというものですが、3行目の '0'の意味は何でしょう? 画像のファイルパスの11番目の文字であるアスタリスク。 その箇所をファイル番号の数字に置き換えるのを、for文で実現しているようですが、 '0'の隣の変数iだけで足りるように思えるのですが、 '0'+としているのはどういう意味でしょうか。 iだけでも中身の数値がキャストされて11番目の文字が変更される気がするのですが。

[5475] ご返信 投稿者:管理人 投稿日:2024/09/09(Mon) 19:06 [返信]
> orbisさん やり取りが長くなりそうなのでこちらにスレッドを作成しました ご返信をこちらにしましたので、よろしければご確認ください m(_ _)m https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5673

[5474] Re:[5473] ご返信 投稿者:orbis 投稿日:2024/09/09(Mon) 08:33 [返信]
> > orbisさん > > なるほど、C++ Builder が 12 になったのですね > C++ Builder 12 で BCC2 のライブラリファイルをコンパイルし直しましたので > よろしければその変更を行ったこちらのバージョンを試してみてください m(_ _)m > > https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 12 用 早速の対応ありがとうございます。 出てきた「win32,win64」のホルダーを上書きしたのですが、 残念ながら症状は変わりませんでした。

[5473] ご返信 投稿者:管理人 投稿日:2024/09/09(Mon) 01:20 [返信]
> orbisさん なるほど、C++ Builder が 12 になったのですね C++ Builder 12 で BCC2 のライブラリファイルをコンパイルし直しましたので よろしければその変更を行ったこちらのバージョンを試してみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 12 用

[5472] c++builder のバージョンアップによってDXライブラリーがリンクできない 投稿者:orbis 投稿日:2024/09/08(Sun) 08:00 [返信]
いつもお世話になっています。 今回、C++Builderがバージョンアップで12になってしまい、DXライブラリーが使えなくなってしまいました。 コンパイルエラーとして [ilink32 エラー] Error: 未解決の外部シンボル '__streams' が C:\xx\DXLIB_BCC2\プロジェクトに追加すべきファイル_C++BUILDER用\LIBJPEG.LIB|jerror から参照されています と出て停止します。DXライブラリーを継続して使いたいのですが、対処法が有りましたらお教えください。 よろしくお願いします。

[5471] Re:[5470] ご返信 投稿者:こん 投稿日:2024/08/21(Wed) 19:33 [返信]
ありがとうございました! 関数の使い方を理解することができました!

[5470] ご返信 投稿者:管理人 投稿日:2024/08/21(Wed) 01:10 [返信]
> こんさん > この関数はサイズを多めに確保しておく必要があるなどのルールがあるのでしょうか? はい、CreateShaderConstantBuffer に渡すバッファーのサイズは 16の倍数である必要がありますので int bufHandle = CreateShaderConstantBuffer( sizeof( float ) * 2 ); ↑ こちらの処理の結果 bufHandle には -1 が代入されている( CreateShaderConstantBuffer が失敗して -1 が返ってきている )と思います sizeof( float ) * 4 にしていただくことで CreateShaderConstantBuffer が成功しますので、よろしければお試しください m(_ _)m ( 尚、16の倍数の制限はDXライブラリのものではなく、Direct3D 11 の仕様です )

[5469] CreateShaderConstantBufferの使い方 投稿者:こん 投稿日:2024/08/20(Tue) 12:04 [返信]
情報が足りない気がしたので追加です この書き方に誤りはありますか? // シェーダー側 cbuffer BUFFERDATA : register(b3) { float buf1; float buf2; } // 初期化 float fnum1 = 0.0f; float fnum2 = 0.1f; float *pf; int bufHandle = CreateShaderConstantBuffer( sizeof( float ) * 2 ); // ループ内 pf = ( float * ) GetBufferShaderConstantBuffer( bufHandle ); pf[ 0 ] = fnum1; // ←ここでアクセス違反になる pf[ 1 ] = fnum2; UpdateShaderConstantBuffer( bufHandle ); SetShaderConstantBuffer( bufHandle, DX_SHADERTYPE_PIXEL, 3 );

[5468] CreateShaderConstantBufferの使い方 投稿者:こん 投稿日:2024/08/19(Mon) 23:20 [返信]
CreateShaderConstantBufferを使用する際に シェーダーに記述した定数バッファの総サイズとぴったり同サイズを指定したところ 自分の環境ではアクセス違反が発生してしまいました その他の書き方に不備があるのだと考えて探したのですが分からず 試しにシェーダー側より多めに確保するようにしたところアクセス違反は発生しなくなりました この関数はサイズを多めに確保しておく必要があるなどのルールがあるのでしょうか?

[5467] ご返信 投稿者:管理人 投稿日:2024/08/16(Fri) 01:57 [返信]
> Tom201512 . u .さん > Dxlibには長いことお世話になりました。 > この度、ゲーム制作そのものを完全に引退することになり、 > 自作パチスロゲームとして公開していた"Mondschein"並びに"Nostalgia"の公開を停止することにいたしましたので、 > 削除依頼をお願いします。 なんと、そうなのですね… DXライブラリをお使いいただきありがとうございました m(_ _)m ご依頼の2作品の投稿記事を削除しましたのでご確認ください > MrSoup678さん バグのご指摘ありがとうございます 手元のコードに反映しましたので、次のバージョンで修正が反映されます もし直ぐにご必要でしたらこちらをお使いください m(_ _)m https://dxlib.xsrv.jp/temp/DXArchiveTest.zip

[5466] DXADecode bug. 投稿者:MrSoup678 投稿日:2024/08/15(Thu) 19:59 [返信]
DXArchive.cppの2561行目(Toolサブフォルダ内)にバグを発見しました。圧縮ヘッダのないDXAファイルの場合、誤ってHead.DataStartAddressから読み込んでいます。 Head.FileNameTableStartAddressから読み込む必要があります。 挿入します: ``` _fseeki64(ArcP, Head.FileNameTableStartAddress, SEEK_SET); ``` をKeyConvFileReadの前に挿入することで、この問題が修正されます。 これは3.24dのプリビルドに存在します。 翻訳:DEEP-L.com

[5465] 作品掲示サイト削除依頼 投稿者:Tom201512 . u . 投稿日:2024/08/15(Thu) 05:50 [返信]
Dxlibには長いことお世話になりました。 この度、ゲーム制作そのものを完全に引退することになり、 自作パチスロゲームとして公開していた"Mondschein"並びに"Nostalgia"の公開を停止することにいたしましたので、 削除依頼をお願いします。 突然の連絡ではありますが何卒よろしくお願いします。

[5464] ご返信 投稿者:管理人 投稿日:2024/08/13(Tue) 23:22 [返信]
> naohiro19さん ご連絡ありがとうございます、該当スレッドを削除しました m(_ _)m

[5463] スパム目的が投稿されました(2回目) 投稿者:naohiro19 投稿日:2024/08/13(Tue) 07:37 [返信]
以下のページになります。 dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5662 投稿者は堂々と商標法違反および不正競争防止法違反なので 商標法では10年以下の懲役または1000万円以下の罰金 不正競争防止法では10年以下の懲役または20万円以下の罰金となるようです。 過去に香水の偽ブランドを販売した男性が逮捕されています。 (DXライブラリとは無関係ですが)

[5462] ご返信 投稿者:管理人 投稿日:2024/08/12(Mon) 21:19 [返信]
> taroさん > // 軽量バージョンのDXライブラリを生成する場合は次のコメントを外してください > //#define DX_LIB_LITEVER >  > これをコメントアウトした場合、 >  > int asap=KeyInputNumber(0,16,cmax-1,0,FALSE); >  > この関数が使用できなくなりました。 はい、DX_LIB_LITEVER を有効にすると KeyInputString や KeyInputNumber の機能を無効化する DX_NON_KEYEX が有効となりますので、プログラム中に KeyInputNumber があるとコンパイルエラーとなります こちらは正常な動作です > // ログ出力を行わない場合は次のコメントを外して下さい > //#define DX_NON_LOG >  > このマクロ定義をコメントアウトした場合、 >  > printfDx("test"); >  > このプログラムが実行できなくなりました。 はい、DX_NON_LOG を有効にした場合、DX_NON_PRINTF_DX を有効にした際の関数も使えなくなりますので コンパイルエラーとなるのは正常です

[5461] DXライブラリのコンパイル設定に関する質問 投稿者:taro 投稿日:2024/08/12(Mon) 17:17 [返信]
返信ありがとうございます。 少し調べてみたのですが、以下のような関係がエラーメッセージと関係していたようです。 // 軽量バージョンのDXライブラリを生成する場合は次のコメントを外してください //#define DX_LIB_LITEVER これをコメントアウトした場合、 int asap=KeyInputNumber(0,16,cmax-1,0,FALSE); この関数が使用できなくなりました。 // ログ出力を行わない場合は次のコメントを外して下さい //#define DX_NON_LOG このマクロ定義をコメントアウトした場合、 printfDx("test"); このプログラムが実行できなくなりました。 使用したライブラリはVer 3.24eで最新版のMinGW版(13_1_0_x86_64_w64)を使っております。 私が使った環境で確認した限りでは、つぎの定義は有効でした。 // 入力機能を無効にする場合は次のコメントを外して下さい //#define DX_NON_INPUT // printfDx を無効にする場合は次のコメントを外して下さい //#define DX_NON_PRINTF_DX

[5460] ご返信 投稿者:管理人 投稿日:2024/08/11(Sun) 22:54 [返信]
> taroさん > 私の勘違いだったと思いますが、DxCompileConfig.hをコメントアウトすると > 実行速度が速くなるのではなくて > 実行ファイルのサイズが軽量化されるのですね。 少し詳しくご説明しますと、DxCompileConfig.h はDXライブラリの特定の機能を有効化したり無効化したりするための定義が並んでいます 殆どの定義はコメントアウトを外して有効にすることで特定の機能を無効化することになります 例えば // JPEG画像の読みこみ機能がいらない方は次のコメントを外してください // ※DxUseCLib.lib も再コンパイルする必要があります //#define DX_NON_JPEGREAD こちらの //#define DX_NON_JPEGREAD の // を削除して #define DX_NON_JPEGREAD を有効にすると jpegファイルが 読み込めなくなります、そして読み込めなくなる代わりにサイズが軽量化されます( jpegファイルを読み込むための プログラムが削除されるので ) > 何を外したからこうなったのかはわかりませんが、 > printfDxやKeyInputNumberなどの関数が使えなくなってしまって困ったので > 特に理由がなければこのファイルはいじらないことにしました。 printfDx を無効にする // printfDx を無効にする場合は次のコメントを外して下さい //#define DX_NON_PRINTF_DX や、KeyInputNumber などを無効にする // 入力機能を無効にする場合は次のコメントを外して下さい //#define DX_NON_INPUT の // を外してしまったのだと思います

[5459] DXライブラリのコンパイル設定に関する質問 投稿者:taro 投稿日:2024/08/11(Sun) 19:57 [返信]
管理人様、アドバイスありがとうございます。 私の勘違いだったと思いますが、DxCompileConfig.hをコメントアウトすると 実行速度が速くなるのではなくて 実行ファイルのサイズが軽量化されるのですね。 何を外したからこうなったのかはわかりませんが、 printfDxやKeyInputNumberなどの関数が使えなくなってしまって困ったので 特に理由がなければこのファイルはいじらないことにしました。

[5458] ご返信 投稿者:管理人 投稿日:2024/08/07(Wed) 23:52 [返信]
> taroさん > これはコメントアウトしても差し支えないものだったでしょうか? はい、DX_NON_INLINE_ASM はDXライブラリ自体のコンパイルで使用される定義なので コメントアウトしても大丈夫です > 見たところ、他にもDxCompileConfig.hで設定ができるようになってるみたい(軽量化される?)なのですが、 > 初心者がこれらの設定をいじるのは問題がありますでしょうか? 変更の意味が分かった上でいじるのでしたら問題ないと思いますが 変更する前と後でどのような違いが発生するのかよくわからない状態でいじるのは止めたほうが良いと思います

[5457] DXライブラリのコンパイル設定に関する質問 投稿者:taro 投稿日:2024/08/07(Wed) 23:36 [返信]
初心者です。おそらく大した問題では無いのですが、MinGW(CodeBlocks内に入ってたやつ)でコンパイルした際に、 DxCompileConfig.h:31: warning: "DX_NON_INLINE_ASM" redefined #define DX_NON_INLINE_ASM とあったので、DxCompileConfig.h内にある、 // インラインアセンブラを使用しないソースコードでコンパイルする場合は以下のコメントアウトを外してください #define DX_NON_INLINE_ASM という一文をコメントアウトしたところ警告が出なくなりました。 これはコメントアウトしても差し支えないものだったでしょうか? 見たところ、他にもDxCompileConfig.hで設定ができるようになってるみたい(軽量化される?)なのですが、 初心者がこれらの設定をいじるのは問題がありますでしょうか?

[5456] ご返信 投稿者:管理人 投稿日:2024/07/17(Wed) 02:50 [返信]
> naohiro19さん ご連絡ありがとうございます 該当のスレッドを削除しました m(_ _)m

[5455] スパム目的の投稿が投稿されました。 投稿者:naohiro19 投稿日:2024/07/16(Tue) 21:45 [返信]
以下のページになります。 dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5644

[5454] Re:[5453] ご返信 投稿者:わし 投稿日:2024/07/10(Wed) 20:41 [返信]
垂直同期を動的変更出来るようになりました! 動的変更出来ないのはDirect3D 9の仕様だったのですね ご対応ありがとうございました!

[5453] ご返信 投稿者:管理人 投稿日:2024/07/10(Wed) 03:21 [返信]
> わしさん すみません、Direct3D 10 以降では動的に垂直同期をON/OFFできるので、 DXライブラリも Direct3D 11 を使用している場合は垂直同期を動的にON/OFFできるように していたつもりだったのですが、コードを確認したところそのようになっていませんでした ( Android でのみ動的な垂直同期ON/OFFができるようになっていました… ) Direct3D 11 を使用した場合も SetWaitVSyncFlag で動的な垂直同期のON/OFFをできるようにしましたので、 よろしければこちらの修正版をお試しください 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 // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 因みにDXライブラリは Direct3D 11 が使用できる環境ではデフォルトでは Direct3D 11 を使用しますが、 Direct3D 11 に対応したグラフィックデバイスが存在しない環境や、Direct3D 11 が使用できないバージョンの Windows を使用していたり、SetUseDirect3DVersion( DX_DIRECT3D_9 ); などを DxLib_Init の前に実行して Direct3D 9 を使用する設定にしていた場合は動的に垂直同期を変更できない Direct3D 9 で動作しますのでご注意ください m(_ _)m

[5452] 垂直同期の動的変更について 投稿者:わし 投稿日:2024/07/09(Tue) 22:01 [返信]
垂直同期設定をゲーム中に動的に変更させたいのですが 過去の同様のスレッドにおいて 今のDirectXにはそのような機能自体が用意されていないというご回答をされているのを拝見しました しかし現在発売される様々なPCゲームにおいては オプションで垂直同期のオン/オフを変更出来るようになっているというのは珍しくないと思います これはそれらのゲームに使用されているエンジンが動的に変更する手段を見つけているのではなく 単純にアプリケーション起動時に垂直同期を待たない設定でDirectXを初期化した後 オプションで垂直同期設定がオンになっていた場合に 垂直同期を待つAPIを都度呼び出している(のであろう)ということなのでしょうか?

[5451] ご返信 投稿者:管理人 投稿日:2024/06/28(Fri) 20:20 [返信]
> Pさん すみません、載せていただいた2行だけでは流石に原因が分かりませんので、 プログラム全体を拝見できないでしょうか? また、こちらの掲示板では長いプログラムを書き込むのにあまり向いていないので、 できればこちらの質問掲示板の方に投稿していただければと思います m(_ _)m <DXライブラリプログラム&プログラム質問掲示板(スレッド表示)> https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?

[5450] 無題 投稿者:P 投稿日:2024/06/27(Thu) 11:17 [返信]
タイマーを作ろうとしているのですが ゲームが始まる前(タイトル画面)からカウントが減っちゃうんです int time = GetNowCount(); DrawFormatString(400, 150, GetColor(255, 255, 255), "TIME:%d", (60000 - (GetNowCount() - time)) / 1000); って書いてるんですけどゲーム画面になってからカウントするようにするにはどうしたらいいですか?

[5449] Re:[5448] ご返信 投稿者:シュウ 投稿日:2024/06/15(Sat) 10:49 [返信]
ありがとうございました! 参考にさせていただきます!

[5448] ご返信 投稿者:管理人 投稿日:2024/06/15(Sat) 04:46 [返信]
> シュウさん どちらが先でも特に問題は無いと思いますが 正しい順序としては DxLib_End の後に PostQuitMessage になります

記事No 削除キー

- Aska BBS -