본문 바로가기

분류 전체보기80

UNSEEN 대비 1. 객체지향 프로그래밍의 특징 - 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해주시면 감사하겠습니다. 1. 객체지향 프로그래밍의 특징 객체지향 프로그래밍이란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는 것을 말한다. 자동차를 만들 때 작은 부품을 먼저 만들고, 이렇게 만든 부품을 하듯이, 객체지향적으로 프로그램을 설계한다는 말의 의미는 객체를 만들고 이를 조립해서 하나의 거대한 프로그램을 만든다는 뜻이다. C언어 이후, 많은 객체지향 언어가 나타났는데 대표적인 것이 Objective-C, C++, Java, C#.. 2024. 1. 23.
[DirectX 11 in Windows 10, 11] 3. DirectX 11의 초기화 해당 글도 래스터텍의 글과 빠재님의 번역본을 참고하여 작성되었습니다. 빠재의 노트 :: DirectX11 Tutorial 3 - DirectX 11의 초기화 (tistory.com) Tutorial 3: Initializing DirectX 11 (rastertek.com) 개념 정리 DX11 자체가 너무 알아야 할 개념이 많아서 그것부터 정리해 놓음. DX11 학습에 필요한 개념 정리 새로운 프레임워크 이제 모든 Direct3D 시스템 함수를 관리(handle)할 새로운 클래스를 추가해 보자. 이를 위해 D3DClass를 추가했다. ApplicationClass 하위에 위치시켰는데, ApplicationClass가 이전 튜토리얼에서 말했듯이 모든 그래픽과 관련된 클래스를 해당 클래스에 캡슐화시키는 클래.. 2023. 8. 9.
DirectX 11 학습에 필요한 개념 정리 학습에 필요한 개념 Direct3D를 초기화할 때 부가 API가 출몰하기 시작한다. 근데 너무 많아서 뭐가 뭔지 모르겠다. 글 보고 공부해보자. DirectX를 짜려는데 기초 개념을 공부하고 싶다면 해당 글을 읽어보는 걸 추천한다(DirectX 11 기초 (Tutorial)-.. : 네이버블로그 (naver.com)) 기능 수준(Feature Level) [DirectX 12] 기본지식 - 기능 수준(Feature Level) (tistory.com) 기능 수준들은 GPU가 지원하는 기능들의 엄격한 집합을 정의한다(각 기능들이 지원하는 구체적인 내용은 SDK를 참고). 예를들어 기능 수준 11을 지원하는 GPU는 반드시 Direct3D 11의 기능 집합 전체를 지원해야 한다. 이러한 기능 수준은 응용 프.. 2023. 8. 9.
[C/C++] 메모리 초기화하기: ZeroMemory 매크로 윈도우 프로그래밍에서 맨날 메모리를 0으로 초기화할 때 memset은 안 쓰고 ZeroMemory를 쓴다. ZeroMemory ZeroMemory는 매크로의 일종으로 정의는 다음과 같다. // minwinbase.h #define MoveMemory RtlMoveMemory #define CopyMemory RtlCopyMemory #define FillMemory RtlFillMemory #define ZeroMemory RtlZeroMemory // winnt.h #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) #define RtlMoveMemory(Destination,Source,.. 2023. 8. 6.
[DirectX 11 in Windows 10, 11] 2. 프레임워크와 윈도우 만들기 원문 빠재의 노트 :: DirectX11 Tutorial 2 - 프레임워크와 윈도우 만들기 (tistory.com) DirectX11 Tutorial 2 - 프레임워크와 윈도우 만들기 Tutorial 2: Creating a Framework and Window 원문: http://www.rastertek.com/dx11tut02.html 저는 우선 DirectX 11 코딩을 시작하기보다는 간단한 코드 프레임워크를 만들어 두는 것을 추천합니다. 이 프레임워크는 간단 blog.nullbus.net Tutorial 2: Creating a Framework and Window (rastertek.com) Tutorial 2: Creating a Framework and Window Tutorial 2: Cr.. 2023. 8. 3.
[DirectX 11 in Windows 10/11] 1. DirectX 11 최초 실행 환경 세팅하기 Windows 10 이후에서 DirectX 11 설치하기 강의 자료: Tutorial 1: Setting up DirectX 11 with Visual Studio 2022 (rastertek.com) Tutorial 1: Setting up DirectX 11 with Visual Studio 2022 Tutorial 1: Setting up DirectX 11 with Visual Studio 2022 Before writing any graphics code we'll need to have the tools to do so. The first of these tools is a compiler that is preferably built into a nice IDE. The one that I u.. 2023. 8. 3.
[C/C++] 함수 호출 규약 __stdcall과 __cdecl에 관하여 함수 호출 규약? 함수 호출 규약을 공부하게 된 계기 함수의 선언형은 반환형 + 함수명 + 매개변수 리스트 로 구성된다. 함수의 반환형은 단 하나이다. 그래서 int, double과 같은 기본형과 MyClass 같은 사용자 정의형이 반환형에 들어간다. 그런데 아래 함수들을 보니 반환형과 함수 이름 사이에 뭔가 인자가 하나 더 있다. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow); LRESULT CALLBACK SystemClass::MessageHandler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam); WINAPI, CALLBACK .. 2023. 8. 3.
[DirectX 11 in Windows 10/11] 0. DirectX 학습 방향 학습 동기 나만 그럴지는 모르지만, 게임 개발자에게 있어서 DirectX는 공부하기 싫어도 맨날 마음의 숙제처럼 남아 있는 친구라고 생각한다. OpenGL은 그나마 학교 수업에서라도 하니까 강제로 하게 되는데 DirectX는 한국의 게임 업계에서는 많이 쓰지만(Windows 플랫폼에 적합!) 해외에서는 오히려 Vulkan 같은 것들을 더 주목하고 있는 형편이고... 그래서 공부하는 데에는 참 시간이 많이 걸리는데 Unity 같은 것처럼 공부했을 때 바로바로 결과물을 얻을 수 있는 공부는 아니라고 생각한다. 그렇지만 그래픽스와 Shader를 공부하면 할수록 기반 지식의 중요성이 참 커진다. 그래서 큰맘 먹고 다시 DirectX를 공부하기로 했다! 아래에 영천님께서 아주 좋은 조언을 해주셨는데, Direct.. 2023. 8. 2.
[C++] 스마트 포인터 - unique_ptr과 안전하게 쓰는 방법 *해당 글은 POCU 아카데미의 수업 ‘COMP3200: C++ 언매니지드 프로그래밍’을 듣고 개인적으로 정리한 내용입니다. 틀린 점이 있다면 지적해주시면 감사하겠습니다! 스마트 포인터? C언어에서 포인터는 사용자가 직접 메모리 할당을 제어할 수 있게 해주었지만, 잘못된 사용으로 인해 여러 가지 위험한 상황이 발생하기 쉬웠다. 할당된 메모리를 까먹고 해제하지 않거나 세그먼트 폴트 등의 오류를 만드는 게 대표적인 예다. 이 때문에 자바, C# 같은 언어에서는 아예 포인터를 없애고 가비지 컬렉터(GC; Garbage collector)를 도입했다. 그러나 메모리를 직접 제어하지 않는 만큼 성능상 손해를 보기 쉬웠다. C++은 반대로 포인터를 편하게 사용할 수 있게 개선했다. 그 시도 중 하나가 auto 포인.. 2023. 7. 20.