C++
ImGui 기본 사용법
출처: https://github.com/ocornut/imgui/wiki/Getting-StartedImGui는 여러 플랫폼을 지원하는 C++ GUI 라이브러리이다. ImGui를 사용하는 방법은 다음과 같다.1. 컴파일링/링킹ImGui를 자신의 프로젝트에서 사용하기 위한 컴파일, 링킹 단계이다. ImGui 위키의 내용을 따라 다음과 같이 진행해주면 된다.master 혹은 docking 브랜치 중에서 하나를 선택한다.선택한 브랜치를 자신의 프로젝트의 서브모듈로 추가하거나, 압축을 풀어 프로젝트 경로에 위치시킨다.자신의 프로젝트나 빌드 시스템에 따라서 ImGui의 파일들을 추가해준다. 선택한 파일들은 프로젝트에 컴파일/링킹된다.루트 디렉토리에 있는 모든 *.cpp, *.h 파일을 추가한다.backends ..
std::vector의 emplace, emplace_back 사용시 주의사항
문제상황emplace와 emplace_back 함수는 C++의 STL 컨테이너에서 제공하는 함수로, 컨테이너에 새로운 요소를 삽입하기 위해 사용한다. insert, push_back과 동일한 결과를 기대할 수 있지만, 객체를 생성하고 삽입하는 과정을 최적화하여 불필요한 복사나 이동을 줄일 수 있다. 하나의 std::vector에 대하여 emplace, emplace_back을 사용하는 경우에는 다음과 같은 문제가 발생할 수 있다.(insert, push_back을 사용하는 경우에도 동일한 문제가 발생할 수 있음)std::vector vec;// vec가 비어있는 상황에선 vec.begin() == vec.end()auto iter = vec.begin();// vec에 원소를 추가하여 iter의 값은 무..
const, constexpr, consteval
1. constC++에서 상수를 정의하거나, 변수나 객체의 값을 상수화하기 위해 사용하는 대표적인 키워드이다. 기본적인 사용법은 다음과 같다.// 1. 상수 변수const int MAX_VALUE = 100;// 2. 상수 포인터int value = 10;const int* ptr = &value; // 포인터가 가리키는 값을 변경할 수 없음int* const ptr2 = &value; // 포인터 자체를 변경할 수 없음const int* const ptr3 = &value; // 포인터와 가리키는 값을 모두 변경할 수 없음// 3. 상수 멤버 함수class MyClass {public: // 멤버 변수 value를 변경할 수 없음 int getValue() const { ..
Spinning Cube
참고 영상: https://youtu.be/p09i_hoFdd0?si=AUAEsT3OhuySuJYh 유튜브에서 C++ 콘솔 애플리케이션을 이용해서 3차원에서 회전하는 큐브를 구현한 영상을 보았다. 콘솔에서 저렇게 표현할 수 있다는게 재미있어 보여 따라 만들어 보았다. https://github.com/Jeongmin94/SpinningCube 실행 결과 Windows API나 DirectX를 사용하지 않고 오로지 콘솔로만 3차원에 있는 물체를 화면에 표현할 수 있다는 점이 되게 흥미로웠다. 특히 구현의 편의성 때문에 간소화된 부분이 많이 있음에도 불구하고 실제로 그래픽스 라이브러리에서 물체를 회전, 투영하기 위해 사용되는 방법들이 그대로 적용되어 있었다. 먼저 원점을 기준으로 물체를 회전하기 위해 회전 ..