분류 전체보기(227)
-
2023.09.10
CPU 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인 컴퓨터의 제어 장치 ALU ( 산술논리연산장치) 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱 같은 노리연산을 계산하는 디지털 회로이다. Processor Register ( 프로세스 레지스터) 레지스터는 컴퓨터의 프로세스 내부에서 자료를 보관하는 아주 빠른 기억 장소이다. 제어 장치 제어 장치는 프로세스의 조작을 지시하는 컴퓨터 중앙 처리 장치의 한 부품이다. 프로그램 카운터 (Program Counter) - 역할: 메모리에서 가져올 명령어의 주소를 가리키는 레지스터. - 기능: 다음 실행할 명령어의 위치를 저장하고 갱신함. 명령어 레지스터 (Instruction Register) - 역할: 메모리에서 읽..
2023.09.10 -
MidNight / Direct2D
게임 장르 : 2D 플랫포머 제작 기간 : 23.08 (3주) 개발 환경 : C++ , Direct2D , Win32 API 플레이 영상 : https://youtu.be/zjurtTQS2R8 개발 과정 게임인재원 2Q 미니 프로젝트를 진행하였다. 이번에도 프로그래밍 4명으로 팀을 만들었다. 이후에는 기획자분들이 자신의 기획한 게임을 발표하시는데 MidNight 게임의 발표를 보고 이 게임을 선택하였다. 선택한 이유는 2D플랫포머이고 빛과 파티클이 게임에 잘 어울리고 맵툴이 필요한 게임이었기에 팀의 방향성과 가장 적합하였습니다. 구현 이펙트 Direct2D에서 지원하는 Effect 기능들을 활용해서 실제 게임에 적용했습니다. 첫 번째 이미지는 포인트 라이트를 사용해서 빛을 구현하였습니다. 포인트 라이트는..
2023.09.01 -
RGB Transition
RGB 분리 가장 먼저 원본 bitmap에서 RGB값들을 각각 분리했다. 각각의 추출할 색깔을 정해서 ID2D1Bitmap 객체로 생성하였다. 생성하는 과정에서 어제 공부한 unique_ptr을 사용해 보고싶었는데 ID2D1 객체의 경우 COM 객체쪽으로 Release를 따로 호출해서 해제하는 형식이기 때문에 ComPtr을 사용해서 따로 스마트포인터를 사용해야 했기 때문에 나중에 공부해서 사용 할 예정이다. 게임을 진행할때 런타임에 비트맵을 새로만들고 해제하는건 비효율적이므로 나중에 비트맵을 저장해서 쓰는 방법으로 코드를 바꿀 예정이다. 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 32 33 34 3..
2023.07.28 -
스마트 포인터 공부 1
RAII Rsource Acquisition Is Initialize (RAII) 자원 획득을 초기화 한다 ! RAII는 C++ 설계 패턴중인 하나인 키워드로 자원 관리를 스택에 할당한 객체를 통해서 수행하는 것이다. 스택에서 객체를 잡아두고 스택메모리가 해제되면 자동으로 메모리 해제를 하는 방식의 설계인거 같다. unique_ptr C++ 에서 메모리를 잘못된 방식으로 관리하였을때 크게 두 가지 종류의 문제점이 발생하는데 첫번째는 메모리를 사용한 후에 해제하지 않는 경우와 이미 해제된 메모리를 다시 참조하는 문제점이 있다. 이러한 문제가 발생한 이유는 만들어진 객체의 소유권이 명확하지 않아인데 우리가 어떤 포인터에 객체의 유일한 소유권을 부여해서, 이 포인터 말고는 객체를 소멸시킬 수 없다! 라고 한다..
2023.07.27 -
D2D 이펙트 공부
일단은 크로마키 이펙트를 사용해서 만들었다.... 하지만 원래의 의도는 명도에 따라서 작업을 진행하고 싶었는데 아무리 찾아도 Effect에서 명도에 따라서 투명하게 만들어주는 함수가 없는거 같아서 내가 직접 만들어주지 않고는 힘들어 보인다. 그래도 최대한 크로마키를 사용해서 만들었는데 일단 크로마키 이펙트의 보정값에 대한 계산식이 나와있지 않아서 정확한 계산은 하지 못했다...
2023.07.26 -
Direct2D Effect 응용
BloomEffect 최근에 그래픽스 엔진쪽에서 추가하면 좋을 기능등에서 고민을 많이하고 있었는데 수업시간에 교수님께서 가우시안 블러를 응용하는 방법들에 대해서 말씀해 주셨는데 정말 많은 도움이 되었다. 가우시안 블러만으로는 무언가를 표현하기에는 예쁘지 않았는데 배운것을 응용했는데 예쁘게 나와서 만족했다. 아래는 구현 코드인데 아직까지는 비트맵 전체를 가우시안 블러를 적용해서 하고 있는데 교수님이 설명하신 방법은 명도에서 따라서 적용하면 더 예쁘다! 였다. 그래서 명도에 대해서 공부도 해야한다. 일단은 RGB 값으로 V(명도)를 구할 수 있으므로 D2D Effect 중에서 특정 명도값 아래는 모두 투명처리를 하고 남아있는 곳만 가우시안 블러를 처리해서 원본과 블랜딩하면 될꺼같은데 잘 찾아봐야겠다. ㅁ 1..
2023.07.25