목록분류 전체보기 (67)
코가손의 블로그
우리가 코드를 작성하여 "Hello World"라는 문자열을 출력하는 프로그램을 만들었다고 생각해보자. 이 프로그램은 저장장치에 저장되어 있고 프로그램을 실행하게 되면 콘솔에 "Hello World"를 출력한다. 저장장치에 있는 프로그램이 메모리에 적재되어 실행중인 상태를 프로세스 라고 한다. 인터럽트나 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것을 프로세스 문맥 교환 이라고 한다. 문맥은 PCB, 즉 프로세스의 정보를 말한다. 문맥 교환은 시간 비용이 들어가는 오버헤드이고, 이 오버헤드는 메모리 속도, 레지스터 수, 특수 명령어의 유무에 따라 시스템마다 다르다. 레지스터 문맥 교환, 작업 문맥 교환, 스레드 문맥 교환, 프로세스 문맥 교환 이 가능하다.
렌더링 파이프라인은 3차원 장면의 기하학적 서술과 가상 카메라의 위치 및 방향이 주어졌을 때 현재 가상 카메라에 비친 3차원 장면의 모습에 근거해서 2차원 이미지를 생성하는 데 필요한 일련의 모든 과정이다. 입력 조립기 단계(Input assembler) 입력 조립기 단계는 메모리에서 기하 자료(정점, 색인)를 읽어서 기하학적 기본도형(삼각형, 선분, 점 등)을 조립한다. Direct3D의 정점은 공간적 위치 의외의 정보도 담을 수 있다. 예를 들어, 조명을 구현하기 위한 법선 벡터나 텍스처 적용을 위해 텍스처 좌표를 추가할 수 있다. 정점 정점들은 정점 버퍼(vertex buffer)라고 하는 특별한 자료구조 안에 담겨서 렌더링 파이프라인에 묶인다(bind). 정점 버퍼에는 정점들이 연속적인 메모리에 ..
텍스처의 원소는 픽셀 하나의 색상을 담는 역할을 하거나 법선 매핑이라고 하는 고급 기법에서 쓰이는 3차원 벡터를 담는 용도로도 쓰인다. 2차원 텍스처는 2차원 배열, 3차원 텍스처는 3차원 배열에 해당한다. 텍스처는 단순한 자료 배열인 것이 아니다. GPU는 필터링, 다중 표본화 등의 특별한 연산을 텍스처에 적용할 수 있다. 텍스처에는 아무 자료형이나 담을 수 있는 것은 아니고 특별한 형식이 있다. DXGI_FORMAT이라는 열거형으로 형식을 지정하며 다음은 텍스처에 담을 수 있는 형식들의 예이다. 1. DXGI_FORMAT_R32G32B32_FLOAT : 각 원소는 32비트 부동소수점 성분 세 개로 이루어진다. 2. DXGI_FORMAT_R16G16B16A16_UNORM : 각 원소는 [0, 1] 구간..
COM(Component Object Model)은 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다. C++클래스로 간주하고 사용해도 무방하기 때문에 주로 COM객체라고 부른다. 사용자는 대부분의 COM인터페이스의 세부사항을 볼 수 없다. COM 객체는 new나 delete를 이용할 수 없고 반드시 별도의 API함수를 써 생성해야 하며 Release메서드를 호출해 주어야 한다. - 모든 COM 인터페이스는 IUnknown이라는 COM인터페이스의 기능을 상속, 여기서 Release메소드 제공) 사용자는 COM인터페이스 포인터를 AddRef메서드를 사용해야지만 다른 변수에 복사할 수 있다. COM인터페이스들의 이름은 대문자 'I'로 시작한다. 명령 목록을 나타내는 COM인터페이..