HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
1027
youdai複数の環境で3Dエンジンが動作しない原因が特定できず、困っています。どのような可能性があるでしょうか?8解決


youdai

リンク

2024/10/27(Sun) 13:35:25|NO.102477

HSPで開発した3Dエンジンに動作報告を頂いたのですが、起動しないという報告があり、動作しない原因が分からないため、対応方法が分からず困っています。

Sakuranbo3D
https://dev.onionsoft.net/seed/info.ax?id=2506

<開発した3DエンジンのSakuranbo3Dの主な仕様>
・hsp3_64使用
・vAudio64使用
・hspint64使用
・OpenGL 1.1と1.5の命令を使用
・計算ライブラリに独自DLLを使用(Windows 10 64bit版以降でのみ動作可能。UTF-8仕様。コンパイラはming_w64)

<Sakuranbo3Dの動作環境>
Windows 10 pro 64bit
intel Core i7 860S 2.53 GHz 以上
メモリ 8GB
GeForce GT740 2GB以上
OpenGL 1.1と1.5対応

<ユーザーのさんの環境(動作環境は満たしていそうなものの、動作しないという報告があったもの)>
Windows 10 Home 22H2 (64Bit)
Intel Core i7 6700
メモリ 16GB
GeForce GTX 1050ti
OpenGL 4.5対応

<その他のユーザーさんの環境(動作環境は満たしていそうなものの、動作しないという報告があったもの)>
プロセッサ Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz 2.90 GHz
実装 RAM 16.0 GB (15.9 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション Windows 10 Home
バージョン 22H2
GTX760

<youdaiの開発環境>
Windows 10 pro 64bit
intel Core i7 860S 2.53 GHz
メモリ 8GB
GeForce GT740 2GB
OpenGL 4.4対応

コンテストの関係上、スクリプトを貼るわけにはいかないのでこの程度の概略でしか書けないのが申し訳ないです。
上記の自分の環境の場合、動作する3Dエンジンです。

上記のユーザーさんたちの環境の場合、どういう原因で動作しない可能性が考えられうるでしょうか?
上記のユーザーさんたちのスペックの場合、動作していてもおかしくない環境なため、はっきりとした原因が分かりません。
あえていうなら、GT740とGTX1050tiがリリースされた年に開きがあるくらいですが、OpenGLの対応バージョンについてはそれほど開きはないようです。
性能差についてはGTX1050tiがGT740と比較して圧倒的に高く、動作環境が性能未満ということも考えにくいです。

またその他のユーザーさんの報告でも、動作しそうな環境でもやはり同様に動作しないという報告がありました。

自分の環境で確認したエラーについては、音声再生が他のアプリケーションと競合した場合落ちるくらいで、それ以外の不具合が確認できませんでした。



この記事に返信する


正造

リンク

2024/10/27(Sun) 14:30:33|NO.102478

Ryzen7 2700X、RTX2060、Win10環境でもdemo.exeは数秒暗転の後にクラッシュしました。
イベントを見てみましたがイベントタイプはBEX64、例外コードはc0000005になっています。
基本的にこのエラーはメモリアクセス違反のようなのでそこら辺を洗ってみてはいかがでしょうか。

参考にデータ実行防止(DEP)は「重要なWindowsのプログラムおよびサービスのみついてのみ有効」でした



youdai

リンク

2024/10/27(Sun) 14:47:16|NO.102479

何かの問題解決のヒントになるかもしれないのでSakuranbo3Dの特徴を追記します。

Sakuranbo3Dのその他の特徴としてはOpenGLの固定機能時代の機能で構成されていることです。
それら固定機能時代の機能はOpenGL3.0の時代に廃止されたものなのですが、自分の環境であるGT740ではその多くの機能がまだ使用可能のようです。
GTで動作して、報告にあった高級機種のGTXで動作しないというのも不思議な感じがします。

Sakuranbo3Dで使用しているOpenGL系命令は以下のようになっています。

OpenGL1.1
・固定機能を使用

OpenGL1.5
・VBO関連の機能を使用(これらの機能はコアプロファイルには入っているのを確認済み)

Windowsは2000SP3以降OpenGL1.1だけは標準で動作するはずになっているから問題ないとして、もし問題があるとしたらOpenGL1.5の部分なのでしょうか?
ただ、使用している1.5系命令はコアプロファイル入りをしているのを確認しています。
これらの1.5系はもしかしたら固定機能と連動した場合、動作しない環境があるのかもしれない(でも、この1.5系命令も元々は固定機能だった機能)という予想をしているのですが、これに関係する資料がないためよく分かりません。

もしその場合、固定機能の代替命令は特にないだろうということになるので、今の時分の技術力ではどうしようもない感じなのが残念です。

>正造 さん

アドバイスありがとうございます。
メモリ関連のエラーということは、もしかしたら自分でコンパイルした計算DLLの方の問題なのかもしれません。



正造

リンク

2024/10/27(Sun) 15:16:58|NO.102481

GT710にグラボを入れ替えてみましたが同じエラーログで起動しませんでした。
GT740と同じKepler世代ですが何違うのでしょうか…



正造

リンク

2024/10/27(Sun) 15:38:59|NO.102482

連投すみません。

GeForceにはゲーム向けのDirctXを重視したGameReadyドライバとOpenGLを重視したStudioドライバの2種類がありますが、RTX2060とStudioドライバの組み合わせでもだめでした。
GT710は古すぎるためかGameReadyしかなくこちらは先ほど書いた通りNGでした。

ドライバをアンイストールしてMicrosoftの汎用VGAドライバが当たると「glgenbuffers」についてHSPのdialogで出していると思われるエラーが出たあとに終了します。
ドライバで挙動が変わるのでやはりOpenGLの特定の機能を利用すると落ちているのかもしれません。

コンテスト作品なのでソースは出せないとのことですが、ログ出力機能を付けたDebug版のようなものを公開してみてはいかがでしょうか。
非常に古典的ですが何行目に落ちているかわかるだけでもデバッグは進むと思いますので、コード1行ごとにnotesaveなどで情報を出すだけでも変わるかと思います。



GENKI

リンク

2024/10/28(Mon) 00:55:57|NO.102484

demo.exeを起動すると、config.exeで設定したディスプレイサイズの黒い■がディスプレイ左上に1秒程度表示されてすぐに消えました。
OS Windows 10 Home (64bit)
CPU Intel Core i5-6500 3.20 GHz(4 CPU)
メモリ 16 GB
グラフィックボード Nvidia GeForce GTX750Ti

> ログ出力機能を付けたDebug版のようなものを公開してみてはいかがでしょうか。
不具合報告してもらうためにもこの機能はあった方がよいと思います。

しかしそのまえに念のため、手軽にできる以下の確認もお勧めします。
公開されているファイルをダウンロードして問題が再現しないか確認。
必要なファイルの添付忘れがないか確認。
ファイルの参照先を間違えていないか(Usersフォルダを参照してないかなど)を確認。



youdai

リンク

2024/10/28(Mon) 19:12:59|NO.102485

皆さんのご報告とアドバイスを踏まえて、別の仕組みの上に同仕組みを構成しました。
動作環境はこれでかなり広がったと思います。
とても助かりました。ありがとうございました!



正造

リンク

2024/10/29(Tue) 12:26:33|NO.102494

HGIMG4版、32bit版共に動作しました。
お疲れ様です。

スレッドの内容からは逸れますが、HGIMG4版はwait処理がおかしいのかVSYNC有り無しにかかわらず2800〜3000fpsくらい出てしまい全体的に非常に高速な動きになっていました。
32bit版もVSYNC無しでは60fpsですが、VSYNC有りでは144Hzになりモニターのリフレッシュレートに同期はしていますがその分動作が早くなっています。
フレームレートが変わると描写速度が変わるのではなく移動距離や回転速度を調整して滑らかになる方向になるとより良いなと思いました。



youdai

リンク

2024/10/29(Tue) 13:23:37|NO.102496

> 正造さん

>スレッドの内容からは逸れますが、HGIMG4版はwait処理がおかしいのかVSYNC有り無しにかかわらず2800〜3000fpsくらい出てしまい全体的に非常に高速な動きになっていました。
>32bit版もVSYNC無しでは60fpsですが、VSYNC有りでは144Hzになりモニターのリフレッシュレートに同期はしていますがその分動作が早くなっています。

動作報告ありがとうございます。

Sakuranbo3Dのオリジナル版では、以下のようなウェイト処理になっています。

・「VSYNC待ちをしている」モードではウェイトを0にしている(ディスプレイのVSYNC待ちがウェイトの役割を果たす)
・「VSYNC待ちをしていない」モードではアプリケーション側でawait 1000 / 60をしている

という処理をしています。
この「VSYNC待ちをしている」というのはディスプレイ側の設定のことを指しています。
ディスプレイの設定をVSYNCありに設定していない状態で「VSYNC待ちをしている」設定にするとデモ内の設定が合わない状態になります。
ディスプレイのHzは普及仕様の60Hzを想定しているため、ディスプレイのHzが144Hz設定だと「VSYNC待ちをしている」の設定でも高速になってしまうのだと思います。(144Hzで本来60Hz設計のVSYNC待ちをしているという状態になっているのだと思われます)
この場合、ディスプレイの設定を60Hzに設定すると、おそらく正常な見え方になると思います。

Sakuranbo3DforHGIMG4のHGIMG4側のVSYNC待ちの仕様についてはオリジナル版と仕組みが異なるためこの場合のVSYNCの詳しいことがよく分からないのですが、これもディスプレイのHzを60Hzに変更すると改善される可能性があります。

>フレームレートが変わると描写速度が変わるのではなく移動距離や回転速度を調整して滑らかになる方向になるとより良いなと思いました。

このデモ作品ではアニメーションを含んでいないので出来なくはないのですが、アニメーションを含んだ場合、それらもやはり60Hz固定(60FPS)を想定して設計する(原画等を手で描く)ので、プログラミング上は可能でも実際には可変FPS仕様は制作面で難しいかもしれません。車のゲームとか、アニメーションを含まないものなら問題なく可能であると思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102477への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.