> orbisさん やり取りが長くなりそうなのでこちらにスレッドを作成しました ご返信をこちらにしましたので、よろしければご確認ください m(_ _)m https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5673
> > orbisさん > > なるほど、C++ Builder が 12 になったのですね > C++ Builder 12 で BCC2 のライブラリファイルをコンパイルし直しましたので > よろしければその変更を行ったこちらのバージョンを試してみてください m(_ _)m > > https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 12 用 早速の対応ありがとうございます。 出てきた「win32,win64」のホルダーを上書きしたのですが、 残念ながら症状は変わりませんでした。
> orbisさん なるほど、C++ Builder が 12 になったのですね C++ Builder 12 で BCC2 のライブラリファイルをコンパイルし直しましたので よろしければその変更を行ったこちらのバージョンを試してみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 12 用
いつもお世話になっています。 今回、C++Builderがバージョンアップで12になってしまい、DXライブラリーが使えなくなってしまいました。 コンパイルエラーとして [ilink32 エラー] Error: 未解決の外部シンボル '__streams' が C:\xx\DXLIB_BCC2\プロジェクトに追加すべきファイル_C++BUILDER用\LIBJPEG.LIB|jerror から参照されています と出て停止します。DXライブラリーを継続して使いたいのですが、対処法が有りましたらお教えください。 よろしくお願いします。
ありがとうございました! 関数の使い方を理解することができました!
> こんさん > この関数はサイズを多めに確保しておく必要があるなどのルールがあるのでしょうか? はい、CreateShaderConstantBuffer に渡すバッファーのサイズは 16の倍数である必要がありますので int bufHandle = CreateShaderConstantBuffer( sizeof( float ) * 2 ); ↑ こちらの処理の結果 bufHandle には -1 が代入されている( CreateShaderConstantBuffer が失敗して -1 が返ってきている )と思います sizeof( float ) * 4 にしていただくことで CreateShaderConstantBuffer が成功しますので、よろしければお試しください m(_ _)m ( 尚、16の倍数の制限はDXライブラリのものではなく、Direct3D 11 の仕様です )
情報が足りない気がしたので追加です この書き方に誤りはありますか? // シェーダー側 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 );
CreateShaderConstantBufferを使用する際に シェーダーに記述した定数バッファの総サイズとぴったり同サイズを指定したところ 自分の環境ではアクセス違反が発生してしまいました その他の書き方に不備があるのだと考えて探したのですが分からず 試しにシェーダー側より多めに確保するようにしたところアクセス違反は発生しなくなりました この関数はサイズを多めに確保しておく必要があるなどのルールがあるのでしょうか?
> Tom201512 . u .さん > Dxlibには長いことお世話になりました。 > この度、ゲーム制作そのものを完全に引退することになり、 > 自作パチスロゲームとして公開していた"Mondschein"並びに"Nostalgia"の公開を停止することにいたしましたので、 > 削除依頼をお願いします。 なんと、そうなのですね… DXライブラリをお使いいただきありがとうございました m(_ _)m ご依頼の2作品の投稿記事を削除しましたのでご確認ください > MrSoup678さん バグのご指摘ありがとうございます 手元のコードに反映しましたので、次のバージョンで修正が反映されます もし直ぐにご必要でしたらこちらをお使いください m(_ _)m https://dxlib.xsrv.jp/temp/DXArchiveTest.zip
DXArchive.cppの2561行目(Toolサブフォルダ内)にバグを発見しました。圧縮ヘッダのないDXAファイルの場合、誤ってHead.DataStartAddressから読み込んでいます。 Head.FileNameTableStartAddressから読み込む必要があります。 挿入します: ``` _fseeki64(ArcP, Head.FileNameTableStartAddress, SEEK_SET); ``` をKeyConvFileReadの前に挿入することで、この問題が修正されます。 これは3.24dのプリビルドに存在します。 翻訳:DEEP-L.com
Dxlibには長いことお世話になりました。 この度、ゲーム制作そのものを完全に引退することになり、 自作パチスロゲームとして公開していた"Mondschein"並びに"Nostalgia"の公開を停止することにいたしましたので、 削除依頼をお願いします。 突然の連絡ではありますが何卒よろしくお願いします。
> naohiro19さん ご連絡ありがとうございます、該当スレッドを削除しました m(_ _)m
以下のページになります。 dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5662 投稿者は堂々と商標法違反および不正競争防止法違反なので 商標法では10年以下の懲役または1000万円以下の罰金 不正競争防止法では10年以下の懲役または20万円以下の罰金となるようです。 過去に香水の偽ブランドを販売した男性が逮捕されています。 (DXライブラリとは無関係ですが)
> 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 を有効にした際の関数も使えなくなりますので コンパイルエラーとなるのは正常です
返信ありがとうございます。 少し調べてみたのですが、以下のような関係がエラーメッセージと関係していたようです。 // 軽量バージョンの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
> 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 の // を外してしまったのだと思います
管理人様、アドバイスありがとうございます。 私の勘違いだったと思いますが、DxCompileConfig.hをコメントアウトすると 実行速度が速くなるのではなくて 実行ファイルのサイズが軽量化されるのですね。 何を外したからこうなったのかはわかりませんが、 printfDxやKeyInputNumberなどの関数が使えなくなってしまって困ったので 特に理由がなければこのファイルはいじらないことにしました。
> taroさん > これはコメントアウトしても差し支えないものだったでしょうか? はい、DX_NON_INLINE_ASM はDXライブラリ自体のコンパイルで使用される定義なので コメントアウトしても大丈夫です > 見たところ、他にもDxCompileConfig.hで設定ができるようになってるみたい(軽量化される?)なのですが、 > 初心者がこれらの設定をいじるのは問題がありますでしょうか? 変更の意味が分かった上でいじるのでしたら問題ないと思いますが 変更する前と後でどのような違いが発生するのかよくわからない状態でいじるのは止めたほうが良いと思います
初心者です。おそらく大した問題では無いのですが、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で設定ができるようになってるみたい(軽量化される?)なのですが、 初心者がこれらの設定をいじるのは問題がありますでしょうか?
> naohiro19さん ご連絡ありがとうございます 該当のスレッドを削除しました m(_ _)m
以下のページになります。 dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5644
垂直同期を動的変更出来るようになりました! 動的変更出来ないのはDirect3D 9の仕様だったのですね ご対応ありがとうございました!
> わしさん すみません、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
垂直同期設定をゲーム中に動的に変更させたいのですが 過去の同様のスレッドにおいて 今のDirectXにはそのような機能自体が用意されていないというご回答をされているのを拝見しました しかし現在発売される様々なPCゲームにおいては オプションで垂直同期のオン/オフを変更出来るようになっているというのは珍しくないと思います これはそれらのゲームに使用されているエンジンが動的に変更する手段を見つけているのではなく 単純にアプリケーション起動時に垂直同期を待たない設定でDirectXを初期化した後 オプションで垂直同期設定がオンになっていた場合に 垂直同期を待つAPIを都度呼び出している(のであろう)ということなのでしょうか?
> Pさん すみません、載せていただいた2行だけでは流石に原因が分かりませんので、 プログラム全体を拝見できないでしょうか? また、こちらの掲示板では長いプログラムを書き込むのにあまり向いていないので、 できればこちらの質問掲示板の方に投稿していただければと思います m(_ _)m <DXライブラリプログラム&プログラム質問掲示板(スレッド表示)> https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?
タイマーを作ろうとしているのですが ゲームが始まる前(タイトル画面)からカウントが減っちゃうんです int time = GetNowCount(); DrawFormatString(400, 150, GetColor(255, 255, 255), "TIME:%d", (60000 - (GetNowCount() - time)) / 1000); って書いてるんですけどゲーム画面になってからカウントするようにするにはどうしたらいいですか?
ありがとうございました! 参考にさせていただきます!
> シュウさん どちらが先でも特に問題は無いと思いますが 正しい順序としては DxLib_End の後に PostQuitMessage になります
SetUserWindowを使用したプログラムで終了処理をさせる場合に DxLib_EndをPostQuitMessageの前と後どちらで処理させたら良いか分からないのですが 正しい順序はありますか?
> Pさん こちらの Dixqさんのウェブサイトの <C言語何でも質問サイト> https://dixq.net/ 『龍神録プログラミングの館』がおすすめです
- Aska BBS -