問題タブ [sdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ゲームエンジンの構築に行き詰まった
C++、SDL、および OpenGL を使用して (単純な) ゲーム エンジンを構築しようとしていますが、次のステップがわかりません。これは私がこれまでに持っているものです...
メイン ゲーム ループを制御するエンジン オブジェクト
シーンをレンダリングするシーン レンダラー
プッシュおよびポップできるゲーム ステートのスタック
各状態にはアクターのコレクションがあり、各アクターには三角形のコレクションがあります。シーン レンダラーはビュー プロジェクション マトリックスを正常にセットアップします
私が抱えている問題が、アクターの位置を保存する方法に関連しているのか、それともレンダリング キューを作成する方法に関連しているのかはわかりません。
不透明なポリゴンを前から後ろに描画し、次に透明なポリゴンを後ろから前に描画するレンダリング キューを作成すると効率的であると読みました。このため、アクターはシーン レンダラー オブジェクトの「queueTriangle」メソッドを呼び出します。次に、シーン レンダラー オブジェクトは各アクターの三角形へのポインターを格納し、位置に基づいて並べ替えてレンダリングします。
私が直面している問題は、これが起こるために三角形がワールド座標での位置を知る必要があることですが、glTranslatef と glRotatef を使用している場合、これらの座標がわかりません!
誰かが私に解決策を提供してください。または、これを解決する方法に関する(簡単な)ガイドにリンクしてください。
ありがとうございました!
c++ - 名前を指定せずに画像ファイルを読み込む
SDL または C++ に、画像ファイルを名前を指定せずにフォルダから読み込む機能 (順番に読み込むなど) はありますか? そうでない場合、同じ方向に沿って何かを達成するために使用するテクニックはありますか?
このようなことをする:
ファイル名が毎回固有であるため、ループは使用できません。
私が実際に考えることができる唯一の方法は、各ループ反復子を介して変更する文字列を持ち、ループ番号を文字列の特定の部分に挿入し、それがファイルのラベル付け方法であると仮定し、その文字列を LoadImage パラメーターとして使用することです。ただし、上記を実行するだけでなく、より多くの作業のように思えます。
android - Android で SDL を使用する: 「GLES_CM」がないためコンパイルできません
C を使用して Android で OpenGL を使用しようとしています。この優れたチュートリアルに従っていますが、壁にぶつかりました。
Linux Mint 7 (Ubuntu 9.04 ブランチ) で ARM コンパイラ (arm-none-linux-gnueabi-ld) を使用しています。
コンパイルされたバイナリを Android エミュレーターに問題なくコピーでき、実行されます。しかし、make
自分で試してみると、次のエラーが発生します。
「GLES_CM」が見つからないと文句を言います。それが何なのか、どこにあるのか途方に暮れています。Google 検索は空で表示されます。のマニュアルページもなく、フラグがarm-none-linux-gnueabi-ld
何であるか、または何をするのかわかりません。-l
誰かが以前にこの種のことをしたことがありますか、それとも私が間違っていることを理解するのを手伝ってくれますか?
前もって感謝します。
Ps は、Android エミュレーターでコンパイル済みのバイナリをコピーして実行するために私が書いた小さなスクリプトです。
c# - C# と SDL - エンド ユーザーは SDL をインストールする必要がありますか?
DirectX の代替として SDL を試すかどうかを考えています。私は 2D ゲームしか作成していないようですが、開発されたゲームをプレイするためにエンド ユーザーのコンピューターに SDL をインストールする必要があるかどうかはどこにもわかりません。 C#、グラフィックに SDL を使用。
誰か知っていますか?
c++ - SDL_Mixer の音の問題
基本情報:
プログラミング言語 - C++
プラットフォーム - Windows
オーディオ形式 - wav および mid
私は最近、ゲームを終了し、ファイル ホスティング サイトにアップロードする最良の方法を考え出そうとしていました。最終的に、7zip の自己解凍機能を使用することにしました。ただし、私が犯した間違いは、必要なものを別のフォルダーにコピーして配布用に圧縮するのではなく (つまり、ソース ファイルなどをコピーしない)、すべてのソース ファイルを保持する実際のフォルダーを再配置したことだと思います。など、それを C++ ファイル用の 2 つのサブ フォルダーに分割し、それ以外のすべてのフォルダーに分割します (そのフォルダーは圧縮されたフォルダーです)。
ダウンロードして再生してみましたが、問題なく動作しました。しかし、バックグラウンド ミュージックを変更することにしたため、問題が発生し始めたため、元に戻しました。
問題を要約すると、Mix_PlayMusic()
が呼び出され、正しく機能しています。ただし、何らかの理由でサウンドが再生されません (また、 から呼び出されるサウンド効果もありませんMix_PlayChannel()
)。奇妙なことは、呼び出されたときに音楽が聞こえることですMix_FadeOutMusic()
。サウンドのトグル機能もありますが、徹底的にテストした結果、それは問題ではないという結論に達しました。
私は最終的に、完全に新しいプロジェクトを作成し、必要なすべてのファイルをそのプロジェクトに最初にあったのと同じ「組織」に入れることにしました。しかし、問題はまだ残っています。
何が悪いのかわかりません。ファイルは問題なくロードされていますが、音楽が再生されているはずのときに(テストによると)、再生されていません。これは効果音にも当てはまります。
編集:実際に、音楽が再生されているかどうか、明らかに音楽が再生されているかどうかについて、各ゲームループのテストを作成しました。何故か聞こえないだけです。
c++ - SDL_Surface をクリアして別のものに置き換えるにはどうすればよいですか?
しばらくの間、これをオンラインで見つけようとしています。
いくつかのコンテンツを含む SDL_Surface があります (1 つはテキスト、もう 1 つはスプライトの一部です)。ゲームループ内で、データを画面にうまく表示します。しかし、再びループし、古いデータを置き換えるのではなく、上書きするだけです。だからテキストの場合、めちゃくちゃになります。
SDL_FreeSurface を試してみましたが、うまくいきませんでした。別の方法を知っている人はいますか?
c++ - SDL GL プログラムがすぐに終了する
Dev-C++ 4.9.9.2 (理由は聞かないでください) と SDL 1.2.8 を使用しています。
次に、新しいプロジェクト SDL&GL を作成しました。このプロジェクトには、すでにいくつかのコードが含まれています。
次に、プロジェクトをコンパイルして実行してみます。実行後、プログラムは 1 秒未満表示され、すぐに終了します。デバッガーは次のエラーを返します:「プログラムでアクセス違反 (セグメンテーション違反) が発生しました」。
Windows 2003 および Radeon x1950 PRO と最新のドライバーを使用しています。
Windows XP を搭載したラップトップでプログラムをテストしましたが、完全に動作します。このプログラムが私のコンピューターで動作しないのはなぜですか?
audio - SDL_Audio_Spec のコールバック関数は 1 秒間に SDLAudio_Spec.freq を呼び出しますか?
SDL_Audio_Spec のコールバック関数は 1 秒間に SDLAudio_Spec.freq を呼び出しますか?
c - SDLコールバック関数で特定の周波数で波形を再生する
64サンプルの長さの波形があります。サンプリングレートが44100Hzの場合、この波形を再生(ループ)して任意の周波数を再生するにはどうすればよいですか?
周波数=サンプルレート/サンプルの波形持続時間
したがって、周波数は689hz(44100/64)である必要があります。65.41hz(C-2)と言いたい場合は、次のようにする必要があります。
65.41 = 44100 / x
xを解くと、約が得られます。674.208。したがって、この周波数を取得するには、波形を再生する速度を把握する必要があります。したがって、この方程式を解くことができます。
64 * x = 674.208
約10.5を取得します。したがって、波形は元の速度の10.5%で再生する必要があります。
これが私のコードです:
したがって、結果のオーディオはノートC-2に関するものになりますが、それはD-2に近いものになります。キャストですか
問題を引き起こしていますか?私はこれを達成する他の方法を見つけることができませんでした...