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

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

[5301] ご返信 投稿者:管理人 投稿日:2022/08/09(Tue) 01:01 [返信]
> draさん ご対応ありがとうございます 最新のパッケージで make -j4 の実行が成功しました!( 実行時は -j1 にしました( 仮想PCのコア数を1にしていたので ) ) 作成されたサンプルも全て正常に動作しました! (自分的に)未知のOSで動作しているところを見てちょっと感動しました… そして実行までできた感想としましては… ちょっと敷居が高いですね (^ ^; 使えないコマンドが現れてエラーが発生したらそのコマンドをインストール コンパイルで『png.h が無い』などのエラーが出たら、出力を見て libpng や libvorbis など必要なライブラリを自分で判断してインストール というのは Linuxユーザーとしては出来て当然のスキルなのでしょうか? 仮にそうだとしますとやはり Linux使いの方は Windows使いの方より平均レベルがかなり高いですね… (・・; ともあれ、当面の間は draさんに Linux版DXライブラリのご対応をしていただいた方が良さそう と思いました (^ ^; ( 今回の私の躓きに対する draさんのご対応のようなことが自分でできるように なるにはかなり Linuxに慣れないと難しそうですし… ) あと、不都合が無ければDXライブラリのダウンロードページに draさんの Linux版DXライブラリのページへの リンクを張らせて頂ければと思うのですが良いでしょうか? m(_ _)m

[5300] 5299へのご返信 投稿者:dra 投稿日:2022/08/08(Mon) 20:24 [返信]
おお、同じXubuntuでもバージョンで差があるみたいですね・・・ 再修正してみました、こちらでも試してみたので今度こそ大丈夫だと思います ちなみにご存知かもしれませんがmake -j4の4の部分は割り当てたCPUコア数に設定するのがおよそ最適です

[5299] ご返信 投稿者:管理人 投稿日:2022/08/08(Mon) 00:42 [返信]
> draさん ご対応ありがとうございます! 最新のパッケージでは make patch は無事成功したので make -j4 を実行してみました tiff.h が無い、ということで libtiff をインストール png.h が無い、ということで libpng をインストール という具合で進めて行ったのですが、『外部ライブラリが無い』というケースとは少し異なる以下のエラーが発生しました DxLibMake/Linux/DxWindowLinux.cpp: In function ‘int DxLib::SetMainWindowText(const char*)’: DxLibMake/Linux/DxWindowLinux.cpp:22:5: error: ‘Xutf8SetWMProperties’ was not declared in this scope 22 | Xutf8SetWMProperties(d, w, WindowText, NULL, NULL, 0, NULL, NULL, NULL); | ^~~~~~~~~~~~~~~~~~~~ Xutf8SetWMProperties はウィンドウ関連のAPIのようですが、原因について分かりますでしょうか? m(_ _)m

[5298] 5297へのご返信 投稿者:dra 投稿日:2022/08/07(Sun) 14:43 [返信]
> rename.ul の代わりに rename を使うのはNGだったということでしょうか? はい、ともに互換性はないです、が、、、 おおう、rename.ul、Xubuntu 20.04ではデフォルトで入ってるものだったのですが 22.04を見た所なくなってますね・・・まじか。。。 ちょっと修正したので最新のを落としてください renameとついでにnkfを使わないよう(代わりにiconvを使うよう)に修正しました make patchが通った後も〜.hがなくてコンパイルが通らないといわれるとおもいますので 適宜対応するパッケージを見つけて入れてください 多分大丈夫ですがパッケージが見つからないようならコメントください

[5297] ご返信 投稿者:管理人 投稿日:2022/08/07(Sun) 05:00 [返信]
> draさん ご返答ありがとうございます 仕事のサーバーに CentOS が使われていたのでなんとなく CentOS をインストールしてみましたが、 やはりホビー向けではないのですね (^ ^; ( CentOS が 8 で開発終了してしまうというニュースも… ) draさんがお使いの環境と同じ方が安心ということで、今度は Xubuntu をインストールした仮想環境を作成してみました 確かに CentOS 7 よりユーザーフレンドリーな印象でした( Virtual Box ソフトをインストールしなくてもマウスが問題なく キャプチャーされたりと、Virtual Box も CentOS より ubuntu の方に対応に力を入れている様子… ) スムーズにインストールが終わったので、早速 dxlib-for-linux をダウンロードして make patch を実行してみたのですが 『make が無い』というエラーが発生したので make をインストール 『nkf が無い』というエラーが発生したので nkf をインストール 『rename.ul が無い』というエラーが発生したので rename をインストールして MakeFile の RENAME := を rename.ul から rename に変更したところ # ファイル名をAndroid->Linux rename Android Linux DxLibMake/Linux/* ↑ こちらのコマンドの実行で Bareword "Android" not allowed while "strict subs" in use at line 1, in: Android make: *** [Makefile:141: patch] エラー 255 という出力がされ、止まってしまいました > たしかにコードレベルでは互換性があっても周りのコマンドが非互換だったりするので > Makefile内で変数化しているところを対応するコマンドに置き換える必要があります > 厄介なのが、Linuxのディストリビューションによって「rename」というコマンドが複数種類あったりするので > 対応するものを指定しないといけないとかあるんですね rename は複数あるとのことですので、rename.ul の代わりに rename を使うのはNGだったということでしょうか? 因みに『lsb_release -a』を実行した際の出力は以下の通りでした No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy すみません、インストールについては isoによるインストールのほうが慣れていたので、こちらから isoをダウンロードしてインストールしました m(_ _;m https://xubuntu.org/ ( ダウンロードしたファイル名は xubuntu-22.04-desktop-amd64.iso でした )

[5296] 5294と5295へのご返信 投稿者:dra 投稿日:2022/08/06(Sat) 16:49 [返信]
> 企業で Linux を使用する場合は大抵画面出力は行なわず、Tera Term などの端末ソフトを介して > コマンドで操作するだけという認識なのですが、仮に私が DXライブラリ Linux版 の管理を行おうと > 思った場合、ホビー向けのLinux環境としてはどのようなものが良いか等、お勧めのものはありますでしょうか? (・・; 準備が簡単な点でUbuntuかその派生(Xubuntuを含む)あたりが無難かと思います LinuxはWindowsと違って見た目とかが自由に選べるのですが これは逆に言うと自分で選ばないといけないので 気に入ったものを利用してもらうのが良いかと思います Ubuntu系はフレーバーという単位でそれぞれインストールメディア用意してます 「ubuntu desktop flavours」とかで調べてみてください ISOからインストールせずにGUIの動作を試せ、 気に入ればそのままインストールできます (Ubuntu、Xubuntu以外は使ったこと無いのでできなかったらすいません) > まず、そもそも Linux 版動作確認のために専用に PC を用意すべきなのか、それとも Virtual Box 的な > 仮想環境ソフトを使用して、仮想環境上に Linux環境を構築するのがスタンダードなのか等、全く知識が無く… (_ _;; 今どきのPCでしたら仮想マシンVirtualBoxないしHyper-V等で動かすのが楽かと思いますが 懸念としてはGPUが上手く効いてくれるかはちょっと試してみないとわからないですね・・・ --- ・・・と、いう返答を書きつつありましたがもうCentOS7で試されたようですね たしかにコードレベルでは互換性があっても周りのコマンドが非互換だったりするので Makefile内で変数化しているところを対応するコマンドに置き換える必要があります 厄介なのが、Linuxのディストリビューションによって「rename」というコマンドが複数種類あったりするので 対応するものを指定しないといけないとかあるんですね あとCentOS系は標準で提供されるパッケージがUbuntuと比べると相対的に少ないので ホビーで使うにはちょっと不便かもしれません(nkfもなかった)

[5295] ご返信 投稿者:管理人 投稿日:2022/08/04(Thu) 01:41 [返信]
> draさん とりあえず Virtual Box で CentOS7 をインストールして draさん作の Linux版DXライブラリを ダウンロードして解凍して make patch を実行してみたのですが rename.ul というコマンドが無い というエラーが発生しました rename.ul は ubuntu用コマンドなので CentOS ではエラーになったようです (^ ^; ( 初 Linux でいきなり動作確認環境外の CentOS で試すのは無謀だったかもしれません… )

[5294] ご返信 投稿者:管理人 投稿日:2022/07/31(Sun) 03:28 [返信]
> draさん 大変詳しいご解説ありがとうございます! カーネルとユーザーの関係やディストリビューションについて理解できた気がします m(_ _)m ( 各ディストリビューション間でソースコードがそのまま使えるか等についても… ) すみません、何度も申し訳ないのですが追加でご質問させてください m(_ _;m 企業で Linux を使用する場合は大抵画面出力は行なわず、Tera Term などの端末ソフトを介して コマンドで操作するだけという認識なのですが、仮に私が DXライブラリ Linux版 の管理を行おうと 思った場合、ホビー向けのLinux環境としてはどのようなものが良いか等、お勧めのものはありますでしょうか? (・・; まず、そもそも Linux 版動作確認のために専用に PC を用意すべきなのか、それとも Virtual Box 的な 仮想環境ソフトを使用して、仮想環境上に Linux環境を構築するのがスタンダードなのか等、全く知識が無く… (_ _;;

[5293] 5292へのご返信 投稿者:dra 投稿日:2022/07/30(Sat) 17:04 [返信]
おつかれさまです > draさんが行った移植先は『Xubuntu』と認識していますが、仮に『CentOS』で > 動かそうとしたら『Xubuntu』用の移植とは別に『CentOS』用の移植作業を > 行なわなければいけないのでしょうか? (・・; おそらくLinuxをサポートするとしたら 何をしないといけないかを考えてくださっていると思いますのでその目線で回答します 要約するとソースコードだけを公開する場合は基本的にいいえ、 バイナリ(.aとか.soとか)は公開自体をおすすめしないが、 する場合はおそらくはい、がんばるといいえにできるかもしれない、になります --- > Linux について殆ど知識が無いのですが、『Linux』というOSは無く、『ubuntu』 > 『CentOS』『Red Hat Linux』など色々な『Linux系OS』があると認識しています 「Linux」と厳密に言った場合、「Linuxカーネル」単品を指し、 「Linux系OS」と大雑把に言った場合、「Linuxカーネル」を採用し、 その上にユーザーランドライブラリやアプリケーション(以下ユーザー)を揃えた 一式(用語としては「Linuxディストリビューション」)を言います ここでいうユーザーは人間の使用者という概念ではないです カーネルがハードウェアを直接制御し、ユーザーはカーネルを介することで キーボードの入力から画面の表示まであらゆる処理が行えます ``` [ ユーザー ](アプリケーション;Windowsのメモ帳やDXライブラリで作ったゲームなど)  ↑↓  ↑↓制御  ↑↓[ユーザー](システムのライブラリ;DirectXとか、GLESとか  ↑↓  ↑↓制御 ライブラリの上にライブラリが重なることもある、DXライブラリもそう) [ カーネル ](デバイスドライバとか、「Linux」はここ単品)    ↑↓制御 [ハードウェア](キーボードとか画面とか) ``` Windowsにも厳密にはカーネルとユーザーの境界がありますが、 基本的には隠蔽されています 要はWindowsはカーネル+ユーザーひとまとめの製品、 Linuxはカーネルのみ、 Linuxディストリビューションはカーネルにユーザーをまとめた製品(無償だったり有償だったり)になります > ( 広義には AndroidOS や macOS も Linux系OS…? ) Androidははい(Linuxカーネルを採用)、macOSはいいえ、です なので普通は言わないですが、AndroidをLinuxディストリビューションと解釈できなくもないです > draさんが行った移植先は『Xubuntu』と認識していますが、仮に『CentOS』で > 動かそうとしたら『Xubuntu』用の移植とは別に『CentOS』用の移植作業を > 行なわなければいけないのでしょうか? (・・; ここからが本題ですが、ソースコードは互換性があるように書いているので 基本的には各ディストリビューションごとに書き換える必要はありません、が、 すべてのLinuxディストリビューションで絶対に使えるわけでもありません 例としてはウィンドウを管理する機構(WindowsでいうCreateWindowEx関数の機能を提供する箇所)があり、 現状のLinux界隈ではX11からWaylandに移行しつつある段階でまだX11側の機能しか搭載していません。 純粋なWayland(速度低下と引き換えに互換させる機構はある)だけ動く環境では動作しません とはいえ、X11のライブラリを持っていないディストリビューションはほとんどないので 基本的にはそのまま使えるはずです。 Androidはそのどちらでもない、互換性もないウィンドウ管理機構を持っているので、使えません (でも例えばGLESは互換性があるのでその部分は使えます、すばらしい) そしてバイナリを公開するかについてですが、基本的にはおすすめしません。 というのも、Linuxではアプリケーションやライブラリの多くがソースコードを公開していて、 ソースからバイナリの生成は使用者自身やディストリビューション作成者が行う文化になっているためです 最終成果物であるアプリケーションであればバイナリを公開しているところもよくありますが ライブラリであればソースを公開したくない商用のものを除けばあまりないと思います たとえばzlibもホームページにおいてあるのはソースコードだけで Linux用バイナリ(パッケージ)やWindows用のDLLとかは第三者がコンパイルしたものを紹介するだけにとどめています 私の作った物も、バイナリは公開しておらず、今後もその予定はありません それでもあえて(あるいは動作を確かめるために)バイナリの形にした場合、 ディストリビューション間や、同じでも新旧で互換性がなくなったりします ファイルの置き場のお作法が違うとか新しい環境でコンパイルすると古い環境で動かない(逆がだめなことも)とかですね (個人的な興味でよく首を突っ込んでいますが)だいぶ沼なのでおすすめしません

[5292] ご返信 投稿者:管理人 投稿日:2022/07/24(Sun) 07:18 [返信]
> draさん > Androidのコードがそのままっぽいので定義がなくてコンパイル通らないと思います ご指摘ありがとうございます aファイルの更新日時が更新されていたのでてっきりコンパイルが通っていると勘違いしていました orz 近日中に修正したバージョンをアップしようと思います > サウンド足すときにメモリの処理を落としてるっぽいです こちらもご指摘ありがとうございます 今のところ iOS では MemoryProcess 内で大したことはしていない( 確保メモリに設定する タイムカウントの値を更新しているくらい )ので幸い問題はありませんでした > あと直接関係ないですが、更新履歴ページの3.22a→3.23aかと思います ご指摘ありがとうございます、修正しました m(_ _;m > もし必要になれば、取り込んでいただいて大丈夫です > 私もマイペースに、気が向いたときにでも機能を入れていくと思います ありがとうございます ちょっとご質問させていただいて良いでしょうか…? Linux について殆ど知識が無いのですが、『Linux』というOSは無く、『ubuntu』 『CentOS』『Red Hat Linux』など色々な『Linux系OS』があると認識しています ( 広義には AndroidOS や macOS も Linux系OS…? ) draさんが行った移植先は『Xubuntu』と認識していますが、仮に『CentOS』で 動かそうとしたら『Xubuntu』用の移植とは別に『CentOS』用の移植作業を 行なわなければいけないのでしょうか? (・・;

[5291] 3.23bアップおつかれさまです 投稿者:dra 投稿日:2022/07/23(Sat) 14:08 [返信]
アップデートおつかれさまです 3.23bについて、例によってiOS環境を持っていないので確認できないのですが、 何箇所か気になる点があったのでご連絡します DxGraphicsiOS.cpp Graphics_Hardware_DrawBoxSet_PF()内 + if( ANDR_CHECKVALID_HARDWARE == FALSE ) ... + // 描画の準備 + Flag = DX_ANDROID_DRAWPREP_DIFFUSERGB ; + DX_ANDROID_DRAWPREP_NOTEX( Flag ) Androidのコードがそのままっぽいので定義がなくてコンパイル通らないと思います DxSystemiOS.cpp NS_ProcessMessage()内 - // メモリ関係の周期的処理を行う - MemoryProcess() ; +#ifndef DX_NON_SOUND + // サウンド関係の周期的処理を行う + ProcessSoundSystem() ; +#endif // DX_NON_SOUND サウンド足すときにメモリの処理を落としてるっぽいです 他の環境だとコード消えてないのでミスかと思います(意図的なら良いです) あと直接関係ないですが、更新履歴ページの3.22a→3.23aかと思います > 今の所DXライブラリ Linux版を私の方でリリースする予定は無いのですが、もし将来 Linux版を > リリースすることになった際には参考にさせていただきます m(_ _;m ( 参考どころかそのまま > コードを使用させていただく部分が殆どになるかもしれませんが… ) もし必要になれば、取り込んでいただいて大丈夫です 私もマイペースに、気が向いたときにでも機能を入れていくと思います

[5290] Re:[5289] ご返信 投稿者:xLoad 投稿日:2022/07/07(Thu) 16:00 [返信]
>> 管理人さん お返事遅れまして申し訳ありません。 書式の指定の仕方の読み違いだったとは・・・・ お手数をおかけしました。想定通りになりました。 ありがとうございました。

[5289] ご返信 投稿者:管理人 投稿日:2022/06/29(Wed) 23:48 [返信]
> xLoadさん > 「%4.3f」のようにすると小数点以下は桁が整いますが整数部が整わないのは仕様ですか? こちら、元の書式指定の仕様( C言語の標準関数の仕様 )が悪いのですが、 %4.3f と書くと直感的には『整数部を4桁に揃え、小数部を3桁まで表示する』となるように思えますが 実際は『小数部を3桁まで表示する、数値文字列全体で小数点を含めて4文字で右揃えする( 4文字以上になったら通常通り左揃え )』となります つまり % のすぐ後に来る値は『整数部の文字数』ではなく『数値文字列全体の文字数』で指定する必要があります なので『整数部4桁、小数部3桁で右揃え』にしたい場合は %8.3f となります ( DXライブラリの実装が心配になったので C言語標準関数の printf でも試してみましたが同じ挙動をしました ) よろしければお試しください m(_ _)m

[5288] DrawFormatStringについて 投稿者:xLoad 投稿日:2022/06/29(Wed) 21:21 [返信]
DrawFormatStringを使用して文字を描画する際に「%d」では「%4d」のようにして桁指定が できるようですが、「%f」の場合は「%.5f」のように小数点以下の桁数は指定できるようですが 「%4.3f」のようにすると小数点以下は桁が整いますが整数部が整わないのは仕様ですか? ざっくりとした説明でわかりにくかったらすみません。

[5287] DXライブラリ 3.23b をアップしました 投稿者:管理人 投稿日:2022/06/25(Sat) 23:19 [返信]
今回もバグ修正がメインです ( 機能追加などもありますが、あまり大きな項目はありません ) 今回の変更の、こちらのバグ修正項目について ・GetDrawStringSizeToHandle が引数 StrLen で指定した半角文字数より多くの文字の描画幅が取得できてしまっていたバグを修正。 ある意味仕様変更のようになってしまっている( 実質『文字数指定』から『バイト数指定』への変更 )ので、 もし文字数を指定して使用されていることがありましたらご注意ください m(_ _;m ( -1 を指定している場合は問題ありません ) その他の更新に着いてはこちらをご参照ください m(_ _)m <DXライブラリ更新履歴> https://dxlib.xsrv.jp/dxlog.html

[5286] ご返信 投稿者:管理人 投稿日:2022/05/28(Sat) 02:30 [返信]
> chairoさん > 雑談ですが、swordboutのサンプルコードはもしかしてC++ではなくC言語の知識のみで扱えるようにコーディングされているのでしょうか? はい、殆どC言語の記述で済んだので、一部分だけクラスを使用してC++の知識が無いと理解できない書籍になるのは嫌だな、と思い C言語のルールのみでコーディングしました > また、C++で実装されている機能を使えばそれらのサンプルコードはもっと簡潔、且つ編集がもっと簡単に出来るものなのでしょうか? > (ゲームプログラミングC++などを読んでの所感となります、雑談ですので返信はいつでも大丈夫です) そんなに劇的には変わらないと思いますが、一部の記述は簡潔になると思います (・・

[5285] Re:[5284] swordboutについての雑談 投稿者:chairo 投稿日:2022/05/27(Fri) 14:59 [返信]
> (敵やプレイヤーの部分がクラスではなく構造体、各キャラクラスに継承の部分を使ったと思わしき部分が見受けられなかったため質問させていただきました) 各キャラクラス、ではなく各キャラの構造体にクラスの継承のような機能を使わずtypedefで疑似的に継承のようなことをしていると感じた、ですね...失礼しました (勉強中の初心者ですので間違っていたらすみません)

[5284] swordboutについての雑談 投稿者:chairo 投稿日:2022/05/27(Fri) 14:51 [返信]
管理人様お疲れ様です。 雑談ですが、swordboutのサンプルコードはもしかしてC++ではなくC言語の知識のみで扱えるようにコーディングされているのでしょうか? (敵やプレイヤーの部分がクラスではなく構造体、各キャラクラスに継承の部分を使ったと思わしき部分が見受けられなかったため質問させていただきました) また、C++で実装されている機能を使えばそれらのサンプルコードはもっと簡潔、且つ編集がもっと簡単に出来るものなのでしょうか? (ゲームプログラミングC++などを読んでの所感となります、雑談ですので返信はいつでも大丈夫です)

[5283] ご返信 投稿者:管理人 投稿日:2022/05/06(Fri) 02:01 [返信]
> jirouさん 無事コンパイルできたようで何よりです 削除キーを使用しての記事の削除は、掲示板の一番右下にある入力欄に 記事Noと、その記事を投稿する際に設定した削除キーを入力して『記事削除』ボタンを 押すと記事を削除できます( 投稿の際に削除キーを設定していなかった場合は削除できません )

[5282] Re [5280] ご返信 投稿者:jirou 投稿日:2022/05/05(Thu) 03:43 [返信]
管理人様 恥ずかしい話ですが、再起動すれば正常になりました。 原因はわからないままですが、快適に動作しております。 これで、カメラ画像とDXライブラリを組み合わせて、新しいゲームが作れそうです。 長時間、丁寧、かつ敏速に対応していただいて、本当に有難うございました。 これからもよろしくお願いいたします。 (削除キーの使い方がわからなかったので、前記事を削除できませんでした) jirou

[5281] Re:[5280] ご返信 投稿者:jirou 投稿日:2022/05/04(Wed) 22:21 [返信]
管理人様 対応していただいて、本当に有難うございます。 早速、実行しようとしたのですが、 error c2039:'CAP_PROP_FRAME_WITH':'cvのメンバーでありません' error c2039:'CAP_PROP_FRAME_HEIGT':'cvのメンバーでありません' とエラーが出て、ビルドが出来ないでいます。 色々と試行錯誤しましたが、解決の目途が立たないため、 恥ずかしながら、管理人さんにアドバイスをいただきたく思います。 未熟さを実感したjirou

[5280] ご返信 投稿者:管理人 投稿日:2022/05/04(Wed) 09:26 [返信]
> jirouさん > HD解像度(1920X1080)のカメラを使用したいと思っています。 > 入力解像度を設定できるようにできないでしょうか? 了解です カメラからのキャプチャ解像度と、ウィンドウの表示解像度を1920x1080に設定するようにプログラムを変更してみました ( あと、DrawPixel で1ピクセルづつ描画するのは処理速度的に遅いので、ソフトイメージを介して グラフィックハンドルに画像データを転送してから描画するようにしてみました ) #include "DxLib.h" #include <string.h> #define SCREEN_W 1920 #define SCREEN_H 1080 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { cv::VideoCapture video; cv::Mat image ; int SoftImage = -1 ; int GraphHandle = -1 ; int ImageW = -1, ImageH = -1 ; int i, j ; BYTE *Src, *DestBase, *Dest ; int DestPitch ; // カメラをオープン video.open( 0 ) ; // カメラオープンに失敗したら何もせず終了 if( video.isOpened() == false ) { // カメラが起動しないときは終了する return 0; } // キャプチャ解像度を設定 video.set( cv::CAP_PROP_FRAME_WIDTH, SCREEN_W ) ; video.set( cv::CAP_PROP_FRAME_HEIGHT, SCREEN_H ) ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // 画面サイズを 1920x1080 に設定 SetGraphMode( SCREEN_W, SCREEN_H, 32 ) ; // デスクトップのDPI設定に関係なく等倍表示するように設定 SetWindowSizeExtendRate( 1.0 ) ; // DXライブラリ初期化処理 if( DxLib_Init() == -1 ) return -1; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // フレームを取得 video >> image ; // フレームの取得に失敗したら何もせずに終了 if( image.empty() ) continue ; // サイズに変更があったか、又はまだソフトイメージやグラフィックハンドルを作成していなかった場合は再作成 if( image.cols != ImageW || image.rows != ImageH || SoftImage < 0 || GraphHandle < 0 ) { // ソフトイメージやグラフィックハンドルが既に作成済みの場合は削除 if( SoftImage >= 0 ) { DeleteSoftImage( SoftImage ) ; } if( GraphHandle >= 0 ) { DeleteGraph( GraphHandle ) ; } // サイズの保存 ImageW = image.cols ; ImageH = image.rows ; // ソフトイメージとグラフィックハンドルを作成 SoftImage = MakeRGB8ColorSoftImage( ImageW, ImageH ) ; GraphHandle = MakeGraph( ImageW, ImageH ) ; } // ソフトイメージとグラフィックハンドルが作成できていたら処理を進める if( SoftImage >= 0 && GraphHandle >= 0 ) { // フレームの内容をソフトイメージに転送 DestBase = ( BYTE * )GetImageAddressSoftImage( SoftImage ) ; DestPitch = GetPitchSoftImage( SoftImage ) ; for( i = 0 ; i < image.rows; i++ ) { Src = &image.data[ image.step1() * i ] ; Dest = DestBase + DestPitch * i + DestPitch - 3 ; for( j = 0 ; j < image.cols ; j++ ) { Dest[ 0 ] = Src[ 0 ] ; Dest[ 1 ] = Src[ 1 ] ; Dest[ 2 ] = Src[ 2 ] ; Dest -= 3 ; Src += 3 ; } } // ソフトイメージの内容をグラフィックハンドルに転送 ReCreateGraphFromSoftImage( SoftImage, GraphHandle ) ; // 画面に画像を描画 SetDrawMode( DX_DRAWMODE_BILINEAR ) ; DrawExtendGraph( 0, 0, SCREEN_W, SCREEN_H, GraphHandle, FALSE ) ; } // 裏画面の内容を表画面に反映 ScreenFlip() ; } // ソフトイメージの削除 if( SoftImage >= 0 ) { DeleteSoftImage( SoftImage ) ; } // 画像の削除 if( GraphHandle >= 0 ) { DeleteGraph( GraphHandle ) ; } // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }

[5279] Re:[5278] ご返信 投稿者:jirou 投稿日:2022/05/03(Tue) 08:50 [返信]
管理人様 すみません。 その後、管理人さんのプログラムを異なるカメラで試したところ、 表示画像が640X480に固定されていることがわかりました。 HD解像度(1920X1080)のカメラを使用したいと思っています。 入力解像度を設定できるようにできないでしょうか? お手間を取らせますが、よろしくお願いいたします。 jirou

[5278] Re:[5277] ご返信 投稿者:jirou 投稿日:2022/05/03(Tue) 03:56 [返信]
管理人様 いつもながらの、敏速な対応をしていただき有難うございます。 正常に表示できました。 これからもよろしくお願いいたします。 jirou

[5277] ご返信 投稿者:管理人 投稿日:2022/05/03(Tue) 01:54 [返信]
> jirouさん 私も手元で試してみたのですが、cvCreateCameraCapture を使用する方法は古いのか、 cvCreateCameraCapture の戻り値が NULL となっていて、カメラの初期化に失敗していました cv::VideoCapture を使用する新しい方式( 新しいと言っても何年も前からある機能のようです )を 使用した所、正常にカメラの映像を取得することが出来ました よろしければその際のテストプログラムをお試しになってみてください m(_ _)m #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { cv::VideoCapture video; cv::Mat image ; int i, j ; unsigned char *p ; // カメラをオープン video.open( 0 ); // カメラのオープンに失敗したら何もせず終了 if( video.isOpened() == false ) { // カメラが起動しないときは終了する return 0; } // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリ初期化処理 if( DxLib_Init() == -1 ) return -1; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // フレームを取得 video >> image ; // フレームの取得に失敗したら何もせずに再ループ if( image.empty() ) continue ; // フレームの内容を画面に描画 for( i = 0 ; i < image.rows; i ++ ) { p = &image.data[ image.step1() * i ] ; for( j = 0 ; j < image.cols ; j ++, p += 3 ) { DrawPixel( j, i, GetColor( p[ 2 ], p[ 1 ], p[ 0 ] ) ) ; } } // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }

[5276] Webカメラの画像 投稿者:jirou 投稿日:2022/05/01(Sun) 19:17 [返信]
いつも大変お世話になっています。 この度、Webカメラから画像を読み込みたいと思っています。 過去ログから、同様の質問(たろさん(2009/05/15))に対する回答として、 管理人さんのサンプルプログラムがありましたので、 そのまま実行したところ、フレーム枠は表示されるのですが、DrawPixelの行で、 「読み取り中にアクセス違反が発生しました」、「表示できない文字を含んでいます」 というエラーがでます。 画像を表示するには、どうしたらよいでしょうか? DXライブラリは Ver 3.23 、OpenCVは3.0を使用しています。 <管理人さんのサンプルプログラム> #include <cv.h> #include <highgui.h> #include <ctype.h> #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { CvCapture *capture ; IplImage *image ; int i, j ; unsigned char *p ; ChangeWindowMode( TRUE ) ; // ウインドウモードで起動 if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面にする capture = cvCreateCameraCapture( 0 ) ; // カメラからのビデオキャプチャを初期化する // メインループ while( ProcessMessage() == 0 ) { image = cvQueryFrame( capture ) ;// フレームを取得 // フレームの内容を画面に描画 for( i = 0 ; i < image->height; i ++ ) { p = ( unsigned char * )( image->imageData + image->widthStep * i ) ; for( j = 0 ; j < image->width ; j ++, p += 3 ) { DrawPixel( j, i, GetColor( p[ 2 ], p[ 1 ], p[ 0 ] ) ) ; } } ScreenFlip() ; // 裏画面の内容を表画面に反映 } cvReleaseCapture( &capture ) ; // ビデオキャプチャの後始末 DxLib_End() ; return 0 ; }

[5275] ご返信 投稿者:管理人 投稿日:2022/04/17(Sun) 16:56 [返信]
> chairoさん > 後日メールで詳細の方をお送りさせていただきたいのですが、ゲームコンテストなどの大会にswordboutのタスクシステム(タスクリスト)とinput システム、バイナリ読み込みシステム、ステージエディタのソースコードを参考・引用したゲームを制作させていただきいたのですが、 > Swordboutのソースコードのライセンスは法人が運営するコンテスト、大会などの引用・使用においても制限されないものとされるのでしょうか? はい、制限はありません > また、コンテスト・ゲームジャムなどの提出時にライセンス表記・管理人様のお名前明記が必要などありましたら是非教えて頂きたいです。 > 宜しくお願い致します。 ライセンス表記についてはこちらをご参照ください m(_ _)m <ライセンスについて> https://dxlib.xsrv.jp/dxlicense.html ↑ こちらには記載がありませんが、 Sword Bout については、DXライブラリと同じく絶対必要というわけではありませんが もし表記していただける際はこちらを記載してください m(_ _)m Copyright(C) 2014 Sword Bout production team > 書籍の要素を理解した先の段階として、Dxlibでシネマティックアクションゲーム(メタルギアソリッドシリーズみたいな)を作るには、C++の高等知識+AI技術の勉強+アルゴリズム設計能力+数学知識+モデル・モーション制作能力の他に何が必要だと思いますか? うーん列挙する形で何が必要か、となるとちょっと漠然としていてお答えし難いですが、 サウンドを自作するのでしたらサウンド作成の能力、素材集などを使用するということでしたら素材選定能力でしょうか… あとゲーム用のツールが無いと開発効率が非常に悪くなりますので、ツール作成能力も必要です あとはゲーム設計能力が一番重要かと思います 技術があっても面白いと思えるゲーム内容を考えられなくて、習作的なものを作って頓挫、というのは非常によくあることですので… ( 逆にゲーム設計能力がある方はあまり技術が無くてもなんとかゲームを形にしてしまったりします )

[5274] 無題 投稿者:chairo 投稿日:2022/04/16(Sat) 19:09 [返信]
雑談ですが、C++を理解してC#を理解するよりC++の理解の方が早いと感じ、既存のC++ゲーム制作書籍でメタルギアソリッドのような経路探索を使用したゲームを制作しています。 基本このような3Dアクションゲーム+AI+経路探索のソースコードは公開されていないので、オライリーのゲームAIやゲーム数学の書籍を買い漁って勉強してますが、 書籍の要素を理解した先の段階として、Dxlibでシネマティックアクションゲーム(メタルギアソリッドシリーズみたいな)を作るには、C++の高等知識+AI技術の勉強+アルゴリズム設計能力+数学知識+モデル・モーション制作能力の他に何が必要だと思いますか? あと、昔管理人様にはTPSカメラの製作を質問して、その果てに自分のゲームのバグの直し方が分からなくてかなり無茶苦茶な質問をした事を今になって恥じています… あの時はお世話になりました&すみませんでした….

[5273] Re:[5272] 無題 投稿者:chairo 投稿日:2022/04/16(Sat) 18:59 [返信]
> 管理人様、お世話になります。 > 後日メールで詳細の方をお送りさせていただきたいのですが、ゲームコンテストなどの大会にswordboutのタスクシステム(タスクリスト)とinput システム、バイナリ読み込みシステム、ステージエディタのソースコードを参考・引用したゲームを制作させていただきいたのですが、 > Swordboutのソースコードのライセンスは法人が運営するコンテスト、大会などの引用・使用においても制限されないものとされるのでしょうか? > お忙しい中恐縮ですが、ご確認をお願いしたいです。 また、コンテスト・ゲームジャムなどの提出時にライセンス表記・管理人様のお名前明記が必要などありましたら是非教えて頂きたいです。 宜しくお願い致します。

[5272] 無題 投稿者:chairo 投稿日:2022/04/16(Sat) 18:51 [返信]
管理人様、お世話になります。 後日メールで詳細の方をお送りさせていただきたいのですが、ゲームコンテストなどの大会にswordboutのタスクシステム(タスクリスト)とinput システム、バイナリ読み込みシステム、ステージエディタのソースコードを参考・引用したゲームを制作させていただきいたのですが、 Swordboutのソースコードのライセンスは法人が運営するコンテスト、大会などの引用・使用においても制限されないものとされるのでしょうか? お忙しい中恐縮ですが、ご確認をお願いしたいです。

記事No 削除キー

- Aska BBS -