問題タブ [sdl-ttf]
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++ - 開始時の SDL2 プログラム SIGSEGV
SDL で作成した Snake を Android に移植したいので、SDL2 を使用するように一部を書き直す必要がありました。キー コントロールとレンダリング パーツを置き換えたところ、エラーなくコンパイルされました。ただし、実行しようとするとすぐにクラッシュします。デバッガーで実行しましたが、有用な情報は得られません:
コードの最初の行にブレークポイントを設定しましたが、クラッシュする前にブレークポイントに到達しません。SDL_image と SDL_ttf も使用しています。
c++ - SDL_TTF はガベージを描画します
先日、SDLを使ったTTFフォントのレンダリングについて質問したところ、SDL_TTFLを指摘されましたSDL_TTFライブラリを使ってみたのですが、画面にゴミしか表示されません
このプログラムには非常に単純なシェーダーと、テキストをサーフェスにロードしてテクスチャにバインドするために使用しているスニップを含めました。ここでクレイジーなことをしようとしているわけではありません。私が間違っていることはありますか?シェーダーなどをデバッグする方法がよくわかりません。
フラグメント シェーダー (frag.glsl):
頂点シェーダー (vert.glsl)
フォントの読み込み (loadFont.cpp)
頂点属性の設定
以下のコメントに従って、頂点属性に使用しているコードを添付しました。
編集: それ以降削除された返信で、SDL_TTF が 3 つまたは 4 つのチャネルを返すかどうかを尋ねられました。BGRA イメージを返しています。フラグメントシェーダーを次のように変更しようとしました
フラグメントシェーダー
vec4 に注意し、rgb ではなく rgba を使用します。これは単に黒い長方形につながります。また、SDL_LoadBMP() を使用してサーフェスを生成しようとしましたが、まったく同じ結果が得られました。
c - SDL_ttf サーフェスから OpenGL テクスチャ チャネルへの不一致
ゲームのスコア GUI 用に SDL_ttf サーフェスから OpenGL テクスチャを作成しようとしています。
しかし、赤とアルファ チャネルの不一致のように見えます。
GL_RGBA の代わりに GL_BGRA と GL_ABGR_EXT を使用しようとしましたが、別のチャンネルの不一致しか得られません。
c++ - プログラムをクラッシュさせるこの関数を取得しました
テキストボックスを作成しようとしているので、この関数を作成して画面にテキストを表示し、
私は fps レギュレーターを持っているので、関数は 1 秒間に 33 回呼び出されます。
私は古いコンピュータを持っています (64 MB ビデオ RAM と 1 RAM + Pentium 4 CPU 2.8GHz)
この関数をコードから削除すると、フリーズしないのはなぜですか?
MESSAGE (SDL_Surface *MESSAGE = NULL;) は、インクルード行の下のコードの上部で宣言されています。(スクリーンもそうです)
c++ - SDL_ttf と OpenGL が一見ランダムなガベージとクラッシュを出力している
SDL_ttf を使用して OpenGL でテキストをレンダリングする基本的なプログラムを作成しようとしています。この 2 つを連携させる方法について、約 12 の質問が回答されているのを見てきましたが、そのほとんどすべてが、私が使用しているものと似たコードを提供しています。しかし、私が経験しているボラティリティに関連する質問は見たことがありません。
とても奇妙です。特定のフォント、特定のポイント サイズ、特定の出力文字列を使用している場合、プログラムは機能し、完全に出力されます。それ以外の場合、プログラムは実行されますが、テキストの表面がゴミとして出てきます。また、プログラムがすぐにクラッシュする場合もあります。
たとえば、TTF_OpenFont( "font1.ttf" , 28 ) を呼び出してから、出力文字列として "Testing" を指定して TTF_RenderUTF8_Blended() を呼び出すと、クラッシュします。しかし、私はたくさんのことを試しましたが、非常に不穏な結果が得られました。
-「g」を削除して「Testin」を出力しようとすると、プログラムは動作し、想定どおりに出力されます。O_o
・「Test」を出力しようとするとゴミが出てしまう。
-「Tst」を出力しようとすると、プログラムが動作します。o_O
・「tst」を出力しようとすると、プログラムがクラッシュします。
さらに、さまざまなフォントやポイント サイズを試してみると、さまざまな文字列でガベージやクラッシュが発生します。
SDL_ttf 関数のすべてのエラー チェックが正常に戻りました。
つまり、私が知る限り、プログラムが機能するかどうかの違いは、SDL_ttf 関数に渡す文字列だけです。なぜそうなるのか、私にはまったくわかりません(フォントディレクトリは間違いなく正確です)。私が推測できるのは、ある種の明らかなメモリリークか何かを見落としているということだけです。
そうは言っても、ここに私の初期化コードがあります:
私のレンダリングコード:
そして私のクリーンアップ:
必要に応じて追加の詳細を提供できるよう最善を尽くします。
c++ - NULL を返す TTF_OpenFont
私は同じ問題を抱えています.TTF_OpenFontはNULLを返し、エラーが発生します.
そして、「フォントファイルを読み込めませんでした」というメッセージが表示されます
- .ttf chmod は 777です
- rootでプログラムを実行してみました
アイデアが尽きた。