본문 바로가기
728x90

분류 전체보기63

[언어] 컴파일 언어, 인터프리터 언어, 하이브리드 언어 컴파일 언어코드 실행 과정소스 코드를 컴파일러가 읽어 전체를 기계어로 번역해 실행 파일을 생성한다.실행 파일을 독립적으로 실행한다.(컴퓨터가 직접 실행할 수 있다.)장점빠른 실행 속도(성능) : 실행 파일이 이미 기계어로 번역되어 있어 실행 시 번역이 필요없다.에러 검출 : 컴파일 과정에서 문법적 오류를 사전에 모두 검출해준다.자원 관리 : 메모리 관리 및 시스템 자원 사용이 효율적이다.보안 : 컴파일된 코드는 기계어이기 때문에 사람이 이해하기 어려워 보안과 안정성이 높다.단점개발 속도 : OS 별로 컴파일 과정이 필요하기 때문에 개발 주기가 길어질 수 있다. 또, 수정 시에 재컴파일이 필요하다.플랫폼 종속성 : 특정 운영 체제나 하드웨어 환경에 맞게 컴파일된 실행 파일은 다른 환경에서 동작하지 않는다... 2024. 12. 7.
[컴퓨터 그래픽스] 그래픽 렌더링 파이프라인 그래픽 렌더링 파이프라인은 GPU에서 일어나는 실제로 화면에 그래픽이 어떻게 표시될지 계산하고 출력하는 과정이다.렌더링 파이프라인에서 거치는 과정은 다음과 같다.Vertex ShaderRasterizerFragment ShaderOutput Merger이 중, shader가 붙어있는 두 가지는 프로그램으로 사용자가 직접 코드를 작성하여 파이프라인에 제공해야 하는 것이고, rasterizer와 output merger의 경우에는 하드웨어로 고정된 단계로 GPU에서 알아서 계산이 되어 결과를 반환하게 된다. 오늘은 각각이 어떤 역할을 하는지에 대해서 간략하게 정리를 해볼 것이다.Vertex Shader이름에서도 짐작할 수 있듯이 vertex, 점과 관련된 계산을 하는 단계이다. 그래픽 공간에 있는 모든 물체.. 2024. 11. 23.
[Unity] MonoBehaviour란 MonoBehaviour에 대해 알아보기 전, 유니티의 동작 원리부터 알아보도록 하자.Unity의 원리유니티는 컴포넌트 기반 아키텍처를 사용한다. 게임 오브젝트는 여러 컴포넌트로 구성되어 있으며, 컴포넌트는 특정 기능을 담당한다.MonoBehaviour을 상속받은 스크립트는 게임 오브젝트의 동작을 정의하는 주요 컴포넌트이다.게임 오브젝트(GameObject) : 씬 내의 모든 개체를 의미한다. 각 게임 오브젝트는 여러 컴포넌트를 가질 수 있다.컴포넌트(Component) : 게임 오브젝트에 붙여서 특정 기능을 수행하는 모듈씬(Scene) : 게임의 각 단위를 구성하는 환경으로, 게임 오브젝트와 컴포넌트들이 배치되어 있다.즉, 유니티는 컴포넌트와 게임 오브젝트를 이용하여 게임을 만드는 엔진으로, OOP의 .. 2024. 11. 19.
[Unity] 코루틴(Coroutine)과 Invoke 코루틴(Coroutine)원래 유니티에서 메서드는 호출하면 단일 프레임 내에서 실행되고 완료된다.하지만 코루틴은 한 작업을 다수의 프레임에 분산시킬 수 있다. 즉, 여러 프레임 동안 실행시킬 수 있다.쉽게 말해, 코루틴은 여러 개의 루틴이 동시에 실행되게 해주며, 싱글 스레드 기반의 유니티에서 멀티스레드처럼 보이도록 병렬적인 구조를 만드는 기능이다.따라서 멀티스레드의 문제점인 race condition과 동기화 관련 문제를 고려하지 않아도 된다.모든 코루틴은 MonoBehaviour을 상속하는 객체들로 인해 실행되고, 그 객체들에게 코루틴의 소유권이 있다고 표현한다.따라서 MonoBehaviour 메서드인 StartCoroutine, StopCoroutine 등으로 실행과 정지를 시킨다.이 소유권을 가진.. 2024. 11. 19.
[C#] 가상 함수 테이블 가상 함수란?기본 클래스에서 선언되고, 파생 클래스에서 재정의(override)할 수 있는 함수이다.virtual 키워드를 통해 선언하고, override 키워드를 통해 재정의할 수 있다.overriding, overloadingoverloading(오버로딩) : 같은 이름의 메서드를 여러 개 정의하는 기법으로, 메서드의 매개변수의 수나 타입을 다르게 설정하여 동일한 메서드 이름을 여러 용도로 사용할 수 있게 해준다.overriding(오버라이딩) : 부모 클래스에서 정의된 메서드를 자식 클래스에서 재정의하여 사용하는 기법이다.런타임 다형성을 구현하는 중요한 방법 중의 하나로, 자식 클래스에서 부모 클래스의 메서드를 변경하여 자식 클래스만의 방식으로 동작하게 할 수 있다.Virtual Table(VTab.. 2024. 11. 17.
[C#] 리플렉션(Reflection)과 속성(Attribute) 리플렉션(Reflection)리플렉션은 프로그램 실행 중 메타데이터를 검사하고 객체의 정보(형식, 이름, 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록 등)를 탐색, 조작하는 기능을 제공하는 기법이다. 이를 통해 코드가 실행 중에 클래스, 메서드, 프로퍼티, 필드 등의 정보를 조회하고 다룰 수 있으며, 주로 System.Reflection 네임 스페이스에 정의된 클래스를 사용한다.장단점장점유연성 및 확장성 : 코드가 컴파일될 때 타입을 알 필요 없이 런타임에 타입 정보를 가져와 동적으로 조작할 수 있다. 이로 인해 애플리케이션이 런타임에 새로운 타입을 로두하고 사용할 수 있다.동적 로딩 및 실행 : 리플렉션은 Assembly.Load, Type.GetType 등의 기능을 통해 외부 라이브러리나 플러그.. 2024. 11. 14.
728x90