본문으로 바로가기

나만의 연습장

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 홈
  • 태그
  • 방명록
관리자
  • 블로그 이미지
    엄준식사생팬

    엄준식이 좋아요.

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

Vulkan) 6. 스왑 체인 개요 (Swap Chain Overview)

모든 내용은 https://vulkan-tutorial.com/Development_environment 에서 발췌합니다. Windows를 기본으로 합니다. 그 외 플랫폼의 개발 환경 구성은 튜토리얼 사이트를 확인해 주세요. 모든 완성된 코드는 github.com/kimduuukbae/VulkanTutorial에 업로드됩니다. 어떤 플랫폼에서 실행하던지, vulkan은 윈도우에 대한 시야를 참조한다. 해당 윈도우에 실제로 어떤 것을 그리기 위해서는 특별한 이미지를 생성해야 한다. 하지만 대부분의 플랫폼에선 이 특별한 이미지는 시스템이 소유하거나 긴밀이 숨겨져 있어서 우리가 접근할 수 없다. (즉, 모니터에 그려지는 부분을 전면버퍼라고 하는데 이 전면버퍼를 우리는 접근할 수 없다.) 대신 스왑 체인으로 불..

Graphics/Vulkan 2021. 9. 5. 19:47

std::ranges 를 이용한 split 구현

std::vector split(std::string_view str, std::string_view delim) { auto view{ str | std::ranges::views::split(delim) | std::ranges::views::transform([](auto&& elem) { return std::string_view(&*elem.begin(), std::ranges::distance(elem)); }) }; std::vector strings{ view.begin(), view.end() }; return strings; } int main() { for (auto& elem : split("HI, MY, NAME, IS, UM", ", ")) { std::cout

C++/여담 2021. 8. 25. 04:02

Vulkan) 5. 고정 파이프라인 단계

모든 내용은 https://vulkan-tutorial.com/Development_environment 에서 발췌합니다. Windows를 기본으로 합니다. 그 외 플랫폼의 개발 환경 구성은 튜토리얼 사이트를 확인해 주세요. 모든 완성된 코드는 github.com/kimduuukbae/VulkanTutorial에 업로드됩니다. 이전에 디바이스 초기화 까지 끝냈습니다. 다음은 고정 파이프라인 단계를 초기화해야 합니다. 앞으로 다음과 같은 정보들을 작성할 것 입니다. 1. Input Assembly 이 단계는 정점들의 정보를 포함하는 vertex buffer와 index buffer를 읽고 다른 파이프라인 단계에서 사용할 프리미티브로 조립시킨다. ( 이 프리미티브는 점, 라인, 선, 삼각형, 스트립 등 다양..

Graphics/Vulkan 2021. 8. 9. 00:40

C++20) 우주선 연산자를 이용한 3방향 비교 (three-way comparison, spaceship operator)

C++20에는 '우주선' 연산자라는 애칭이 붙은 새로운 연산자가 추가되었습니다. 이 게시물은 우주선 연산자의 관계와, 이를 사용하여 정확하고 효율적인 양방향 비교를 작성하는 방법을 알아볼것입니다. Relation strength 우주선 연산자는 'operator'를 사용합니다. 공식적인 이름은 3방향 비교 연산자 (three-way comparison) 입니다. 두 객체를 비교한 다음 결과를 다음과 같이 비교하여 사용합니다. (a b) 0// a가 b보다 크다면 true, a > b (a b) == 0 // a 와 b가 동등/동일 하다면 true, a == b -1, 0, 1 로 비교합니다. strcmp와 비슷하다고 생각할수도 있습니다. ..

C++/Modern 2021. 7. 25. 17:48

C++20) Atomic Smart Pointers / std::atomic_flag

std::shared_ptr & std::weak_ptr std::shared_ptr 및 std::weak_ptr은 thread safe 합니다. 그런데 왜 Atomic Smart Pointer가 추가되었을까요? std::shared_ptr은 스레드로부터 '안전' 하면서 '안전하지 않기' 때문입니다. std::shared_ptr은 reference counter와 resource로 구성되어 있습니다. reference counter 자체는 스레드로부터 '안전' 합니다. 그러나 resource의 접근은 안전하지 않습니다. 즉, reference counter 수정은 원자적(atomic)작업이며, resource가 정확히 한 번 삭제된다는 보장이 있습니다. Boost에서는 std::shared_ptr에 대한..

C++/Modern 2021. 7. 23. 02:35

[Unreal Engine 4] 메모리 관리

메모리 관리는 안정성이 높고 버그가 없는 프로그램을 작성하는 과정에서 늘 중요한 주제다. dangling pointer는 이미 메모리에서 지워진 대상을 참조하는 포인터이며, 추적하기 어려운 버그를 만드는 대표적인 사례다. UE4의 UObject 참조 카운팅 시스템은 UObject 클래스로부터 파생된 액터와 클래스의 메모리를 관리하는 기본적인 수단으로, 이를 통해 UE4 프로그램 내에서 메모리가 관리된다. 만약 UObject에서 파생하지 않은 C++ 클래스를 작성한다면 TSharedPtr/TWeakPtr 를 사용하면 된다. 이번 글에선 메모리 관리와 코드 디버깅 방법을 설명한다. 메모리 관리 기능의 도움을 받으면 메모리 해제를 잊는 실수를 걱정하지 않아도 된다. 메모리 관리를 하는 프로그램에서는 동적으로 ..

UnrealEngine/기능 2021. 7. 22. 03:33

C++20) Ranges - 2

views::drop 우리가 문자열 트리밍을 한다고 생각해봅시다. 즉, 어떠한 문자열이 들어오면, 선행/후행 공백이 제거된 새 문자열을 구성하려고 합니다. 예를 들어, "\n\t\r Hello World! \n\n" 를 "Hello World!" 로 변경해봅시다. template auto trimFront(R&& rng) { return std::forward(rng) | std::views::drop_while(::isspace); } template auto trimBack(R&& rng) { return std::forward(rng) | std::views::reverse | std::views::drop_while(::isspace) | std::views::reverse; } std::stri..

C++/Modern 2021. 7. 19. 02:42

C++20) Ranges - 1

1장에서는 Ranges의 기본적인 개요와 view를 다룹니다. 2장에서는 Action을 다룹니다. C++20 에서 Actions가 추가되지 않았습니다. ( 추가가 안된 것은 아니고, namespace 가 추가되지 않음 ) 그에 따라, action은 자세하게 설명하진 않고, 부분적으로 설명합니다. actions에 관한 정보는 이곳을 확인해주세요. 2장에서는 총망라한 내용과 Algorithm을 다룹니다. Ranges가 무엇일까요? Ranges는 객체입니다. 어떠한 객체의 집합들입니다. begin()을 이용해 처음의 객체를 얻어낼 수 있고, end()를 이용해 마지막 인자 다음의 끝을 알아낼 수 있습니다. 즉 Ranges는 begin과 end가 필수로 필요하며, 이를 통해 순회할 수 있어야 합니다. 이미 전에..

C++/Modern 2021. 6. 15. 02:05
  • 이전
  • 1
  • ···
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • ···
  • 17
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (129)
    • 알고리즘 (13)
      • 정렬 (1)
      • 동적계획법 (9)
      • 완전탐색 (2)
    • C++ (63)
      • Modern (40)
      • Before (2)
      • STL (11)
      • 여담 (8)
      • WinApi (1)
    • Graphics (17)
      • 이론 (8)
      • DirectX (3)
      • Vulkan (6)
    • Computer Science (0)
    • UnrealEngine (32)
      • 기능 (13)
      • Impl (14)
      • Issue (1)
      • Editor (4)
    • Unity3D (4)
      • 기능 (4)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • Before
  • UnrealEngineIssue
  • 언리얼엔진4
  • vulkan
  • UnrealEngine
  • 여담
  • c++
  • 언리얼엔진5
  • UnrealEditor
  • Firebase
  • c++20
  • stl
  • unity3D
  • Modern
  • UnrealEngine5
MORE+

ARCHIVE

CALENDAR

«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

LINK

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT 나만의 연습장, ALL RIGHT RESERVED.
나만의 연습장
블로그 이미지 엄준식사생팬 님의 블로그
MENU
  • 홈
  • 태그
  • 방명록
CATEGORY
  • 분류 전체보기 (129)
    • 알고리즘 (13)
      • 정렬 (1)
      • 동적계획법 (9)
      • 완전탐색 (2)
    • C++ (63)
      • Modern (40)
      • Before (2)
      • STL (11)
      • 여담 (8)
      • WinApi (1)
    • Graphics (17)
      • 이론 (8)
      • DirectX (3)
      • Vulkan (6)
    • Computer Science (0)
    • UnrealEngine (32)
      • 기능 (13)
      • Impl (14)
      • Issue (1)
      • Editor (4)
    • Unity3D (4)
      • 기능 (4)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바