나는 전에 여러 번 비슷한 질문을했음을 알고 있습니다. 그러나 이것은 다른 경우입니다.개체가 스스로 그려야합니까? (기하학과 질감의 혼합)
SDL2를 사용하여 C++로 게임을 작성하고 있습니다. 현재 모든 객체가 그립니다. 그들은 모두 다르게 다르게 드로잉하기 때문에이 작업을 수행합니다. 예컨대
는 버튼 파라미터로서 SDL_TTF 의해 생성 된 텍스처를 얻어 SDL_RenderCopy()
을 사용하여 그려 또한 텍스트를 포함 SDL_RenderFillRect();
버튼 그려진 사각형을 함유한다.
또한,지도보기 위젯 (a tilemap를로드 기본적 그리드)은 수평 및 수직 SDL_RenderDrawLine()
호출을 포함하는 '은'루프를 이용하여 격자를 그린다.
마지막으로 타일 자체는 SDL_RenderCopy()
을 사용하여 그려진 텍스처로 저장됩니다.
나는 일반적으로 객체를 그리지 않는 것이 바람직하다는 것을 알고 있습니다. 그러나 객체가 그려지는 방식에는 많은 차이가 있으므로 다른 방법이 확실하지 않습니다!
각 개체에 대해 GetTexture() 함수를 사용할 수 있다고 생각했는데 텍스처를 사용하는 것이 단순히 '텍스처 만 반환'할 수 있지만 기하학적 개체는 텍스처를 생성 할 수있었습니다. 사용자가 게임 세계를 탐색 할 때마다 그리드가 계속 업데이트되므로 (오프셋 값이 변경되고 이동할 때 그리드가 다시 그려지기 때문에) MapView 객체가 복잡해집니다.
개체를 그리는 데 문제가 있다고 생각하지 않습니다. 대개는 렌더링 된 것을 관리하고 객체를 제거하는 것과 같은 다른 작업을 수행하는 렌더링 대기열이 있습니다. 객체가 자체적으로 그려지 든 또는 각 객체의 데이터에 액세스하는 하나의 함수로 모든 객체를 그릴 지 아무런 차이가 없습니다. 각 객체 유형에 대해 하나의 그리기 기능 세트를 가질 수 있으며 그 사이에서 전환 할 수 있습니다. – Harish