Microsoft Word - game08-midterm.doc

Similar documents
Microsoft Word - cg07-midterm.doc

Microsoft PowerPoint - GameProgramming23-PixelShader.ppt

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

Microsoft PowerPoint - GameProgramming15-MeshII

Microsoft Word - cg09-midterm.doc

Microsoft PowerPoint - 10terrain.ppt

Microsoft PowerPoint - 04windows.ppt

Microsoft Word - cg12-midterm-answer

<4D F736F F F696E74202D B30395FBAEDB7BBB5F95FBDBAC5D9BDC7B9F6C6DB5FB1D7B8B2C0DA2E >

Microsoft PowerPoint - Week03_DirectX9 프로그래밍의 기초.pptx

Microsoft Word - java19-1-midterm-answer.doc

Microsoft PowerPoint - Week04_Rendering Pipeline.pptx

1장 윈도우 프로그래밍 들어가기

Microsoft Word - cg07-final.doc

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

K&R2 Reference Manual 번역본

Microsoft PowerPoint - GameProgramming16-Camera.ppt

Microsoft Word - cg11-midterm-answer.doc

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - Week04_DirectX9 프로그래밍의 기초2.pptx

윈도우 프로그래밍

Microsoft Word - cg08-final-answer.doc

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

중간고사

Microsoft PowerPoint - lecture19-ch8.ppt

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

Microsoft Word - cg09-final-answer.doc

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

단국대학교멀티미디어공학그래픽스프로그래밍기말고사 (2012 년봄학기 ) 2012 년 6 월 12 일학과학번이름 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

슬라이드 1

Microsoft Word - cg09-midterm-answer.doc

PowerPoint 프레젠테이션

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

슬라이드 1

KNK_C_05_Pointers_Arrays_structures_summary_v02

중간고사

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

2002년 2학기 자료구조

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - IP11.pptx

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

untitled

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint 프레젠테이션

4.1 힘의모멘트 스칼라공식 4.1 힘의모멘트 스칼라공식 모멘트크기 (resultant moment) 2

Microsoft PowerPoint - ch07 - 포인터 pm0415

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

chap10.PDF

03장.스택.key

C프로-3장c03逞풚

Microsoft PowerPoint - NV40_Korea_KR_2.ppt

Data structure: Assignment 3 Seung-Hoon Na December 14, 2018 레드 블랙 트리 (Red-Black Tree) 1 본 절에서는 레드 블랙 트리를 2-3트리 또는 2-3-4트리 대한 동등한 자료구조로 보고, 두 가지 유형의 레

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드]

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

03_queue

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

UI TASK & KEY EVENT

untitled

Chap 6: Graphs

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

<4D F736F F D204B FC7C1B7CEB1D7B7A55FB4D9C0CCB7BAC6AE20B5E5B7CEBFEC20B3BBBFA120B4EBC8AD20BBF3C0DA20BBE7BFEBC7CFB1E25FB1E8B5BFC3B62E646F63>

PowerPoint Presentation

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (2/8) 다음과같이설정되어있는데, cam.pos[0] = 0.0, cam.pos[1] = 0.0, cam.pos[2] = 500.0; 이때의 cam.naxis[] 벡터의세원소값을기술하라. Figure

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/9) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 담당교수 : 임인성 답은연습지가아니라답안지에기술할것. 답안지공간이부족할경우, 답안지뒷면에기술하고, 해당답안지칸에그사실을명기할것. 연습지는수거하

Microsoft PowerPoint - 06-Body Data Class.pptx

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의

Microsoft PowerPoint - Chapter 6.ppt

02장.배열과 클래스

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

MFC 프로그래밍

슬라이드 1

슬라이드 1

윈도우즈 프로그래밍

<3136C2F720C6F7B7B3BFF8B0ED2E687770>

<4D F736F F F696E74202D20C1A63130B0AD202D20C1F6C7FCB0FA20C7CFB4C3C0C720B7BBB4F5B8B5>

디지털영상처리3

5장 MFC기반 다지기

Microsoft PowerPoint - 07-Data Manipulation.pptx

C 언어 프로그래밊 과제 풀이

1 Nov-03 CST MICROWAVE STUDIO Microstrip Parameter sweeping Tutorial Computer Simulation Technology

Microsoft PowerPoint - Practical performance_KR_3.ppt

chap 5: Trees

Chapter #01 Subject

설계란 무엇인가?

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

슬라이드 1

PowerPoint Template

7장

Week3

C++-¿Ïº®Çؼ³10Àå

C 프로그래밊 개요

Transcription:

중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 비디오게임의역사에대한질문입니다. 다음문제의답을아래의보기에서찾으시오 ( 보너스 extra 10점 ). Pong, Pac-Man, DOOM, DeathRace, Atari, Mortal Kombat, SONY, Wii, Spacewar, Ultima Online, Defender, Lineage, Computer Space, VCS 1) Ed Rottberg가개발한최초의 1인칭시점게임은 이다. 2) ID Software 사가개발한중독성높은 FPS (1인칭슈팅 ) 게임은 이다. 3) 전세계적으로 300,000 이상이판매된남녀모두에게인기있었던최초의비디오게임은 Namco사의 이다. 4) 모션센서기술이들어있는콘트롤러를사용하는게임기는 이다. 5) 1961년 MIT의 Steve Russell이최초의상호작용적인컴퓨터게임 을개발하였다. 6) 1972년 Nolan Bushnell이 Atari사를만들고간단한비디오테니스게임인 을개발하여큰성공을거둔다. 이게임최초의성공적인상업용게임이었다. 7) 1976년최초로비디어게임의폭력성에대한미디어의주목을받았으며결국은시장에서사라지게된이게임은 이다. 8) 1982년 VCS 판매가부진함을공고하여 Warner 주식이하루만에 32% 폭락한현상을두고 쇼크라부른다. 9) 1997년 Richard Garriott 과 Ralph Koster 가개발한일인용 RPG 게임은 이다. 10) 1998년한국에서온라인게임의산업화와사회적문제에영향을미친게임은 이다. 2. 다음은광선 (Ray: p(t) = p 0 + tu) 과평면 (Plane: ax + by + cz + d = 0) 의교차점을구하는 Direct3D 코드의일부이다. 빈칸을완성하시오. (10점) typedef struct _RAY { D3DXVECTOR3 p; D3DXVECTOR3 u; RAY; 1/10

BOOL RayPlaneIntersection (D3DXPLANE* plane, RAY line, D3DXVECTOR3* out) { FLOAT denom = if (denom == 0) float t = if (t < 0) *out = line.p + t*line.u; return true; void main() { D3DXPLANE plane(1, 0, 0, 1); RAY ray1, ray2; ray1.p = D3DXVECTOR3(1, 0, 0); ray1.u = D3DXVECTOR3(-1, -1, 0); ray2.p = D3DXVECTOR3(0, 0, -2); ray2.u = D3DXVECTOR3(1, 1, 1); ray3.p = D3DXVECTOR3(1, 1, 0); ray3.u = D3DXVECTOR3(1, 1, 1); D3DXVECTOR3 out1, out2; if (RayPlaneIntersection(&plane, ray1, &out1)) cout << "out1 = " << out1 << endl; // _ 출력결과 : if (RayPlaneIntersection(&plane, ray2, &out2)) cout << "out2 = " << out2 << endl; // _ 출력결과 : if (RayPlaneIntersection(&plane, ray3, &out3)) cout << "out3 = " << out3 << endl; // _ 출력결과 : 3. 다음은 d3dutility.cpp 프로그램의 InitD3D 함수를보여주고있다. 빈칸에설명을넣으시오 (10점). bool d3d::initd3d(hinstance hinstance,int width, int height, bool windowed, D3DDEVTYPE devicetype,idirect3ddevice9** device) { // Create the main application window. WNDCLASS wc; wc.style = CS_HREDRAW CS_VREDRAW; wc.lpfnwndproc = (WNDPROC)d3d::WndProc; wc.cbclsextra = 0; wc.cbwndextra = 0; wc.hinstance = hinstance; wc.hicon = LoadIcon(0, IDI_APPLICATION); wc.hcursor = LoadCursor(0, IDC_ARROW); wc.hbrbackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszmenuname = 0; wc.lpszclassname = "Direct3D9App"; if(!registerclass(&wc) ) { ::MessageBox(0, "RegisterClass() - FAILED", 0, 0); HWND hwnd = 0; 2/10

hwnd = ::CreateWindow("Direct3D9App", "Direct3D9App", WS_EX_TOPMOST, 0, 0, width, height, 0 /*parent hwnd*/, 0 /* menu */, hinstance, 0 /*extra*/); if(!hwnd ) { ::MessageBox(0, "CreateWindow() - FAILED", 0, 0); ::ShowWindow(hwnd, SW_SHOW); ::UpdateWindow(hwnd); // Init D3D HRESULT hr = 0; // Step 1: IDirect3D9* d3d9 = 0; d3d9 = Direct3DCreate9(D3D_SDK_VERSION); if(!d3d9 ) { ::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0); // Step 2: D3DCAPS9 caps; d3d9->getdevicecaps(d3dadapter_default, devicetype, &caps); int vp = 0; if( caps.devcaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; else vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; // Step 3: D3DPRESENT_PARAMETERS d3dpp; d3dpp.backbufferwidth = width; d3dpp.backbufferheight = height; d3dpp.backbufferformat = D3DFMT_A8R8G8B8; d3dpp.backbuffercount = 1; d3dpp.multisampletype = D3DMULTISAMPLE_NONE; d3dpp.multisamplequality = 0; d3dpp.swapeffect = D3DSWAPEFFECT_DISCARD; d3dpp.hdevicewindow = hwnd; d3dpp.windowed = windowed; d3dpp.enableautodepthstencil = true; d3dpp.autodepthstencilformat = D3DFMT_D24S8; d3dpp.flags = 0; d3dpp.fullscreen_refreshrateinhz = D3DPRESENT_RATE_DEFAULT; d3dpp.presentationinterval = D3DPRESENT_INTERVAL_IMMEDIATE; // Step 4: hr = d3d9->createdevice( D3DADAPTER_DEFAULT, // primary adapter devicetype, // device type hwnd, // window associated with device 3/10

vp, &d3dpp, device); // vertex processing // present parameters // return created device // Step 5: if( FAILED(hr) ) { d3dpp.autodepthstencilformat = D3DFMT_D16; hr = d3d9->createdevice( D3DADAPTER_DEFAULT, devicetype, hwnd, vp, &d3dpp, device); if( FAILED(hr) ) { d3d9->release(); // done with d3d9 object ::MessageBox(0, "CreateDevice() - FAILED", 0, 0); d3d9->release(); // done with d3d9 object return true; 4. 깊이버퍼링 (Depth buffering) 에대해설명하고, Direct3D에서사용할수있는깊이버퍼 (Depth buffer) 의 format을하나이상예로들어라 (10점). 4/10

5. 단위벡터회전축에 θ만큼회전 (rotate) 하는행렬 (matrix) 는아래의공식과같이간단히정의될수있다. 이공식을이용하여회전축 (1, 1, 0) 에 45도회전 (rotate) 하는 3x3 행렬 (matrix) R을유도하라. (10점) R = Icosθ + Symmetric (1 cosθ ) + Skew sinθ 2 ax Symmetric = axay axaz 0 az Skew = az 0 ay ax cos45 = sin 45 = 2 2 a a x y 2 ay a y a z a y a 0 x a xaz ayaz 2 a z 6. 다음은두픽셀값을여러가지방법으로블렌딩하는것을보여주고있다. 각블렌딩방식의최종값을식으로나타내라. 이때 srcpixel은 C s 로, destpixel은 C d 로표현한다 (20점). 먼저, 알파블렌딩으로나타나는최종색 (outputpixel) 을식으로표현하라. // 블렌딩을활성화한다. d3ddev->setrenderstate(d3drs_alphablendenable, TRUE); // 블렌딩설정방법 (Blending Operation) 을지정한다. // 즉, outputpixel = srcpixel*srcblendfactor + destpixel*dstblendfactor d3ddev->setrenderstate(d3drs_blendop, D3DBLENDOP_ADD); // 알파블렌딩팩터 (Source와 Destination Factor) 를지정한다. Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); outputpixel = 5/10

그리고, 덧셈블렌딩은 Source와 Destination Factor를다음과같이지정한다. 이블렌딩의최종색 (outputpixel) 을식으로표현하라. // 덧셈블렌딩팩터 (Source와 Destination Factor) 를지정한다. Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE); outputpixel = 그리고, 곱셈블렌딩은 Source와 Destination Factor를다음과같이지정한다. 이블렌딩의최종색 (outputpixel) 을식으로표현하라. // 곱셈블렌딩팩터 (Source와 Destination Factor) 를지정한다. Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR); outputpixel = 그리고, 원래이미지의보색 (inverted color) 블렌딩은 Source와 Destination Factor를다음과같이지정한다. 이블렌딩의최종색 (outputpixel) 을식으로표현하라. // 반전색블렌딩팩터 (Source와 Destination Factor) 를지정한다. Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_INVDESTCOLOR); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ZERO); outputpixel = 그리고, 알파블렌딩을설정한채로불투명한것을그리고싶을때 Source와 Destination Factor를다음과같이지정한다. 이블렌딩의최종색 (outputpixel) 을식으로표현하라. // 곱셈블렌딩팩터 (Source와 Destination Factor) 를지정한다. Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE); Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ZERO); outputpixel = 7. 다음은 litpyramid 예제프로그램의일부를보여주고있다. 다음프로그램의함수들이렌더링파이프라인상에어느곳에관련있는지아래빈칸에찾아넣어라. (20점) 6/10

--litpyramid.cpp IDirect3DDevice9* Device = 0; const int Width = 640; const int Height = 480; IDirect3DVertexBuffer9* Pyramid = 0; struct Vertex { Vertex(){ Vertex(float x, float y, float z, float nx, float ny, float nz) { _x = x; _y = y; _z = z; _nx = nx; _ny = ny; _nz = nz; float _x, _y, _z; float _nx, _ny, _nz; static const DWORD FVF; ; const DWORD Vertex::FVF = D3DFVF_XYZ D3DFVF_NORMAL; bool Setup() { Device->SetRenderState(D3DRS_LIGHTING, true); Device->CreateVertexBuffer( 12 * sizeof(vertex), D3DUSAGE_WRITEONLY, Vertex::FVF, D3DPOOL_MANAGED, &Pyramid, 0); Vertex* v; Pyramid->Lock(0, 0, (void**)&v, 0); // front, left, right, back face 중간생략 Pyramid->Unlock(); D3DMATERIAL9 mtrl; mtrl.ambient = d3d::white; mtrl.diffuse = d3d::white; mtrl.specular = d3d::white; mtrl.emissive = d3d::black; mtrl.power = 5.0f; Device->SetMaterial(&mtrl); D3DLIGHT9 dir; ::ZeroMemory(&dir, sizeof(dir)); dir.type = D3DLIGHT_DIRECTIONAL; dir.diffuse = d3d::white; dir.specular = d3d::white * 0.3f; dir.ambient = d3d::white * 0.6f; dir.direction = D3DXVECTOR3(1.0f, 0.0f, 0.0f); Device->SetLight(0, &dir); Device->LightEnable(0, true); Device->SetRenderState(D3DRS_NORMALIZENORMALS, true); Device->SetRenderState(D3DRS_SPECULARENABLE, true); D3DXVECTOR3 pos(0.0f, 1.0f, -3.0f); D3DXVECTOR3 target(0.0f, 0.0f, 0.0f); D3DXVECTOR3 up(0.0f, 1.0f, 0.0f); 7/10

D3DXMATRIX V; D3DXMatrixLookAtLH(&V, &pos, &target, &up); Device->SetTransform(D3DTS_VIEW, &V); D3DXMATRIX proj; D3DXMatrixPerspectiveFovLH( &proj, D3DX_PI * 0.5f, // 90 - degree (float)width / (float)height, 1.0f, 1000.0f); Device->SetTransform(D3DTS_PROJECTION, &proj); return true; bool Display(float timedelta) { if( Device ) { D3DXMATRIX yrot; static float y = 0.0f; D3DXMatrixRotationY(&yRot, y); y += timedelta; if( y >= 6.28f ) y = 0.0f; Device->SetTransform(D3DTS_WORLD, &yrot); Device->Clear(0, 0, D3DCLEAR_TARGET D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0); Device->BeginScene(); Device->SetStreamSource(0, Pyramid, 0, sizeof(vertex)); Device->SetFVF(Vertex::FVF); Device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 4); Device->EndScene(); Device->Present(0, 0, 0, 0); return true; 버텍스 / 인덱스버퍼 (Vertex/Index Buffer) 드로잉 (Drawing) 함수 DrawPrimitive 조명 (Lighting) & 재질 (Material) 함수 Device->SetRenderState(D3DRS_LIGHTING, true); 모델링변환 (world transformation) 8/10

뷰잉변환 (view transformation) 투영변환 (projection transformation) 8. D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane) 함수는반사행렬을만들어내는함수이다. 점 P(x,y,z) 가표준좌표평면인 xy-plane, xz-plane, yz-plane에반사되어진점 P 을각각그림으로나타내고그값을계산하라. (10점). 9. 다음아래의그림과같은텍스쳐매핑을하기위해텍스쳐좌표를계산하라. 빈칸을채우시오. (10점). bool Setup() { Device->CreateVertexBuffer(3*sizeof(Vertex), D3DUSAGE_WRITEONLY, Vertex::FVF, D3DPOOL_MANAGED, &Tri, 0); Vertex* v; Tri->Lock(0, 0, (void**)&v, 0); v[0] = Vertex(-1,-1, 1, 0, 0, -1,, ); v[1] = Vertex( 0, 1, 1, 0, 0, -1,, ); v[2] = Vertex( 1,-1, 1, 0, 0, -1,, ); Tri->Unlock(); D3DXCreateTextureFromFile(Device, dx5_logo.bmp, & Tex); Device->SetTexture(0, Tex); Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT); 9/10

. 10/10