게임프로그래밍 전문가 필기 2023년 1회 A형 개념정리
게임 프로그래밍 방법론
문제 1.
문제 해설: C++ 생성자
문제 1.
문제 해설:
- 생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 함수다.
- 생성자 이름은 클래스와 동일해야 하며, 리턴 타입이 없다.
- 접근 지정자는 public, protected, private 모두 가능합니다. 일반적으로 public으로 쓰이지만 반드시 그런 것은 아니다.
정답: ②
문제 2. 오버로딩과 오버라이딩
문제 해설:
- 오버라이딩(Overriding): 부모 클래스의 함수를 자식 클래스에서 다시 정의하는 것 → 함수 이름, 매개변수, 리턴 타입까지 모두 동일해야 함.
- 오버로딩(Overloading): 같은 이름의 함수를 매개변수가 다르게 여러 개 정의하는 것 → 리턴 타입만 다르고 매개변수가 같다면 오버로딩이 안됨.
정답: ④
문제 3. 컴파일 에러
문제 해설:
C 언어에서 식별자 이름 규칙:
- 문자로 시작해야 함
- 숫자로 시작하면 안 됨
- 공백 포함 불가
- 예약어 금지
- 밑줄 _로 시작 가능
① 1Text: 숫자로 시작 → 에러
② short Num, int Num2: 서로 다른 타입은 한 줄에서 선언할 수 없음.
④ int my num;: 공백 포함 → 에러
③ char _float; → 가능 (예약어 float과는 다름)
정답: ③
문제 4. 열거형
문제 해설:
- C 언어 열거형(enum)은 처음 항목부터 0부터 시작.
- 중간에 값을 지정하면 그다음부터 1씩 증가.
정답: ②
문제 5. 출력 결과
문제 해설:
정답: ①
문제 6. 출력 결과
문제 해설:
- char는 기본적으로 signed char로 간주되며, -128 ~ 127 범위의 값을 가짐.
- 128은 signed char로 저장하면 오버플로우가 발생하여 음수로 해석.
- 128의 이진수는 10000000, 이는 2의 보수 표현으로 -128.
정답: ③
문제 7. 출력 결과
문제 해설:
pTemp = a; 여기서 pTemp는 nval1의 주소를 가리킴.
a=b; a는 nval2의 주소를 가리킴.
b = pTemp; 에서 b는 nVal1의 주소를 가리킴
*pTemp = * b;에서 pTemp는 다시 nVal 1의 주소를 가리킴
포인터에서 같은 주소를 가리키면 변화가 없음
따라서 1, 10이 출력됨.
정답: ②
문제 8. 난수
문제 해설:
- srand()는 난수의 초기 시드(seed)를 설정하는 함수입니다.
- 같은 시드 값을 넣으면 rand()의 결과는 항상 동일한 순서로 나옴
- %d는 정수 출력이므로 char이든 int든 출력엔 문제없음
- rand()%1000은 0~999 사이의 값.
①: rand()는 정수 반환. char에도 담을 수 있음 (단, 데이터 손실 가능)
②: %1000 결과는 0~999
③: %d는 정수 포맷으로 char에도 사용 가능.
정답: ④
문제 9. 메모리 할당
문제 해설:
- malloc()은 실패 시 NULL을 반환합니다.
- 이때 strcpy() 같은 함수로 접근하면 Segmentation Fault (에러) 발생
①: 공백 문자는 문자열로 복사됨. 문제없음.
②: char*로 형변환하는 것은 C에서 일반적인 사용.
④: malloc() 후 반드시 free()로 해제해야 함 → 안 하면 메모리 누수 발생.
정답: ③
문제 10. 자료형
문제 해설:
- 구조체(struct): 여러 멤버가 서로 다른 메모리 공간을 차지
- 공용체(union): 모든 멤버가 동일한 메모리 공간을 공유
- 열거형(enum): 정수 상수 그룹화
- 포인터(pointer): 주소값 저장 변수
정답: ④
문제 11. 블록체인
문제 해설:
- NFT (Non-Fungible Token): 대체 불가능한 토큰
- 각각 고유한 값을 가지며 복제, 교환 불가
- 블록체인 기반으로 디지털 자산(게임 아이템, 이미지 등)을 소유권 있게 기록
① NPT: 의미 없음
② NFC: 근거리 무선통신 기술
④ NNF: 존재하지 않는 약어
정답: ③
문제 12. 프로그래밍 언어
문제 해설:
- Rust: 시스템 프로그래밍 언어
- 메모리 안전성 + 고성능 + 제로 코스트 추상화
- C/C++ 보다 안전하면서도 빠름
① Basic: 초보자용 언어
② Pascal: 교육용 고전 언어
③ Zig: 성능 좋은 C 대체 언어지만 설명과 다름
정답: ④
문제 13. 직렬화 방식
문제 해설:
- Protocol Buffer (protobuf): Google의 직렬화 라이브러리
- 데이터를 바이너리 포맷으로 압축하여 저장
- JSON이나 XML보다 더 빠르고 크기 작음
② Fast Buffers: 존재하지 않음
③ Message Pack: 유사하지만 설명에 "Google 개발"이 없음
④ Bson: MongoDB의 이진 JSON, 속도와 크기 설명과 다름
정답: ①
문제 14. SQL
문제 해설:
- ORDER BY는 정렬할 때 사용
- DESC는 내림차순 (큰 → 작은)
- ASC는 오름차순 (작은 → 큰)
- NUMBER: 데이터 타입
- COUNT: 집계 함수
정답: ②
문제 15. 스택 메모리
문제 해설:
- 스택(Stack): LIFO (Last In First Out, 후입선출)
- 나중에 들어온 것이 먼저 나감
- 함수 호출 스택: 나중에 호출된 함수가 먼저 종료됨
- FIFO는 큐(Queue)의 방식
정답: ④
문제 16. 메모리 접근 시간
문제 해설:
- CPU에서 가장 가까운 저장소는 레지스터
- CPU 내부에 존재 → 접근 속도 가장 빠름 (몇 나노초 단위)
- 그다음은 캐시 > RAM > SSD/HDD 순
정답: ③
문제 17. 정적 라이브러리
문제 해설:
- 정적 라이브러리는 각 프로그램에 복사되어 포함됨
- 빌드시 코드 삽입
- 실행파일에 통합
- 실행 시 별도 라이브러리 불필요
- 여러 프로그램이 정적 라이브러리를 공유하지 않음
- 따라서 메모리 절약 효과 없음
정답: ④
문제 18. 스레드
문제 해설:
- 스레드는 프로세스 내 경량 작업 단위
- 스레드 간 컨텍스트 스위칭은 동일 주소 공간을 쓰므로 오버헤드 적음
②: 스위칭 자주 하면 오히려 캐시 미스 등으로 비효율
③: 논리 코어 수 이상도 생성 가능, 단 병렬 실행은 제한
④: 무조건 CPU 효율 증가하지 않음. 과다 생성 시 성능 저하
정답: ①
문제 19. UDP
문제 해설:
- UDP는 비연결성 프로토콜
- 순서 보장 안됨 → 수신 순서 뒤바뀔 수 있음
- 대신 속도 빠르고 지연 적음
① UDP는 메시지 단위 전송으로 경계 보존
② TCP보다 빠름 (오버헤드 적음)
③ 실시간 게임, 스트리밍 등 지연 민감한 용도에 적합
정답: ④
문제 20.
문제 해설:
OSI 7 계층:
- 물리
- 데이터링크
- 네트워크
- 전송 계층 (TCP/UDP)
- 세션
- 표현
- 응용
계층예시 프로토콜
7 응용 | HTTP, FTP, SMTP |
4 전송 | TCP, UDP |
3 네트워크 | IP, ICMP, IGMP |
정답: ③
문제 21. 리틀 엔디안 방식
문제 해설:
- 리틀 엔디안(Little Endian):
- 가장 하위 바이트를 가장 낮은 주소에 저장
- 즉, 저장 순서가 반대가 됨
- 주어진 순서:
- 메모리[0] = 0x01 → 가장 하위
- 메모리[1] = 0x02
- 메모리[2] = 0x03
- 메모리[3] = 0x04 → 가장 상위 바이트
→ 합치면: 0x04030201
정답: ④
문제 22. 헤더파일
문제 해설:
- C++에서는 헤더파일 확장자는 .h가 일반적이지만 필수 아님
- 예: <iostream> 같은 시스템 헤더는 .h 없음
- C++11 이후는 .hpp, .inl 등 다양한 형식 허용
정답: ③
문제 23. 2진수 표현
문제 해설:
- +7 = 00000111
- → 1의 보수: 11111000
- → +1 = 11111001 ← 이것이 -7의 2의 보수 표현
정답: ④
문제 24. 출력 결과
문제 해설:
arr[][] 일 때 순서대로 행, 열.
- arr[0][1] → 2
- arr[1][1] → 5
- arr[2][0] → 7
정답: ①
문제 25. 출력 결과
문제 해설:
- p는 A 타입 포인터, 하지만 &b로 B 객체를 가리킴
- p->Set("_") → A의 Set() 호출됨.
→ val = "A_" - p->Get() → virtual 함수 → B의 Get() 호출됨
→ val = "A_", return "A_" + "B" → "A_B"
정답: ②
게임 알고리즘과 설계
문제 1. 선형보간
문제 해설:
기본적인 Lerp함수
Lerp(a, b, t) = (1 - t) * a + t * b
문제에선 3구간에 나눠서 각 구간 별로
0~ 0.5 , 0.5~0.75로 구간이 나누어 지는데 여기서 기본적인 Lerp함수를 적용하려면
구간 길이가 0.5이면 t = 2t가 되고
구간 길이가 0.24이면 t = 4t로 계산.
2a(0.5 - t) + 2bt
4b(0.75 - t) + 4c(t - 0.5)
4c(1 - t) + 4d(t - 0.75)
기본적인 Lerp 함수 범위가 0~1인 것을 이용해서 범위만큼 적용하면 됨.
정답: ③
문제 2. 시간 복잡도
문제 해설:
성능 순서대로 표현되어 있음
그래프 축:
- X축: 입력 크기 (n)
- Y축: 실행 시간
보라색 선형 그래프 → O(n)
주황색 위로 휘는 곡선 → O(n²)
빨간색 평평한 선 → O(1)
점선은 약간 증가하는 완만한 곡선 → O(log n)
정답: ③
문제 3.이중 연결 리스트
문제 해설:
이중 연결 리스트에서 노드 삭제 시 연결 재구성 순서:
- 이전 노드 → 다음 노드 연결
- 다음 노드 → 이전 노드 연결
문제 4. 자료구조
문제 해설:
- DFS (Depth-First Search) = 깊이 우선 탐색
- 가장 마지막에 추가된 노드를 먼저 처리 → LIFO (Stack) 구조 적합
- BFS(넓이 우선 탐색)는 큐 사용
정답: ①
문제 5. 정렬
문제 해설:
분할과 병합을 통해 정렬을 하고 있어 병합정렬의 예시이다.
정답: ②
문제 6. 인접리스트
문제 해설:
간선이 가리키는 방향이 리스트에 표현되어 있는지 찾으면 됨.
정답: ④
문제 7. B-tree
문제 해설:
- B-Tree는 균형 잡힌 다진 트리 (M-진 트리)
- 이진트리의 하위 개념은 아님 (B-Tree는 2개 이상의 자식을 가질 수 있음)
- AVL, Red-Black은 이진 탐색 트리, B-Tree는 다진 트리
정답: ②
문제 8. 시간 복잡도
문제 해설:
- 외부 루프: n번 반복
- 내부 조건 분기:
- i > j일 때: O(1)
- i <= j일 때: 내부 루프 → O(n)
최악의 경우: i ≤ j가 n에 비례 → 전체 O(n²)
- 중첩 루프의 시간복잡도는 곱으로 계산
- 조건문 내에 루프가 있다면 조건에 따라 최악 케이스 기준으로 분석
정답: ④
문제 9. 컴포넌트
문제 해설:
- Unity나 ECS 패턴에서 컴포넌트는 기능 단위로 분리
- 충돌 반응은 일반적으로 Rigidbody / Collider / Script 컴포넌트에서 처리
- 캡슐은 형태일 뿐, 역할 아님
정답: ④
문제 10. 자료구조
문제 해설:
- 배열에서 앞뒤로 데이터가 회전하면서 추가/삭제 → 순환 큐 구조
- 순환 큐는:
- 고정된 크기의 배열 사용
- front, rear 포인터 회전하며 관리
정답: ③
문제 11. 자료구조
문제 해설:
자료구조 삽입/삭제 검색 속도구조
스택(Stack) | LIFO | 제한적 | 선형 구조 |
큐(Queue) | FIFO | 제한적 | 선형 구조 |
연결리스트 | 중간 삽입 가능 | O(n) | 선형 구조 |
정답: ②
문제 12. 자료구조
문제 해설:
left, right라는 포인터가 존재 → 이진트리 노드 구조
② 쿼드 트리: 4개의 자식 포인터 필요
③ 옥트리: 8개의 자식 필요
④ 연결 리스트: 보통 next 하나만 존재
정답: ①
문제 13. 해시 테이블
문제 해설:
- 해시 함수가 느리면 오히려 전체 성능 저하
- 해시의 이점은 빠른 해시 계산에 있음
정답: ④
문제 14.
문제 해설:
이진 검색(Binary Search)에서는
- x < arr[mid]이면 → 왼쪽 절반으로 이동해야 하므로
→ r = mid - 1 이어야 함
정답: ②
문제 15. 균형탐색트리
문제 해설:
- 균형 탐색 트리의 목적은 탐색 속도 유지 (O(log n)).
- 높이 불균형으로 인한 최악의 O(n) 성능을 O(log n)*로 보장하려는 것이 핵심.
정답: ①
문제 16. 그래프
문제 해설:
- 내비게이션 그래프 (Navigation Graph)는
- 게임 내에서 AI 에이전트가 갈 수 있는 위치와 그 사이 경로를 정의한 그래프
- 경로 탐색 알고리즘 (A*, Dijkstra 등)에서 활용
① 최소 신장 트리는 간선 가중치의 합이 가장 작은 트리임
② 가중치 그래프는 순환 여부와 무관
③ 프림 알고리즘은 최소 신장트리를 만드는 알고리즘으로 설명과 맞지않음.
정답: ④
문제 17. 전위 순회
문제 해설:
전위 순회 (Pre-order):
Root → Left → Right
정답: ③
문제 18. 정렬 알고리즘
문제 해설:
Divide → Sort left/right → Merge 구조 → 병합 정렬의 전형적 구조
정답: ③
문제 19. A* 알고리즘
문제 해설:
노드 F의 평가값 f(F) = g(F) + h(F)를 구해야 함
- g(F) : A에서 F까지 실제 거리 (누적된 경로 비용)
- h(F) : F에서 H까지의 휴리스틱 추정값 (문제에서 제공됨)
이때 A - C 비용은 8, C - F 는 20 이니 비용은 28, 휴리스틱은 50이니 50 +28 = 78
정답: ②
문제 20. 문자열 매칭 알고리즘
문제 해설:
- Boyer-Moore 알고리즘:
- 뒤에서부터 비교 시작
- 불일치 시 스킵 테이블 기반으로 문자열 전체 이동 가능성
- 가장 빠른 문자열 탐색 알고리즘 중 하나
① 브루트 포스: 앞에서부터 비교, 가장 비효율적
② 라빈-카프: 해시 기반
③ KMP: 실패함수 기반, 앞에서부터 비교
정답: ④
문제 21. 힙
문제 해설:
- 힙은 완전 이진트리 구조의 우선순위 큐
- 최상위 노드(루트)를 삭제하면:
- 마지막 노드를 루트로 이동
- 아래로 비교하며 자식과 스왑 (heapify)
정답: ③
문제 22. 이진탐색
문제 해설:
처음엔 19 기준으로 분할해서 왼쪽은 기준보다 작은수, 오른쪽은 큰 수로 나누면 그림 그대로 되는데
48은 19보다 크니 기준 오른쪽 수의 집합에서 다시 기준을 잡으면 48이 기준이어서 찾음 = 2회
26도 19를 기준으로 오른쪽에 있는데 여기서 다시 48 기준으로 나누면 26은 왼쪽에 있으므로 3회.
정답: ①
문제 23. 그래프
문제 해설:
DFS는 깊이 우선 → 한 방향으로 끝까지 탐색
정답: ①
문제 24. 몬테카를로 트리탐색
문제 해설:
- MCTS는 바둑, 체스, 알파고 등에서 사용
- 랜덤 시뮬레이션 기반의 트리 탐색 방식
승률이 높은 행동을 선택하여 성공 확률을 높이도록 학습
정답: ①
문제 25. 삽입정렬 알고리즘
문제 해설:
삽입 정렬은:
- 앞에서부터 정렬된 데이터를 유지하며
- 삽입할 위치를 찾아 데이터를 뒤로 이동
- → data[j+1] = data[j]; 로 한 칸씩 밀어냄
정답: ②
게임 콘텐츠 프로그래밍
문제 1. 포스트 프로세싱
문제 해설:
- LUT(Color Look-Up Table)은 특정 색상을 다른 색상으로 변환하기 위한 표
- 게임에서는 LUT를 이용해 특정 분위기나 테마에 맞는 색감으로 전체 씬을 조정
→ 이를 Color Correction 또는 Color Grading이라 함
① Morph: 형태 변화 관련 개념
② Blur: 흐림 효과
④ Light Map: 조명 정보를 텍스처에 미리 구운 것
정답: ③
문제 2. 이미지 처리 기법
문제 해설:
- Anti-Aliasing(앤티 앨리어싱): 계단 현상(jaggies)을 줄이기 위해 픽셀 경계에 중간 색상을 삽입하는 그래픽 기법
- 텍스처나 폴리곤 경계에서 부드러운 시각 효과 제공
② Brightness: 밝기 조절
③ SSAO: 그림자 관련
④ HDR: 고명암대비 조절
정답: ①
문제 3. 연출 기법
문제 해설:
- DOF는 카메라 초점 깊이를 시뮬레이션
- 초점이 맞는 거리 외의 객체는 흐려 보이게 처리 → 시선 유도 효과
① Contrast: 명암 대비
② Ray Tracing: 광선 추적 렌더링
④ Tone Mapping: HDR 색 공간 → SDR 조정
정답: ③
문제 4. 기법
문제 해설:
- Perlin Noise는 자연스럽고 연속적인 난수 형태
→ 땅 울퉁불퉁함, 구름, 파도 같은 자연 요소 구현 - 단순 난수(Random Noise)와 달리 부드러운 패턴을 생성
① Scale: 스케일 조절
② Frequency: 주파수
③ Amplitude: 진폭
정답: ④
문제 5. 벡터 연산
문제 해설:
- 외적 (Cross Product): 두 벡터의 평면에 수직인 벡터를 계산
→ 물리 기반 렌더링에서 법선 벡터 계산, 회전 축 등으로 사용
① 덧셈: 단순 위치 이동
② 정규화: 크기를 1로 만듦
③ 내적: 각도 계산, 확산광 등에 사용
정답: ④
문제 6. 벡터 연산
문제 해설:
- 확산광 = 광원 방향벡터(L)와 표면의 법선 벡터(N) 의 내적 결과
- diffuse = max(0, dot(N, L))
- 두 벡터가 가까운 방향일수록 값이 커지고, 직각 또는 반대면 0이거나 음수
② 외적: 수직 벡터 생성 (법선 등)
③ 정규화: 벡터 길이 1로 변환
④ 덧셈: 방향 이동 계산에 사용
정답: ①
문제 7. 반사광 계산 방식
문제 해설:
- PBS 또는 PBR(Physically Based Rendering):
- 현실의 빛 반사 특성을 수학적으로 모사
- 재질의 roughness, metalness 값 등을 사용
① Phong: 고전적인 반사광 모델 (스펙큘러 중심)
② Stylized: 만화풍 쉐이딩 등 비현실적 스타일
④ Flat Shading: 조명 연산 없이 단색 면 처리
정답: ③
문제 8. 렌더링 기법
문제 해설:
- 절두체(Frustum): 카메라 시야를 6개의 평면으로 자른 입체 영역
- Frustum Culling: 절두체 외부에 있는 오브젝트는 렌더링 제외
→ 성능 최적화
① 후면 컬링: 뒷면(Backface)을 제거
③ 상하체 분리: 애니메이션 용어
④ 키프레임 애니메이션: 애니메이션 보간 기술
정답: ②
문제 9. 기법
문제 해설:
- BSP (Binary Space Partitioning) Tree:
- 3D 공간을 **한 면(Plane)**을 기준으로 앞/뒤로 나눔
- 렌더링 순서 결정, 충돌 검사, 라이트맵 최적화 등에서 사용
② Kd Tree: 축 기준 (X/Y/Z)으로 공간 분할
③ Quad Tree: 2D 공간을 4분할
④ Octree: 3D 공간을 8분할
정답: ①
문제 10. 법선 벡터 방정식
문제 해설:
ax + by + cz + d = 0
- 평면 방정식:
- a, b, c는 법선 벡터(normal vector)의 성분
- (x, y, z)는 평면 위의 점
- d는 평면의 오프셋 (원점에서의 거리 기반)
정답: ③
문제 11. 3D 그래픽 처리
문제 해설:
같은 재질/머티리얼/셰이더를 사용하는 오브젝트는 한 번에 묶어 처리해야 → 드로우 콜 수 감소 → 렌더링 성능 향상
정답: ④
문제 12. 텍스처
문제 해설:
- Normal Map은 텍스처에 RGB 값으로 픽셀 단위의 법선 벡터 방향을 저장
- 조명 연산 시, 마치 고해상도 표면처럼 보이도록 만듦
→ 하이폴리 디테일을 로우폴리로 재현
① 큐브맵: 반사, 환경맵용
② 빌보드: 2D 텍스처를 항상 카메라 방향으로
④ 글로우맵: 빛나는 영역 정의용
정답: ③
문제 13. 법선 벡터
문제 해설:
- 두 벡터의 외적(Cross Product) 으로 수직 방향 → 즉, 법선 벡터 구함
- 내적(Dot Product)은 각도나 평행 여부 판단용
정답: ②
문제 14. 3차원 공간 내 물체 선택
문제 해설:
- 마우스 클릭 → 스크린 좌표 → 월드 좌표로 변환 시
- 뷰(View), 프로젝션(Projection), 카메라 행렬 사용
- 월드 행렬은 오브젝트 자체의 변환 정보이지, Ray 생성 시 직접 사용하지 않음
정답: ②
문제 15. 플리핑
문제 해설:
- 더블 버퍼링(Double Buffering):
- 후면 버퍼에 먼저 그린 뒤 → 전면 버퍼와 교체
- 그리는 중간 상태를 사용자에게 보여주지 않음
→ 화면 찢어짐(tearing), 깜빡임(flickering) 방지
정답: ①
문제 16. 1인칭 구현
문제 해설:
- 지역 좌표계(Local Position)는 회전과 스케일이 적용되기 전 상태가 아니라,
- 계층 구조에 따라 전체 Transform (회전·스케일 포함)을 반영해서 세계 좌표를 계산.
정확한 계산 => 월드 좌표(world position) = 부모의 월드 행렬 × 자식의 지역 좌표
즉, 단순히 위치값끼리 더하는 것만으로는 올바른 월드 위치 계산이 되지 않습니다,
회전이나 스케일이 포함되어 있다면 더하기로는 안 됩니다.
문제 17. 폭발효과
문제 해설:
- 폭발, 연기, 불꽃, 먼지 같은 효과는 대부분 파티클 시스템으로 구현.
- 파티클은 다수의 2D 텍스처(스프라이트)를 공간에 흩뿌려서 마치 3D 효과처럼 보이게 함.
- 특히 "시점에 따라 회전되지 않고 x, y, z 방향 어디서나 보인다"는 건
→ Billboard(항상 카메라 정면을 바라보는 방식)를 사용하는 파티클 시스템의 대표적 특징.
포그 - 전체적인 안개 효과를 내는 환경 처리 방식.
역기구학(IK): 캐릭터 관절 제어를 위한 애니메이션 기법.
엠비언트 오클루전 : 빛이 잘 안 드는 구석진 영역을 어둡게 표현해 입체감을 주는 조명 기법.
정답: ①
문제 18. 벡터
문제 해설:
- 폴리곤의 표면에 수직인 벡터 → 법선 벡터
- 정점 벡터는 보통 정점의 위치 정보
- 탄젠트 벡터: 표면 방향, 수직 아님
- 시선 벡터: 카메라 방향 벡터
정답: ②
문제 19. 평균 속도 구하기
문제 해설:
- 평균속도 = 이동 거리 / 이동 시간
- 여기서:
- d: 거리
- a: A지점 통과 시간
- b: B지점 통과 시간
→ 걸린 시간 = b - a
정답: ②
문제 20. 텍스처 매핑
문제 해설:
UV 좌표는 메시(Geometry)의 정점 정보에 저장됩니다
- 텍스처 이미지 자체는 단순한 비트맵일 뿐, 그 안에 좌표 정보는 없음
정답: ④
문제 21. 캐릭터 애니메이션
문제 해설:
정점 색상도 정점 셰이더에서 처리가 가능하다.
정답: ④
문제 22. 스키닝
문제 해설:
정점이 하나 이상의 뼈대(Bone)에 영향을 받아 움직이도록 하는 기법
-
- 각 정점은 여러 본(Bone)에 의해 영향을 받으며, 그 정도를 가중치(weight)로 표현
- 이 가중치는 숫자로 표현되며, 0.0 ~ 1.0 사이의 값을 가짐
정답: ③
문제 23. 카메라 변환
문제 해설:
카메라 변환과 투영 변환을 거쳤다는 의미는 NDC 좌표계를 의미.
NDC 좌표 범위
- API X / Y 범위 Z 범위
OpenGL –1 ~ 1 –1 ~ 1 DirectX –1 ~ 1 0 ~ 1
정답: ①
문제 24.게임 수학
문제 해설:
운동 공식 (뉴턴 역학)은 시간에 따른 속도, 위치의 변화율을 다룸
→ 물체의 가속도, 속도 계산 = 미분 필수
① 각도 계산 → 삼각함수
② 삼각형 면적 계산 → 기하학
④ 평면 방정식 → 벡터 연산, 미분 아님
미분 활용 | 힘 → 가속도 → 속도 → 위치 |
적분 활용 | 속도 → 거리 계산 등에 사용 |
정답: ③
문제 25. 환경맵 구현
문제 해설:
- 환경맵 반사는 보통 Cube Map으로 구현
- 반사벡터 방향을 기준으로 cube map의 6면 중 하나의 픽셀 값을 샘플링
① Volume Texture: 3D 내부 구조 표현
③ Normal Map: 표면 요철 표현용
④ Occlusion Texture: 음영 정보 저장용
정답: ②