저는 프로그래밍 언어로 roguelike을 프로그래밍하여 C++ 및 SDL2를 배우고 있습니다. 지금은 이것과 같은 tiles.png
이미지의 일부를 렌더링하여지도를 구축 : C++ SDL2 개별 타일의 색상을 지정하는 방법
가장 좋은 방법은 무엇입니까? 분명히 PNG에 수백 가지 색상 조합을 저장할 수 없습니다. 타일마다 텍스처를 만들어야합니까? 아니면 더 좋은 방법이 있을까요?
감사합니다. :)
저는 프로그래밍 언어로 roguelike을 프로그래밍하여 C++ 및 SDL2를 배우고 있습니다. 지금은 이것과 같은 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