私はC++とSDL2を古典プログラミングroguelikeで学習しています。今私はこの1つのようtiles.png
画像の一部をレンダリングすることにより、マップを構築: C++ SDL2個々のタイルの色づけ方法
ここで最善のアプローチは何ですか?明らかに、私はpngに数百の色の組み合わせを保存することはできません。各タイルのテクスチャを作成するか、それとも良い方法がありますか?
ありがとうございます! :)
私はC++とSDL2を古典プログラミングroguelikeで学習しています。今私はこの1つのようtiles.png
画像の一部をレンダリングすることにより、マップを構築: C++ SDL2個々のタイルの色づけ方法
ここで最善のアプローチは何ですか?明らかに、私はpngに数百の色の組み合わせを保存することはできません。各タイルのテクスチャを作成するか、それとも良い方法がありますか?
ありがとうございます! :)
SDL-2は、タイルをレンダリングするためにOpenGLを使用することを意味します。ブレンドと色の材料を使用してください。 SDL_SetRenderDrawColor
,SDL_SetRenderDrawBlendMode
,SDL_SetTextureBlendMode
SDL_SetTextureColorMod
,SDL_SetTextureAlphaMod
を使用してください。あなたはアルファチャンネル付きの文字を使用する必要が別の背景を描画するために
SDL_SetTextureColorMod(renderer, 255, 255, 0);
:黄色の文字を描画するたとえば 。まず、テキストが現れる背景を描画し、次にテキストを描画する必要があります。たとえば :
//load surface with alpha-channel here
SDL_SetRenderDrawColor(renderer, 0, 0, 255); //set blue background
//draw rect for background here
SDL_SetTextureColorMod(renderer, 255, 255, 0); //set yellow letters
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
//draw text here
またはバージョン(あなたはアルファブレンディングを使用したくない場合)cheeting:
SDL_SetRenderDrawColor(renderer, 0, 0, 255); //set blue background
//draw rect for background here
SDL_SetTextureColorMod(renderer, 255, 255, 0); //set yellow letters
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD);
//draw text here
おかげで、私はそれを試してみましょう。しかし、 'SDL_SetTextureColorMod'はテクスチャ全体に影響しませんか? – JoePerkins
はい。全体のテクスチャは黄色になります。実際にはテクスチャではなく、モジュレーションカラーです。タグ付きテキスト(色付き)が必要な場合は、必要なテキストの色を定義するテキストレンダラー(タグを分析して)を作成し、sdl_settexturecolormodを使用してテクスチャの色を切り替える必要があります。テキストは、異なるテクスチャ座標を持つ色付き長方形の並びです。 – user3811082
さて、それは働いた。まず、 'SDL_SetRenderDrawColor'を使ってタイルの背景を設定してから、' SDL_RenderFillRect'を使います。 'SDL_SetTextureColorMod'ではフォアグラウンドカラーを設定し、最後に' SDL_RenderCopy'と 'SDL_RenderPresent'ですべてをレンダリングします。 – JoePerkins