전체 글
-
헤더 전용 라이브러리는 뭐고 언제 쓸까?Programming🧑💻/Cpp 2025. 4. 4. 21:38
헤더 전용 라이브러리란 무엇인가?헤더 전용 라이브러리는 단어 그대로 헤더 파일만으로 구성된 라이브러리입니다.일반적인 라이브러리들이 헤더 파일(.h, .hpp)과 구현 파일(.c, .cpp)로 나뉘어 있는 것과 달리, 헤더 전용 라이브러리는 모든 코드가 헤더 파일 안에 담겨 있습니다. 전통적인 라이브러리 방식 : 이 방식에서는 선언과 구현이 분리되어 있습니다.calculator.h (선언부)#ifndef CALCULATOR_H#define CALCULATOR_H// 함수 선언int add(int a, int b);int subtract(int a, int b);double divide(double a, double b);int multiply(int a, int b);// 클래스 선언class Calcul..
-
Metal-Cpp : C++ 개발자를 위한 Apple의 GPU 사용법Apple🍎/Metal 2025. 4. 3. 23:03
Metal 둘러보기셰이더(shader)는 무엇인가?다음은 애플 디벨로퍼 홈페이지에 있는 Metal 의 소개입니다. 일단 Metal 을 사용하면 GPU 프로그래밍을 가능하게 해준다고는 들었는데, 셰이딩 언어는 또 뭘까요? 사실 GPpeople-analysis.tistory.comMetal 소개: Apple 플랫폼의 그래픽 및 컴퓨팅 프레임워크Metal은 Apple이 개발한 저수준 그래픽 및 컴퓨팅 API로, iOS, macOS, tvOS 등 Apple 플랫폼에서 GPU의 강력한 성능을 활용할 수 있게 해줍니다. 2014년에 처음 소개된 Metal은 OpenGL보다 더 낮은 오버헤드와 더 높은 성능을 제공하기 위해 설계되었습니다.Metal의 주요 특징은 다음과 같습니다. 그래픽 렌더링 및 일반 컴퓨팅(GPG..
-
행렬 곱은 함수의 합성이다.Math♾️/Linear Algebra 2025. 4. 2. 10:45
선형 변환 : 행렬은 함수다.선형 변환이란 무엇인가? 먼저 '변환(transformation)'라는 용어부터 이해해볼까요? 변환은 사실 함수(function)의 또 다른 표현일 뿐입니다. 함수는 입력 값과 출력 값간의 관계를 정의합니다. 따라서people-analysis.tistory.com선형 변환의 기본 개념 복습지난 글에서 선형 변환은 "벡터를 입력으로 받아 벡터를 출력으로 내놓은 함수 일종의 함수"라고 했습니다. 또한 '선형' 변환은 다음과 같은 특성을 가진 공간의 '변형'으로도 생각할 수 있습니다. 격자선(그리드 라인)이 평행을 유지합니다.격자선 사이의 간격이 균일하게 유지됩니다.원점(0,0)은 항상 고정된 상태로 유지됩니다.이러한 특성은 선형 변환이 공간 전체를 일관된 방식으로 변형시킨다는 것..
-
[Particle Simulator] Compute Shader 사용해 gpu 연산하기Apple🍎/Metal 2025. 4. 1. 22:45
[Particle Simulator] cpu 연산 - gpu 랜더링 방법1. Metal Setup 과정 GPU 자원 초기화 : 시스템의 GPU에 접근하기 위한 기본 자원을 설정, MTLCreateSystemDefaultDevice( )를 호출하여 기기의 GPU를 가리키는 참조를 얻습니다. 화면 표시 영역 준비 : GPU가 렌people-analysis.tistory.com기존 CPU 기반 구현의 한계지난 글에서는 입자 시뮬레이션을 위해 프레임마다 각 입자에 대한 계산을 cpu에서 실행하고 그 결과를 gpu를 통해 렌더링하는 방식을 사용했습니다. private func updateSandSimulation() { // 아래에서 위로 순회 (중력 방향을 고려) for y in (0..= gridH..
-
[iOS-2] Dependency Container로 의존성 관리하기Project/TalkTalk 2025. 3. 31. 23:01
의존성 주입이란?의존성 주입(Dependency Injection)은 한 객체가 다른 객체에 의존할 때, 외부에서 해당 의존성을 제공하는 디자인 패턴이며 다음과 같은 이점을 가질 수 있습니다. 결합도 감소: 객체가 자신의 의존성을 직접 생성하지 않아 결합도가 낮아집니다.테스트 용이성: 실제 구현체 대신 테스트용 모의 객체를 주입할 수 있습니다.유연성: 런타임에 의존성을 변경할 수 있어 유연한 설계가 가능합니다.코드 재사용성: 의존성이 분리되어 컴포넌트의 재사용이 용이해집니다.예를 들어 네트워크 통신이 필요한 뷰모델이 있다고 할 때, 이 뷰모델은 네트워크 작업을 하는 객체를 내부에서 직접 생성하지 않고 뷰모델 객체가 생성되는 시점에 외부에서 주입받습니다. 좀더 자세히 설명해 보면 NetworkServic..
-
[Particle Simulator] cpu 연산 - gpu 랜더링 방법Apple🍎/Metal 2025. 3. 30. 22:47
1. Metal Setup 과정 GPU 자원 초기화 : 시스템의 GPU에 접근하기 위한 기본 자원을 설정, MTLCreateSystemDefaultDevice( )를 호출하여 기기의 GPU를 가리키는 참조를 얻습니다. 화면 표시 영역 준비 : GPU가 렌더링한 내용을 표시할 특수한 뷰(MTKView)를 생성, 해당 뷰는 앱의 기존 UI 계층 구조 내에 배치되어, GPU 렌더링 결과가 나타날 화면 영역을 정의렌더링 루프 설정 : 대리자 설정을 통해 렌더링 루프를 구성합니다. 이를 통해 화면이 새로고침될때마다 대리자 클래스의 draw( ) 메서드가 자동으로 호출하여 연속적인 프레임 렌더링이 가능해집니다. 렌더링 옵션 구성: framebufferOnly = false 와 같은 설정으로 렌더링 방식을 조정합니다..
-
Metal 렌더링 파이프라인Apple🍎/Metal 2025. 3. 29. 21:11
Metal 렌더링 파이프라인은 3D 그래픽을 2D 화면에 체계적으로 그리는 과정을 말합니다. 이 과정을 단계별로 자세히 알아보도록 합시다. 💡 글 이해를 위해 필요한 개념들 정점(Vertext) : 3D 공간상의 점으로, 3D 모델이나 그래픽을 구성하는 가장 기본적인 요소이며 다음과 같은 정보를 포합합니다. 위치(position): x, y, z 좌표로 3D 공간에서의 위치를 나타냅니다. 색상(Color) : 정점의 색상 정보입니다. 텍스쳐 좌표(texture coordinates): UV 좌표라고도 하며, 텍스쳐 이미지의 어느 부분이 해당 정점에 매핑될지를 결정합니다. 법선 벡터(normal vectors) : 정점에서의 표면 방향을 나타내느 벡터로, 조명 계산에 사용됩니다. 텍스쳐(Texture)..
-
[iOS-1] Coordinator 패턴을 사용한 화면 전환 관리Project/TalkTalk 2025. 3. 28. 22:03
Coordinator 패턴이란?Coordinator 패턴은 화면 전환 로직을 ViewController로부터 분리하여 별도의 객체(Coordinator)에게 위임하는 아키텍처 패턴입니다. 이 패턴을 통해 ViewController는 UI 표시와 사용자 입력 처리에만 집중할 수 있고, 복잡한 화면 전환과 앱의 전체 흐름은 Coordinator가 관리하게 됩니다.Coordinator 패턴 구현 Coordinator 프로토콜을 정의하여 각 화면을 관리하는 Coordinator들이 반드시 포함해야할 구현을 강제합니다. /// Coordinator 패턴을 구현하기 위한 기본 프로토콜/// 앱의 화면 흐름을 관리하고 뷰 컨트롤러 간 전환 로직을 캡슐화합니다.protocol Coordinator: AnyObject ..