본문 바로가기

전체 글84

[Game] Delta Time 델타타임을 이해하기 전에 우선 FPS에 대한 개념을 이해할 필요가 있다. FPS는 무엇일까? FPS(Frame Per Second), 즉 초당 프레임을 의미한다. 1초에 몇 프레임이 재생이 되는 지를 말하는 것인데, 기존에는 컴퓨터 간의 성능 차이가 심하지 않아서 부각이 되지 않던 문제가 하드웨어의 성능이 올라가면서 문제가 대두되었다. 게임의 경우 캐릭터는 이동을 하고 프레임을 재생하고 다시 이동을 하고 프레임을 재생한다. 그리고 이 이동량은 변수든 상수든 개발자가 정해두게 된다. 프레임당 이동량이 정해져 있다면, 더 많은 FPS를 가지는 컴퓨터와 적은 FPS를 가진 컴퓨터에서 이동량은 어떻게 되는 것일까? FPS가 60인 컴퓨터와 120인 컴퓨터가 있다고 가정하자, 여기에 게임을 실행시키고 게임 캐릭터.. 2022. 12. 14.
[C++] 싱글턴 패턴 엄밀히 말하면 C++ 카테고리에 분류될 것은 아니나 사실 새로 카테고리를 만들기 귀찮기 때문에 이렇게 게시한다. 싱글턴 패턴을 정의하면 다음과 같다. 애플리케이션이 시작 될 때, 어떤 클래스가 오직 한 개의 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공하는 패턴 싱글턴 패턴이 사용되는 경우는 다음과 같은 상황이다. 1. 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야 할 때 2. 유일한 인스턴스가 서브클래싱으로 확장되어야 하며, 사용자는 코드의 수정 없이 확장된 서브클래스의 인스턴스를 사용할 수 있어야 할 때 이런 싱글턴 패턴이 갖는 장점은 다음과 같다. 1. 유일하게 존재하는 인스턴스로의 접근을 통제할 수 있다. --> 싱글.. 2022. 12. 13.
[C++] 정적(Static) 변수 일반적으로 변수라고 하면 지역 변수와 전역 변수를 떠올린다. 그렇다면 정적 변수는 무엇일까? 정적 변수를 선언하면 특정 함수 내에서 선언을 하게 되는데, 이 경우에 변수는 전역 변수와 성격이 비슷해진다. 하지만 절대적으로 다른 것이 있다면 전역 변수는 어디서든 접근이 가능하지만 정적 변수는 지역 변수 내에서만 접근이 가능해진다. 저 글만 보면 지역 변수랑 다를 것이 없어 보인다. 하지만 코드로 직접 확인해 보면 어떤 느낌인지 알 수 있다. #include using namespace std; void Sub() { static int num1 = 0; int num2 = 0; ++num1; ++num2; cout 2022. 12. 13.
[C++] 비트 연산자 수업을 듣는 도중 오랜만에 나온 비트 연산자, 하지만 뭔가 머릿속에 확 남지 않아 다시 정리해본다. 비트는 무엇인가. 간단하다. 컴퓨터에서 가장 작은 단위는 바이트이다. 이 바이트는 다시 8비트로 이뤄져 있다. 이 8비트는 무엇인가 바로 여덟 자리의 이진수이다. 00000000 이것이 바로 8비트이다. 그렇다면 비트 연산자는 무엇일까? 바로 이 비트를 연산하는 연산자(Operator)이다. 이 중 밑의 3개는 시프트 연산자라 하여 비트의 이동을 연산하는 연산자이다. 비트 연산자 &, |, ~, ^는 비트에 대해 논리 연산을 한다. 참과 거짓을 반환하는 논리 연산자처럼 비트 연산자는 두 개의 비트에 대해서 결과에 따라 1과 0을 반환한다. 그렇다면 밑의 시프트 연산자는 어떻게 연산이 될까? 예를 들어 in.. 2022. 12. 13.