static
[C] 정적변수, 지역변수, 전역변수 비교 (static, local, global)
☑️ 지역변수(local variable, 자동변수)는 중괄호 내부, 함수의 매개변수(Parameter)에서 사용되는 변수를 의미한다. 지역변수의 지역은 함수의 내부, 중괄호 내부를 의미한다. 따라서 함수 안에서만 접근 가능하며, 함수를 벗어나면 사라진다 (= 변수의 메모리 공간이 소멸된다). 지역변수는 초기화하지 않으면 컴파일 에러가 나거나 쓰레기값이 저장된다. 지역변수(local variable)는 자동변수(auto variable)와 같다. 자동변수는 흔히 블록(중괄호) 안에서 사용하는 변수로서, 변수가 생성된 뒤에 자동으로 사라진다고 하여 자동변수라고 부른다. 매우 흔히 사용하기 때문에 auto 키워드를 생략하고 사용한다. ☑️ 전역 변수(global variable)는 지역변수와 반대로 중괄호 ..
DirectX 12 멀티 스레드 렌더링 (Multi-Thread Rendering)
현재 프로젝트에서 사용 중인 스레드의 개수는 4개이다. 싱글 스레드 렌더링과 멀티스레드 렌더링의 성능을 비교해보겠다. 우선 사용하고 있는 메쉬 모델 데이터의 정보이다. 애니메이션 정보가 없는 스태틱 메쉬의 경우 vertex 정점 11,400개 / index 3,800개이다. 애니메이션 스키닝을 해야 하는 다이나믹 메쉬의 경우 vertex 정점 51,294개 / index 17,096개이다. 모든 오브젝트에 대해서 인스턴싱은 적용 X. 모든 오브젝트는 vertex 셰이더와 pixel 셰이더를 통해 렌더링 한다. 1. StaticMesh x1000 한 번 장면을 그릴 때마다 그리는 vertex의 개수는 11,400 * 1,000 = 11,400,000개. 그림자 깊이까지 총 2번을 그리므로 11,400,00..
C++ static (정적 변수 / 함수)
정적 변수는 선언 후 외부에서도 선언을 한 번 더 해줘야한다. Test.h #pragma once class Test { public: static int Val; }; cpp 파일에서 재선언 해주면 된다. 그리고 접근하기 위해선 클래스::변수 또는 함수로 해주면 된다. #include #include "Test.h" using namespace std; int Test::Val = 0; int main() { cout
[Unreal] Static Mesh (스태틱 메쉬) 그림자 끄는/키는 방법 C++
EditorStaticMeshLibrary 내 EnableSectionCastShadow 스태틱 전역 함수가 존재하는데 언리얼 5부턴 레거시화가 됐다. 아래 소스코드 내 유심히 살펴보니 힌트를 얻을 수가 있었다, StaticMeshEditorSubsystem를 대신 사용하라고 쓰여져있다. StaticMeshEditorSubsystem에선 클래스 멤버 함수라 참조를 해야한다. 여기서 좀 헷갈릴 수가 있는데 아래와 같이 세 개의 모듈을 추가 해줘야한다. "UnrealEd", "EditorSubsystem", "StaticMeshEditor" UnrealEd 모듈은 (UEditorEngine 클래스 포인터) GEditor에 대한 매핑 EditorSubsystem 모듈은 UEditorSubsystem 클래스 포..
C++ 4가지 타입의 캐스팅
1. static_cast C언어의 타입 캐스팅과 동일하다. 논리적으로 변환 가능한 타입만 변환한다. 안에는 타입을 지정하고, ()안에는 캐스팅할 대상을 지정한다. 업캐스팅 다운캐스팅 참고 2. const_cast 변수, 포인터 변수 또는 참조형의 상수성을 추가 / 제거를 위한 캐스팅에만 사용. class Parent { int mVal = 0; public: Parent() = default; Parent(int Val) : mVal(Val) { } public: void Print() { cout
C# static (정적) 메서드와 클래스
1. C# static 메서드 정적(Static) 메서드는 인스턴스 메서드와는 달리 클래스로부터 객체를 생성하지 않고 직접 [클래스명.메서드명] 형식으로 호출하는 메서드이다. 이 메서드는 메서드 앞에 static 이라는 C# 키워드를 적어 주며, 메서드 내부에서 클래스의 인스턴스 객체 멤버를 참조해서는 안된다. 이 static 메서드는 인스턴스 객체로부터 호출될 수 없으며, 반드시 클래스명과 함께 사용된다. 2. C# static 속성, 필드 정적(Static) 속성 및 필드는 위의 static 메서드와 같이 [클래스명.속성명]과 같이 사용하며, 다음 예와 같이 static을 앞에 붙여 정의한다. 클래스 내의 Non-static 필드들은 클래스 인스턴트를 생성할 때마다 메모리에 매번 새로 생성되게 되는 ..