전체 글 (104) 썸네일형 리스트형 [TIL42장] 조건자와 비교함수(feat. 함수 객체, 함수 포인터, 람다 함수) TIL 24.01.22 리스트 개념 배열 리스트 연결 리스트 연산자 함수 ▩ 연산자 함수 - 클래스 인스턴스와 상관없이 "독립적으로" 호출되어야함 따라서 멤버 함수는 사용 못하고, 멤버 함수로 사용하려면 정적(static)으로 선언 또는 함수 객체로 선언해야됨 * 함수 객체 만들 때 opeartor() 사용 operator()는 연산자 오버로딩도 가능함 [TIL41장] 연산자함수 operator function (feat. 전위연산과 후위연산의 차이) TIL 24.01.22 리스트 개념 배열 리스트 연결 리스트 연산자 함수 ▩ 연산자 함수 [디자인패턴] 커맨드 패턴 목차 옵저버(관찰자) 패턴 사용 목적 설명 동작 과정 / 코드 고려 사항 패턴 최종 정리 커맨드 패턴 ▩ 커맨드 패턴 사용 목적 // "GoF 디자인 패턴" 4부 18장 p.303 // [정의] : 커맨드 패턴 : 요청과 요청 처리할 객체를 중계하기 위한 클래스 상속 구조 [목적] : 어떤 "이벤트가 발생"했융 때 "수행해야 할 작업을 쉽게 추가"할 수 있게 일반화하기 위함 [옵저버 패턴 사용하면 유용한 경우] 1. GUI 구현 시 메뉴나 버튼에 수행할 작업을 일반화시켜 설정하고자 할 때 - 동일한 메뉴여도 다른 커맨드 객체를 설정하여 "상황에 따라 다르게 작동할 수 있게 만들기 가능" 2. 작업 수행을 요청한 시점과 실제 작업을 "수행하는 시점을 달리하고 싶을 때" 3. Undo 및 Redo 기능 지원.. [디자인패턴] 옵저버(관찰자) 패턴 목차 옵저버(관찰자) 패턴 사용 목적 설명 동작 과정 / 코드 고려 사항 패턴 최종 정리 옵저버 패턴 ▩ 옵저버(관찰자) 패턴 사용 목적 // "GoF 디자인 패턴" 4부 23장 p.415, p.440 // [목적] : "하나의 원본 데이터(주체)"를 동시에 참조하고 있는 "여러 개의 객체(관찰자)"에게 "데이터 값의 변화를 즉시 반영"할 수 있는 방법 [옵저버 패턴 사용하면 유용한 경우] 1. 한 객체가 2가지 측면 가지는데 한 측면이 다른 측면에 의존적일 때, 각 측면을 별도 객체로 정의하고 옵저버 패턴 적용 시 "재사용성" 높아지고, "변경 용이" 2. "한 객체에 대한 변경"을 "다른 객체들이 영향을 받을 때", "영향을 받는 객체들을 일일이 관리하고 싶지 않을 때" 3. "구체적으로 어떤 객체들.. [디자인패턴] 디자인 패턴 기초 (feat. 적합한 디자인 패턴 선택 방법) 목차 소프트웨어 개발 what-why-how 생각 모델 디자인 패턴 정의 및 선택 방법 디자인 패턴 ※ 디자인패턴의 모든 내용은 교재를 바탕으로 작성됨 01. 소프트웨어 개발과 WHAT-WHY-HOW 생각 모델 ▩ 소프트웨어 개발 소프트웨어 개발 : "원하는 목적" 달성을 위해 기준이 되는 "개념/철학"을 바탕으로 "특정한 과정"을 거쳐 소프트웨어적인 "해결책"을 만들어 내는 것 개념 또는 철학 - 구조적(structured) : 소프트웨어를 "기능 위주 관점"으로 원하는 기능을 "하향식으로 세분화, 구체화"시켜 해결책 - 객체지향적(object oriented) : "데이터 위주 관점"으로 데이터들간의 "상호 관계"를 정의하여 목적 달성 구조적 소프트웨어 개발 비용보다 소프트웨어 수.. [그래픽스] 빌보드 (ft. LOD 기법) 목표빌보드지오메트리 셰이더를 사용하여 빌보드를 효율적으로 구현하는 방법들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 지오메트리 셰이더 빌보드 (Billboard)빌보드란?파티클이나 평면이 카메라를 계속 바라보게 하는 기법또는 카메라에서 멀리 떨어져 있는 복잡한 3D 메시를 2D 이미지로 그리는 데 사용되는 디테일 수준(LOD) 방식 중 하나 빌보드를 왜 사용하는가?2차원 평면 텍스처인 이펙트의 정면을 카메라에 고정시켜 3D 공간에서 자연스럽게 표현하기 위함. 빌보드를 어떻게 구현하는가?1) 뷰 스페이스의 역행렬 이용2) 동적 정점 버퍼에서 카메라가 움직일 때마다 ID3D11DeviceContext::Map으로 CPU에서 업데이트3) 지오메트리 셰이더(GS)를 사용하여 효율.. [DirectX] 셰이더(HLSL), SIMD 목표HLSL과 셰이더의 이해그래픽 파이프라인SIMD와 XMVECTOR들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 벡터 연산HLSL (High-Level Shader Language)HLSL이란?DirectX에서 프로그래밍 가능한 셰이더와 함께 사용하는 C와 유사한 고급 셰이더 언어 HLSL은 DirectX API와 연동되는 셰이더 언어로, DirectX에서 셰이더 작성 시 HLSL(셰이더 언어)을 사용한다.DirectX9은 고정 파이프라인으로 셰이더는 선택, DirectX11은 프로그래머블 파이프라인으로 셰이더 작성이 필수이다.DirectX9부터 프로그래밍이 가능한 3D 파이프라인을 설정하기 위해 HLSL이 만들어졌다. // HLSL 언어 예시 //float4 colo.. [DirectX] 하드웨어 인스턴싱(GPU 인스턴싱) 목표인스턴싱드로우 콜, API 오버헤드 이해들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 드로우콜, 배치하드웨어 인스턴싱인스턴싱이란?한 장면에서 동일한 객체(오브젝트)를 여러 번 그리는 경우, 한 번의 DP call로 처리하는 방식 인스턴싱을 통해 동일한 모델에 대해 "한 번의 호출"로 "n개를 그리게"해달라고 GPU에게 요청할 수 있으며, "각 인스턴스들의 속성(크기, 위치, 색상, 방향, 텍스쳐 등)을 다르게" 셋팅할 수 있다.우리는 하나의 정점 버퍼와 인스턴스 버퍼라는 각 복사본의 변경점들만 담은 두 번째 정점 버퍼를 사용하여 최적화한다.인스턴싱을 왜 사용하는가?추가 API 오버헤드를 최소화할 수 있다. API 오버헤드를 왜 최소화해야 하는가?API 오버헤드로 인해.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음