[DirectX11] PipeLine Buffer Binding
2022. 8. 17. 17:35
삽질/뻘짓
Input Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Stream Output Rasterizer Pixel Shader Output Merger Vertex Buffer O O Index Buffer O Constant Buffer O O O O O Structured Buffer O O O O O O

Vector Identity
2022. 7. 21. 07:28
삽질
벡터의 내적과 외적을 흔히 scalar product와 vector product라고 한다. 벡터의 내적의 결과는 scalar 값이고, 외적의 결과는 vector 값이다. 첫번째식 : 세개의 벡터 A,B,C가 주어졌을때, 두 벡터의 외적에 나머지 벡터를 투영한 값은 항상 같다. 두번째식 : 세개의 벡터 A,B,C가 주어졌을때, 두 벡터의 외적한 값->새로운 벡터와 나머지 벡터를 외적한 값은? x-y 평면에서, i와 j로 모든 좌표를 표현할 수 있다. i와 j는 선형 독립이고, i와 j를 span하면 2차원 평면의 모든 좌표를 표현할 수 있다. i와 j는 기저 벡터이다. 벡터의 외적의 결과 값은 새로운 벡터이다. i와 j를 외적하면 새로운 기저 벡터 k를 생성한다. -> 그람슈미트 직교화. A,B,C를 기..
RTTI
2022. 7. 15. 16:52
삽질/COM
C++ 자체도 일단은, RTTI를 지원한다. 하지만, 성능상의 이유로, Unreal이나, Unity는 내부에 자체적으로 RTTI가 구현이 되어있다. 내가 작성한 버전은, template과 static의 특성을 사용한다. static 변수는 한 번만 초기화되는 녀석이므로, 매크로를 이용하여, Type을 string으로 변환하여, static 메모리에 저장한다. 이후 RTTI가 요구되는 클래스에 매크로를 추가해 주고, RTTI가 필요할 때, template type deduction에 의해 RTTI가 가능해진다. class RTTI { public: virtual const size_t TypeIdInstance() const = 0; virtual RTTI* QueryInterface(const size_..

분산 문제
2022. 7. 12. 21:13
삽질
분산에 대한 두 식이, 같음을 보이고, 컴퓨터에서 정확한 공식은 어떤 공식인가?.. #include #include #include #include auto main() -> int{ using namespace std; vector data; for(size_t i = 1; i < 101; i++){ data.emplace_back(i); } double m = (std::accumulate(data.begin(), data.end(), 0))/static_cast(data.size()); double temp = 0; for(size_t i = 0; i < data.size(); i++){ temp += pow((data[i] - m), 2); } double variance_1 = temp / st..
Trace
2020. 11. 13. 10:47
삽질/COM
1. Trace는 단순한 추적 기능을 구현하는 것을 말한다. 2. printf는 출력을 디버거로 보내지 않기 때문에 부적절하다. 3. OutputDebugString 함수는 커널을 통해서 디버거에 문자열을 전달할 수 있지만, 릴리즈 버전에서는 노출되지 않는다. 4. Event Tracing은 릴리즈 버전에서도 제어 및 활성화할 수 있는 강력한 기능을 제공하지만, 간단한 추적을 하기에는 적합하지 않다. #pragma once #include #include #include #define ASSERT _ASSERTE #ifdef _DEBUG #define VERIFY ASSERT #else #define VERIFY(expression) (expression) #endif #ifdef _DEBUG inlin..

Verify
2020. 11. 13. 06:33
삽질/COM
1. Windows API 같은 API의 일부 메소드는 불리언 값을 반환하는 Verify 매크로를 통해서, 오류 상황을 가정하여 작성되었기 때문에, Assert 만큼 엄격하지는 않다. 2. 릴리즈 버전에서 완전히 없애기 곤란한 경우, Verify 매크로를 사용하기 때문에 보조 디버그 도구로 필수적이다. 3. Handle 객체는 복사가 일어나지 않기 때문에, 아래 코드는 오류를 발생하는 코드이다. e와 e2는 같은 값을 가지기 때문에, e의 소멸자가 호출되면, e2는 존재하지 않는 주소를 가리키게 되어, e2의 소멸자는 예외를 발생시킨다. #include #include #define ASSERT _ASSERTE #ifdef _DEBUG #define VERIFY ASSERT #else #define VE..