DirectX 10

[DirectX]멀티 스레드 생성 및 소멸, 크리티컬 섹션 동기화 , 함수호출규약, 스택프레임

🎈멀티쓰레드와 동기화🎈 ▷함수가 호출되는 원리와 호출이 될때 마다 할당되는 메모리 관리방식 1. 절차적 함수호출 지원 CPU모델 ▷함수의 호출도 CPU의 도움을 받아야만 가능 ▷함수호출 기능은 하드웨어 종속적인 부분이 상당수 존재 ▷함수가 호출되는 방식은 CPU에 따라서 차이를 보인다. ▷이 책에서는 공통분모위주 설명 🎨스택프레임 구조🎨 ▷함수 내에 선언된 변수가 스택에 할당 ▷함수 호출과 스택 관계 ▷스택 프레임 : 함수호출과정에서 할당되는 메모리 블록 ▷a함수가 호출되면 이 함수 내에 선언된 변수 e와 h가 할당되는데 이메모리 블록을 가리켜 스택프레임 이라고 한다. a함수가 반환되면 이 스택프레임은 모두 반환된다. 🎨sp 레지스터🎨 ▷계속 스택에 데이터를 쌓거나 반환하기 위해서는 현재 어느 위치까지 ..

DirectX 2022.01.20

[DirectX]고해상도 타이머

타이머를 사용하는 이유 : 컴퓨터 성능에 따라 일정 시간당 호출되는 Update() 의 빈도가 다르기 때문 해상도란? 얼마나 많은프레임을 쪼개서 표현할 수 있는가 GetTickCount는 1/1000까지 표현이 가능하다. QeuryPerformanceTimer의 경우에는 하드웨어마다 주파수가 다르므로 하드웨어마다 해상도도 다르다. GetTickCount() Kernael.dll 에 존재하며 시스템(운영체제)가 시작된 이후로부터 카운트 된다. 단위는 millisecond 단위로 나타낸다. 시간은 DWOD형으로 저장된다. 49.7일만 표현이 가능하다. 넘어가면 0으로 초기화 된다. QeuryPerformanceTimer 1. LARGE_INTEGER 구조체를 사용 64비트 정수형을 담는다. 컴파일러가 64비..

DirectX 2022.01.06

[DirectX]색상의 개념

컴퓨터 모니터의 색상은 빨간색 + 녹색 + 파란색 이다. 여기에 빛의 세기에 따른 색상 변화까지 섰어주면 사실적인 이미지를 표시하는데 필요한 모든 색상을 묘사 할 수있다. 빛의 세기를 나타낼때는 0부터 1까지 정규화된 값을 사용한다. 즉, 색상은 벡터로 표현될 수 있다. (0.25, 0.67, 1.0 )이라고 하면 25퍼센트 세기의 적색광과 67퍼센트 세기의 녹색광, 100퍼센트 세기의 청색광의 혼합을 뜻한다. 색상연산 벡터의 덧셈 (색상의 덧셈) 벡터의 뺄셈 스칼라곱 내적은 의미없는 연산이다. 색상벡터만의 연산이 있다. 변조라고 한다. 변조 : 성분별 곱셈이다. 주로 조명 공식에 쓰인다. ->입사광선 색상에 표면이 입사광선의 적생광을 50퍼센트 녹색광을 75퍼센트 청색광을 25퍼센트 반사하고 나머지를 ..

DirectX 2022.01.03

[DirectX] DXGI란

Direct3D와 함께 쓰이는 API이다. DXGI에 깔린 기본 착안은 여러 그래픽 API들리 공통인 그래픽 관련 작업들이 존재한다는 것이다. 예를 들면 매끄러운 2차원 애미메이션을 위해서는 2차원 렌더링 API에서도 3차원 렌더링API처럼 교환사슬과 페이지 전환이 필요하다. 이때문에 교환사슬을 대표하는 인터페이스인 IDXGISwpChain은 실제로 DXGI API의 일부이다. DXGI는 그밖에도 여러가지 공통그래픽 기능성을 처리한다.

DirectX 2022.01.01

[DirectX] 다중표본화의 이론1

앨리어싱 효과 : 선을 픽셀들의 행렬로 표현하려고 할때 나타나는 계단 현상 초과 표본화 (슈퍼샘플링) : 후면버퍼와 깊이버퍼를 화면 해상도 보다 4배 크게 잡고, 후면버퍼에 4배 크기의 해상도에서 랜더링 한다. 이미지를 화면에 제시할때가 되면 후면버퍼를 원래크기의 버퍼로 환원한다. 그과정에서 4픽셀블록의 네 색상의 평균을 해당하는 픽셀의 최종 픽셀로 사용한다. 다중표본화 : 초과표본화는 픽셀처리량과 메모리 소비량이 네배라서 비용이 높다. 따라서 절충적인 앨리어싱 제거 기법이 다중표본화 이다. 다중표본화는 일부 계산 결과를 부분픽셀들 사이에서 공유하기 때문에 초과표본화보다 비용이 낮다.

DirectX 2021.12.31

[DirectX] 포함디렉토리, 라이브러리 디렉토리

대부분 외부 라이브러리 (DirectX) 에 대한 경로를 입력 할때 폴더 그대로 입력하면 링크 에러가 난다. 정확히 말하자면 어떨때는 나고 어떨때는 안나기도 한다. 하지만 된다고 할지라도 나중에 어떤 문제가 발생할지 모름으로 정확하게 해두는 것이 좋다. 만약 DirextX의 include 경로를 폴더경로 그대로인 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include 라고 입력하면 링크문제가 생긴다. (F7을 눌러 현재 보이지 않는다 할지라도 나중을 위해 vs에서 직접경로를 선택하는 창을 띄워 C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include 와 같은 %로 연결된 ..

DirectX 2021.12.24

[DirectX] 벡터 3

벡터의 덧셈 연산을 하려면 벡터의 합을 해주는 함수를 이용 : D3DXVECTOR# * D#DXVec3Add(_inout D3DXVECTOR3 *pOut, _in const D3DXVECTOR# * pV1, _in const D3DXVECTOR# *pV2); ->헤더 D3dx9math.h 라이브러리 : D3dx9.lib 포함 벡터의 연산자 오버로딩을 이용 벡터의 뺄셈을 하려면 벡터에서의 부호는 방향은 반대고 크기는 같은 벡터를 의미 한다. 벡터의 뺼셈을 해주는 함수를 이용 : D3DXVec3Subtract(_inout D3DXVECTOR3 *pOut, _in const D3DXVECTOR# * pV1, _in const D3DXVECTOR# *pV2); 벡터는 공간상의 한 점을 나타낸다. 점을 옮기고 싶..

DirectX 2021.12.19

[DirectX] 벡터의 내적2

내적은 방향을 나란하게 맞춰서 곱해주는 것 벡터 v와 단위벡터 n이 주어졌을때 내적을 이용해서 p를 구하기. p = kn 을 만족하는 스칼라 k 가 존재한다. ||n||은 1이므로 ||p|| = ||kn|| = |k| ||n|| = |k| 이다. 삼각 함수 법칙을 이용하면 k = ||v||cosΘ 이다. 따라서 p = k n = (||v||cos Θ)n = (||v|| ||n|| cos Θ)n = ( v ● n ) n 이다. 특히 이공식에 따르면 k = v ● n 이다. 이는 p를 n에 대한 직교투영(정사영) 이라고 부른다. v를 하나의 힘으로 간주한다면 p는 힘v중에서 방향 n으로 작용하는 부분이라고 할수 있다. p = projn(v)라고 한다. 이와 비슷하게 벡터 w는 w = prepn(v) = v ..

DirectX 2021.12.19

[DirectX] 벡터의 내적

벡터의 크기와 방향에 대한 표현 : v = (2, 1) 라는 벡터가 있다. v와 - 1 /2 v 를 비교해보면 방향은 반대 크기는 절반 인 벡터를 나타낸다. 즉 벡터는 크기와 방향을 나타낼 수 있다. 벡터 : 벡터는 방향과 벡터의 길이를 구할떄 쓴다. 크기와 방향 그리고 위치값을 저장하기 위한 구조체로 사용한다. 벡터 2,2 는 위치가 아니고 방향을 의미한다. 벡터의 크기는 벡터의 길이이고 스칼라 값을 가진다. 벡터의 상등 : 크기와 방향이 같으면 같은 벡터이다. 즉, 벡터의 위치는 무관하다. 크기와 방향만 같으면 같은벡터. 벡터의 덧셈 뺄셈 : 벡터는 덧셈 뺄셈만 있다. 벡터의 덧셈 벡터의 뺄셈 두 벡터의 합은 한 벡터의 꼬리에 다른 벡터의 머리를 일치시켜준 것을 말한다. 두 벡터의 뺄셈은 v- u 는..

DirectX 2021.12.18

[DirectX] 기본 개념 이해하기 1

왼손좌표계 : 다이렉트 3차원 좌표계는 왼손좌표계 벡터와 스칼라 : 벡터 가속도나 속도 등의 크기와 방향을 정확히 표현할 수 있는 수치 스칼라 기압, 크기 등의 단일한 숫자로서 표기 정점(vertex) : 공간상의 위치에 해당 Q(x, y, z)가 정점이다. 폴리곤의 구성요소이다. 변환(transform) : 이동(transition), 회전(rotation), 크기(scale), 전단(shear) 변환이 있고, 모두 행렬로 표현 아핀변환(affine transform, 어파인 변환) : 이동, 회전, 전단만으로 이루어진 행렬 -> 시스템을 유지하는 특성이 있다. 행렬(matrix) : 주로 변환을 할때 행렬이라는 도구를 사용한다. 폴릭곤(polygon) : 3개의 버텍스가 모여서 만들어진 삼각형을 폴리..

DirectX 2021.12.18