問題タブ [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.

0 投票する
4 に答える
5406 参照

c++ - 他のライブラリ#define命名の競合

この問題の適切なタイトルを思い付くのは難しい。ともかく...

私は現在、 SDLでゲームのGUIに取り組んでいます。私はソフトウェアの描画を終了し、奇妙なエラーが発生したときにそのOpenGL部分で開始する途中でした。「SDL/SDL_opengl.h」ヘッダーを含めてコンパイルしました。「エラーC2039:'DrawTextW':は'GameLib :: FontHandler'のメンバーではありません」をスローします。これは単純なエラーですが、DrawTextWと呼ばれるものはなく、FontHandler::DrawTextのみがあります。DrawTextWを検索し、ヘッダー「WinUser.h」の#define呼び出しで見つけました。

どうやらそれは私のDrawTextをDrawTextWに置き換えます!どうすればそのようにコードにこぼれるのを防ぐことができますか?

自分の関数の名前を変更するのは些細なことですが、このような名前の競合はかなり危険なように思われるので、それらをすべて一緒に回避する方法を本当に知りたいと思います。

乾杯!

0 投票する
3 に答える
6021 参照

graphics - Linux/X11でpygameでティアリングを回避する方法

私は(Debian / Lennyで)pygameで遊んでいます。ブリットの厄介な引き裂き(フルスクリーンまたはウィンドウモード)を除いて、うまく機能しているようです。

デフォルトのSDLX11ドライバーを使用しています。グーグルは、X11がvsync機能を提供しないことはSDLの既知の問題であり(FULLSCREEN|DOUBLEBUF|HWSURFACEフラグで作成されたディスプレイでも)、代わりに「dga」ドライバーを使用する必要があることを示唆しています。

ただし、実行中

でpygameの初期化をスローします

xdpyinfoXFree86-DGA拡張機能が存在することを示していますが)。

だから:涙のないvsyncedフリップを取得するための秘訣は何ですか?このdgaを機能させるか、他のメカニズムを使用しますか?

0 投票する
1 に答える
289 参照

c - SDLを使用して乗算モードで画像をブリットするにはどうすればよいですか?

Pygameには、surface.blitへのspecial_flags引数があります。これにより、単にピクセルをコピーするのとは異なる方法でピクセルを組み合わせることができます。たとえば、乗算モードでは、ピクセルを一緒に乗算できます。

CのSDLを使用してこれを実現するにはどうすればよいですか?SDLのドキュメントを見ましたが、これを行うための明確な方法がわかりません。

0 投票する
1 に答える
179 参照

c++ - SDL Mix_Music データ型を返そうとしていますが、問題があります

すべての Mix_Musics を公開するだけで、問題を心配する必要がないことはわかっていますが、それでもその方法を理解したいと思っています。

0 投票する
2 に答える
4794 参照

c - SDL テクスチャにカラーキーを使用できないのはなぜですか?

基本的な SDL 1.3 機能をテストするために、この単純な C プログラムを作成しました。すべてが機能しますが、小さな問題が 1 つあります。カラーキーは変換されません。パレット インデックス #0 が背景色である 8 ビット PNG スプライト ファイルを読み込んでいます。スプライトのみが表示されることを期待していますが、背景色を含む画像全体が表示されます。

何が起こっているのか、それを修正する方法はありますか? これは Visual C++ 2005 で書かれています。

編集: これは SDL_CreateTextureFromSurface のバグが原因であることが判明し、パッチを提出することになりました。

0 投票する
1 に答える
418 参照

c++ - 異なる時間にアクセスすると C++ ベクトル要素が異なる

Eclipse CDT を使用して、Ubuntu 9.04 で SDL と OpenGL を使用して 3D ゲームを開発しています。各タイプのベクトルでメッシュ データを保持するクラスがあります。Vertex、Normal、UVcoord (テクスチャ座標)、面のベクトルなど。各面には、他のデータへのインデックスを保持する 3 つの int ベクトルがあります。これまでのところ、私のゲームは適切な速度でレンダリングされており、非常にうまく機能しています。しかし、ここでも、テスト目的で 2 つのオブジェクト間で 100 未満の頂点しかありませんでした。

このデータにアクセスするループは次のようになります。

renderFace()上記のループを含む関数を呼び出すループがありforます。マイナス 1 は、Wavefront .obj ファイルのインデックスが 1 であるためです (c++ 0 インデックスではなく)。とにかく、約 30,000 個の顔があると、これらすべての呼び出しglVertex3f()などによってゲームが約 10 FPS まで遅くなることがわかりました。許せないこと。そこで、配列へのポインターを必要とする頂点配列について学びました。NeHe チュートリアルの例に従って、自分のoVerticeクラスと他のクラスを引き続き使用しました。floatsx、y、z、または u、v を持っているだけです。そのため、上記の同じ関数を関数に追加して、" " と同様OnLoad()の配列を作成しました。oVertice*

コードは次のとおりです。

このunsigned int temp変数はデバッグ用です。どうやら、初期化するものを持たないoFaceのデフォルトコンストラクターがありません。とにかく、ご覧のとおり、まったく同じルーチンです。gl 関数を呼び出す代わりに、データを 3 つの配列に追加するだけです。

キッカーは次のとおりです。

三角形で作られた典型的な立方体を読み込んでいます。

関数UV_Vertsからベクトルの要素 16 (0 インデックス) にアクセスすると、12 が得られます。RenderFace()

しかしUV_Verts、関数から同じベクトルの要素 16 (0 インデックス) にアクセスするとOnLoad()、3045472189 のような結果が得られます。

私はとても混乱しています。

誰がこれを引き起こしているのか知っていますか? もしそうなら、それを解決する方法は?

0 投票する
7 に答える
4743 参照

optimization - 2D タイル エンジンの計画 - パフォーマンスの問題

タイトルの通り、2Dプラットフォーマーエンジンのデザインを肉付け中です。まだ設計段階ですが、レンダラーに問題が発生しないか心配で、気になるなら避けたいです。

Uint16基本ライブラリに SDL を使用しています。ゲームは、タイルを保持するために単一の大きな配列を使用するように設定されます。これらは、衝突処理からグラフィック ルーチンまで、エンジンのすべての部分で使用される「タイル定義」の 2 番目の配列にインデックスを付けます。これは、私の最大の関心事です。

グラフィック エンジンは、解像度 640x480、タイル 32x32 で動作するように設計されています。フレームごとにレイヤーごとに 21x16 のタイルが描画され (スクロール時に表示される余分なタイルを処理するため)、最大 4 つのレイヤーを描画できます。レイヤーは単に個別のタイル配列ですが、タイル定義配列は 4 つのレイヤーすべてに共通です。

私が心配しているのは、このエンジンで透明度とアニメーション化されたタイルを利用できるようにしたいということです。また、デザインにあまり慣れていないので、現在のソリューションが非効率的すぎるのではないかと心配しています。うまくできた。

私のターゲット FPS はフラットな 60 フレーム/秒で、4 つのレイヤーすべてが描画されているため、毎秒 21x16x4x60 = 80,640 の個別の 32x32 ピクセルのタイルを描画する必要があることに加えて、スプライトには多くの奇数サイズのブリットが必要です。これは少し過剰に思えます。それで、私が持っているタイルマップ設定をレンダリングするためのより良い方法はありますか? ハードウェア アクセラレーションを使用してタイルマップを描画する可能性を検討しています。パフォーマンスが大幅に向上するのであれば。また、少し古いコンピューターでもこのゲームをうまく実行できることを願っています。

求めすぎるのであれば、エンジンの能力を下げることも論外ではないと思います。

0 投票する
3 に答える
1000 参照

c# - 私が支援しているプロジェクトでは、クライアントに freeglut を使用しています。別の方法でアドバイスする必要がありますか?

私は、クライアントに freeglut (長く機能していない glut に基づく) を使用している開発プロジェクトに携わっています。

クライアントは最終的に、大規模な 3D 環境との完全な対話を可能にします。freeglut を使用して開発を続行する必要がありますか (可能でしょうか)、または libsdl、opentk、さらには axiom などの別の代替手段を使用するようにアドバイスする必要があります。

私はグラフィックスの専門家ではありませんが、freeglut は限られた選択肢になる可能性があると感じています。

最も説得力のある回答 (賛成または反対) が認定されます。

編集:作成するいくつかのポイント...

  • プロジェクトは既に Tao フレームワークを使用しています。
  • DirectX と XNA はオプションではありません (つまり、freeglut や libsdl などを使用する必要があります)。

私が調査を行ったところ、freeglut が再び活発に開発されており、リリースが保留されていることがわかりました。それはまだ潜在的に限られた選択肢であるかもしれないという私の気持ちを変えるものではありません.

私の質問は、それがどのように行われたかではなく、freeglutが潜在的に大きくなる可能性のあるものに対してまだ実行可能な選択肢であるかどうか、および開発を少し楽にする可能性のある「最新の」ソリューションがあるかどうかについてです.

EDIT:他の代替手段がより優れたマルチスレッドサポートを備えている場合(オブジェクトのレンダリングではなく、データの処理など)に役立ちます。

編集: もう少し詳しく説明すると、クライアントは少なくとも Linux と Windows で動作する必要があります。

ありがとう!

0 投票する
3 に答える
26298 参照

c++ - SDLを使用して画像を回転させる最良の方法は?

ゲームを作成していますが、主人公の腕がマウスカーソルに追従するため、頻繁に回転します。それを回転させる最良の方法は何でしょうか?

0 投票する
1 に答える
1314 参照

c++ - SDL を使用して OpenGL で画像を回転する方法についてサポートが必要です

私はゲームを作っていますが、マウスカーソルに追従するため、キャラクターの腕は常に回転しています。これまで openGL を使用したことがないので、始めるにあたって助けが必要です。学習を開始するのに適したウェブサイトと、特にローテーションを含むウェブサイトを知っている人がいたら、教えてください。

私はすでに NeHe にアクセスし、その回転チュートリアルに行きましたが、他の基本的なチュートリアルを実行しようとした後でも、まだ非常に混乱しているように見えるので、トピックに関する説明もいただければ幸いです。

また、これで状況が変わるかどうかはわかりませんが、プレイヤーの「肩」を中心に回転させる必要があるため、この点を中心に腕を回転させる方法を知る必要があります。