> etsukaさん ご報告ありがとうございます 私の環境でも 17.12.2 でDXライブラリでも IntelliSense が正常に動作することを確認しました 思いの外早く修正されて良かったです (^ ^;
Version 17.12.2 出ましたね。 私の環境だとIntelliSense機能が復活しました。
>管理人様 ご確認ありがとうございます。ユーザーからではどちらが問題があるのかわからなかったので、 visual studio側の問題ということがわかり、安心しました。
> 774さん ビルドエラー( コンパイルエラー )が発生するわけではありませんので、DXライブラリ側の問題というよりは Visual Studio 側の問題となります なのでDXライブラリ側で対応できることは無い状態です Visual Studio 側で問題が出ないようになってくれることを待つのみです (・・;
Visual Studio Community 2022 の新バージョン(ver.17.12)でエラーが出てしまいます。 他の方がすでに行っているように、ver17.11.5にダウングレードすることで回避できるようなので、 緊急性はないかと思いますが、いずれ新バージョンに対応していただけると幸いです。
無事アイコンを設定できました。ありがとうございました。 次からはグローバル関数も使ってみます。
> Tomoさん > exeファイルのアイコンについて ミニテクニックコーナーにアイコンを設定する方法を載せていますので、よろしければご覧ください m(_ _)m <自作ソフトにオリジナルアイコンを付ける> https://dxlib.xsrv.jp/dxtec.html#M2 > 弾幕ゲームを作るうえでグローバル関数は一切使用しない方がよいのか? いえ、グローバル関数を使用しても良いと思います > 分割コンパイルで関数の宣言が書かれているヘッダーファイルはある程度統合した方がいいのでしょうか? いえ、基本的には関数の中身が書かれている cppファイルのファイル名の拡張子を h にしたヘッダーファイルに 関数の宣言を書くべきで、色々な cppファイルに書かれている関数の宣言を一つのヘッダーファイルに纏めて 記述するというのは普通はしません ( DXライブラリの DxLib.h には全部の関数の宣言を書いてしまっていますが、一般的ではありません ) > 現在「新・ゲームプログラミングの館」と「龍神録プログラミングの館」、「DXライブラリ置き場」を利用して勉強をしているのですが他に便利なサイトなどはあるでしょうか。 すみません、あるかもしれませんが私は知りません m(_ _;m
弾幕ゲームを作成してexeファイルから実行できるようにまではできたのですがexeファイルのアイコンを変更する方法が分からないです。 icoファイルの画像をexeファイルのアイコンにするにはどうすればよいでしょうか?(visual studio 2022 を使用しています。) また話がそれてしまうのですが。 弾幕ゲームを作るうえでグローバル関数は一切使用しない方がよいのか? 分割コンパイルで関数の宣言が書かれているヘッダーファイルはある程度統合した方がいいのでしょうか? 現在「新・ゲームプログラミングの館」と「龍神録プログラミングの館」、「DXライブラリ置き場」を利用して勉強をしているのですが他に便利なサイトなどはあるでしょうか。 質問内容がまとまらずすみません。
> 名無三さん もう Advent Calendar の時期なんですね 今年はいつにも増して一年が短かったように感じます (・・;
お疲れ様です。今年も僭越ながらAdventCalendarの方を立てさせていただきました。 皆さん奮ってご参加ください qiita.com/advent-calendar/2024/dxlib
高速化だけならばオプションでAVXかAVX2を有効にするだけで達成できるかもしれません(最適化の際に使ってくれる…らしい?) 要件が第2世代corei以降/4世代corei以降などになる点と元からSSE2を使っているらしい為最高でも4割増程度の向上のようですが、 (そもそも認識間違ってるかも知れないのでご了承を…)
> black labさん > DXライブラリで作成したプログラムをCUDAを用いて処理の高速化をしたいと考えているのですが,可能でしょうか. 少し調べてみた限りですが、CUDA を使用するには CUDA 用の言語でプログラムを記述する必要があるため、 既存の C++ のライブラリであるDXライブラリとの併用は恐らく不可能なのではないかと思います (・・;
お世話になっております. DXライブラリで作成したプログラムをCUDAを用いて処理の高速化をしたいと考えているのですが,可能でしょうか. もし可能であれば,環境構築の方法をお伺いしたいです. Visual Studio Community 2022を使用しています.
> ノンおっぱい星人さん すみません、ご返信が遅くなりました > 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' と書かれているのです
こちらのサイトでもご紹介されているゲーム開発で学ぶ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番目の文字が変更される気がするのですが。
> 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
- Aska BBS -