자격증

게임 프로그래밍 전문가 필기 2023년 2회 A형 개념 정리

hungry- 2025. 4. 29. 18:32

게임프로그래밍 방법론

 

문제 1. 변수의 크기

문제 해설:

 

  • int: 4byte → 약 ±21억까지 저장 가능 
  • short: 2byte → -32,768 ~ 32,767 저장 가능 
  • unsigned char: 1byte → 0 ~ 255만 표현 가능. 
  • unsigned char를 출력 시 255까지만 가능하기 때문에 3000 입력 시 오버플로우 발생 3000%4 값인  184가 나옴.

정답: ④

 

 

문제 2. 오버 로딩

문제 해설:

 

  • func(int x) ← 정확히 하나의 int만 받음
  • func(int x, int y=1) ← int 2개를 받는데, 두 번째는 디폴트값이 있어서 int 1개만 줘도 호출 가능
  • 따라서 s.func(10) 호출 시  두 개 다 가능한 상황이 되어서 컴파일러에서 모호성 오류를 발생시킴.

정답: ①

 

 

 

문제 3. 포인터 변수의 정의

문제 해설:

포인터(pointer)란 다른 변수의 메모리 주소를 저장하는 변수입니다.

정답: ②

 

문제 4. 포인터 변수

 

문제 해설:

ptr은 x의 주소를 가리키는데

*ptr = 20  → x의 값을 20으로 변경

따라서 x와 *ptr 모두 20이 된다.

정답: ④

 

문제 5. 메모리 동적 할당

문제 해설:

 

  • malloc(n * sizeof(int)): 5개 공간을 할당.
  • 그런데 for (i=0; i <=n; i++)는 6번 반복. (i=0,1,2,3,4,5)

정답: ②

 

 

문제 6. 함수를 만들 때 지켜야 할 규칙

 

문제 해설:

  • C언어 함수는 반드시 리턴타입을 지정해야 한다.
  • 생략하면 컴파일러가 기본 int형으로 간주하는 구식 문법이 존재했지만, 현재는 오류나 경고 발생.
  • 공백과 특수문자는 사용할 수 없음.
  • C언어는 대/소문사를 구분한다 (섞어서 사용 가능.)
  • 선언부는 나중에 정의해도 된다.

 

문제 7. 코드 실행 결과

 

문제 해설:

 

  • CopyInt1(&Value2, &Value1);
    • 포인터로 주소를 넘겼기 때문에 Value2 = Value1 = 11 된다.
  • CopyInt2(Value3, Value1);
    • 값을 복사했을 뿐, 실제 Value3 변수에 적용되지 않는다. (Call by Value)

정답: ③

 

 

문제 8. C++ 클래스 생성

문제 해설:

  • ① 일반적으로 클래스 선언(class declaration)은. h 파일에, 클래스 정의(구현부)는. cpp 파일에 작성한다.
  • 좋은 코드 관리 관례이자 컴파일 속도 최적화에도 좋다.
  • ② struct도 C++에서는 함수 가질 수 있음 (C랑 다름)
  • ③ 생성자, 소멸자 모두 생략 가능 (필요시 자동 생성됨)
  • ④ 소멸자 역시 생략 가능 (디폴트 소멸자가 생성됨)

정답: ①

 

문제 9. 코드 결과물

 

문제 해설:

  • 기본 생성자 호출 → 기본값 50/Wood
  • 인자 2개 생성자 호출 → 넘긴 값(60/Metal) 적용

정답: ④

 

 

문제 10. 컴파일 에러 발생 부분

문제 해설:

myYear는 접근제한자가 선언하지 않아 기본인 private로 설정되어 있는데 

private 멤버는 외부(main 함수 등)에서 직접 접근할 수 없음.

따라서 ㄹ,ㅅ 에서 오류가 발생.

정답: ④

 

문제 11. 빈칸에 알맞는 내용

문제 해설:

  • JSON(JavaScript Object Notation)
    • 가볍고 텍스트 기반의 데이터 교환 형식.
    • 이름-값 쌍 구조 ({ "key" : "value" }).
    • 여러 언어(C++, C#, Python 등)에서 사용.
  • ① XML: <key>value</key> 형태, 괄호형 구조라 문제 지문과 다름.
  • ② YAML: JSON보다 더 가벼운 형식이지만 {} 형태는 아님 (들여 쓰기 기반).
  • ④ INI: key=value 형태로 섹션별 구성됨.

정답: ③

 

문제 12. 프로그래밍 언어

문제 해설:

 

  • ① JavaScript: 웹용 언어, MS 개발 아님.
  • ② C#은 마이크로소프트(MS)가 개발.
  • Unity 엔진 스크립트 언어로도 널리 사용.
  • 문법이 Java와 매우 유사.
  • 크로스 플랫폼 (.NET Core 이후 지원 확대).
  • C++ 보다 배우기 쉬움.
  • ③ Python: 쉽지만, MS 개발 아님.
  • ④ Visual Basic: MS 개발했지만 게임엔진 스크립트로 사용되지 않음.

정답: ②

 

 

문제 13. 프로그래밍 설명

문제 해설:

 

  • 64비트 환경에서도 int는 여전히 4바이트.
  • 포인터(pointer)는 64비트 환경에서는 8바이트가 맞음.
  • 기본적으로 64비트 OS에서는 4GB 메모리 제한을 넘을 수 있음.
  • 64비트 Windows에서 32비트 프로그램을 실행할 수 있도록 WOW64(Windows on Windows) 환경 제공.

정답: ①

 

 

문제 14. 메모리 영역

문제 해설:

 

  • ① 지역변수는 스택에 저장.
  • ② malloc/free는 힙 사용.
  • ③ 텍스트는 실행코드 저장하는 영역.
  •   BSS(Block Started Symbol): 초기화되지 않은 전역 변수(static, global)를 저장하는 메모리 공간.

정답: ④

 

 

문제 15. Handle 설명

문제 해설:

 

  • 핸들을 닫을 때 사용하는 함수는 CloseHandle()이다.
  • ExitHandle()이라는 함수는 존재하지 않는다.
  • HANDLE - 핸들 자료형
  • CreateFile(), CreateThread() - 핸들 반환 함수
  • CloseHandle() - 핸들을 닫는 함수, 핸들을 닫는다라는 의미는 커널 객체 연결을 끊는다는 의미

정답: ③

 

 

문제 16. 스케쥴링 기법

문제 해설:

 

  • FCFS (First Come First Served)
    • "들어온 순서" 그대로 처리.
    • 가장 기본적인 디스크 스케줄링 방식. 
  • SSTF: 가장 가까운 요청부터 처리 (seek time 최단).
  • SCAN: 디스크 헤드가 끝까지 갔다가 반대 방향으로 이동.
  • SLTF: 실린더 내에서 회전 지연시간이 가장 짧은 요청을 먼저 처리하는 방식.

정답: ①

 

문제 17. 메모리 단편화

문제 해설:

 

  • 외부 단편화(External Fragmentation)
    • 메모리 "전체 여유는 많지만" 필요한 만큼 연속된 공간이 없는 상태.
    • 조각나서 효율적으로 쓰지 못하는 문제.
  • 반대 개념:
    • 내부 단편화: 메모리 할당했지만 남는 공간이 생기는 것 (할당된 블록 내부).

정답: ②

 

 

문제 18. 프로토콜

문제 해설:

 

  • HTTP(HyperText Transfer Protocol)
    • 웹 페이지, 이미지 등 다양한 리소스를 주고받기 위한 프로토콜.
    • 모바일 게임, 수집형 RPG 등에서 서버 통신에 사용.
  • TCP: 신뢰성 있는 데이터 전송 프로토콜.
  • UDP: 빠른 데이터 전송 (신뢰성 없음).
  • ICMP: 네트워크 오류 메시지요 프로토콜 (예: 핑).

정답: ②

 

 

문제 19. 소켓 함수

문제 해설:

listen 함수

  • 서버 소켓을 "수신 대기" 상태로 만듦.
  • 클라이언트가 연결 요청할 때 기다릴 수 있게 한다.

connect: 클라이언트가 서버에 연결 요청.

accept: 연결 요청을 받아서 새 소켓을 반환.

bind: 소켓에 주소(포트)를 할당.

정답: ①

 

문제 20. 데이터 베이스 

문제 해설:

SQL 표준에는 NOT ZERO, NOT EMPTY 같은 제약조건은 없음.

PRIMARY KEY는 고유 식별자에 사용하는 것이고

NOT NULL은 NULL 불가, 값 필수.

정답: ④

 

문제 21. 메모리 저장 방식

문제 해설:

리틀 엔디안(little-endian):

  • "가장 작은 바이트가 가장 앞에 저장"된다.
  • 메모리에 저장된 순서대로 읽으면 역순으로 구성해야 한다.

정답: ④

 

문제 22. C++ 헤더 파일 설명

문제 해설:

  • 헤더파일(header file):
    • 클래스, 함수 선언을 모아놓은 파일.
    • . h 확장자를 주로 쓰지만, 무조건. h여야 할 필요는 없음.
      • 예:. hpp (C++ 표준)
      • Unity에서는. cs를 쓰기도 함.
  • ① 선언부 모아두는 게 맞음.
  • ② include 순서가 중요할 수 있음 (특히 의존성 많을 때).
  • ④ 필요한 것만 include 하는 게 컴파일 최적화에 좋음.

정답: ③

 

문제 23. 2진수 표현

문제 해설:

 

  • 1바이트(8비트) 이진수로 표현할 때,
  • 음수2의 보수법을 사용한다.
  • 7의 이진수 → 00000111
  • 1의 보수 (비트 반전) → 11111000
  • +1 해서 2의 보수 → 11111001

정답: ④

 

 

 

 

문제 24. 출력되는 값

문제 해설:

arr [3][3]은 각각 행, 렬

0행의 1열은 2,

1행의 1열은 5,

2행의 0열은 7

따라서 257.

정답: ①

 

문제 25. 오버라이딩

문제 해설:

 

  • B b;
    • B 객체 생성
  • A* p = &b;
    • 부모 타입 포인터(A*)로 B 객체를 가리킴.
  • p->Set("_");
    • Set은 virtual이 아니다.
      • → Set은 포인터 타입(A)의 버전으로 호출된다.
      • 즉, A::Set("_") 이 호출된다.
  • 그럼 val의 값은?
    • val = "A" + "_" = "A_"
  • p->Get();
    • Get은 virtual이다.
    • → 실제 객체인 B의 Get() 호출.
    • B::Get()의 로직은:
    • cpp
      복사편집
      return val + "B";
    • 현재 val은 "A_"이므로
      • 결과 = "A_" + "B" = "A_B"

정답: ②

 

게임 알고리즘과 설계

 

 

문제 1. 추측 항법(Dead reckoning)

문제 해설:

  • Dead Reckoning
    • 서버가 매 순간 좌표를 보내지 않고, "변화가 생겼을 때만" 좌표를 보냄.
    • 클라이언트는 마지막 수신 정보를 바탕으로 예측하여 보간.
  • 결과적으로 서버의 전송량이 크게 줄어든다.
  • ② 클라이언트도 예측 계산을 해야 해서 전송량 감소보다는 예측 처리량이 늘어남.
  • ③④ 메모리 사용량은 큰 변화 없음. 주요 효과는 네트워크 데이터 전송량 감소.

정답: ①

 

문제 2. 자료구조

문제 해설:

덱(Deque, Double Ended Queue)

  • 양쪽(앞, 뒤)에서 삽입/삭제가 가능한 선형 자료구조.

스택 - 한쪽 끝에서 삽입과 삭제가 일어남

트리, 그래프: 비선형 자료구조임

정답: ②

 

문제 3. 탐색 방법

문제 해설:

 

  • 보간 탐색(Interpolation Search)
    • "균등하게 분포된 데이터"일 때, 원하는 값의 예상 위치를 비례 계산으로 추정하여 탐색.
  • 이진 탐색은 단순히 중앙값(mid)을 기준으로 나눔.
  • ① 이진 탐색은 단순 절반 나누기 (mid = (low+high)/2)
  • ② 선형 탐색은 처음부터 끝까지 순차적으로 찾음.
  • ④ 피보나치 탐색은 피보나치수열을 이용한 이진 탐색 응용.

정답: ③

 

 

 

 

문제 4. 그래프 최단 경로

문제 해설:

가중치의 합이 가장 작은 경로를 찾으면 됨.

정답: ①

 

문제 5. 해시 충돌 해결 방식

문제 해설:

 

  • 이중 해싱(Double Hashing)
    • 첫 번째 해시 함수로 기본 주소를 찾고,
    • 두 번째 해시 함수를 사용해 충돌 발생 시 오프셋을 조정.
  • 매우 강력한 충돌 해결 기법이다.
  • 제곱 탐사 - i^2만큼 이동
  • 선형 탐사 - +1만큼 이동
  • 체이닝 - 연결 리스트로  같은 해시 버킷에 여러 값 저장

정답: ②

 

 

문제 6. 정렬 알고리즘

문제 해설: 

  • 삽입 정렬(Insertion Sort)
    • 앞에서부터 하나씩 보면서, 그 자리 앞의 원소들과 비교하여 알맞은 자리에 삽입.
    • 정렬 과정이 하나하나 추가되는 형태로 보임.
  • 특징:
    • 데이터가 거의 정렬된 경우 빠름.
    • 매번 정렬된 부분을 유지.
  • ① 선택 정렬은 가장 작은 값을 선택해서 앞으로 보냄 (전체 스캔 필요).
  • ② 퀵 정렬은 피벗을 중심으로 큰 그룹, 작은 그룹 나눔 (나누는 과정이 보이지 않으면 퀵정렬 아님).
  • ④ 버블 정렬은 옆에 있는 요소끼리 계속 비교하면서 swap.

정답: ③

 

문제 7. 디자인 패턴

문제 해설:

  • 스테이트 패턴(State Pattern)
    • 객체가 상태에 따라 행동을 바꾸도록 만드는 패턴.
    • 복잡한 상태 변화를 코드로 깔끔하게 관리할 수 있음.
    • 예: 몬스터 AI의 idle → chase → attack 전이.
  • ① 비지터 패턴: 데이터 구조와 연산을 분리하는 패턴.
  • ② 싱글톤 패턴: 인스턴스를 하나만 만드는 패턴.
  • ③ 옵서버 패턴: 이벤트 발생 시 구독자에게 통지하는 패턴.

정답: ④

 

문제 8. 인접행렬

문제 해설:

인접 행렬에 1이 있으면 정점을 가리키면 된다.

정답: ①

 

문제 9. 크루스칼 알고리즘

문제 해설:

크루스칼 알고리즘(Kruskal Algorithm)

  • 최소 비용 간선부터 차례로 선택.
  • 사이클이 생기지 않도록 이어 붙임.

가장 작은 가중치를 가진 3개의 간선을 더하면 됨. 1+3+4

정답: ②

 

문제 10. 배열

문제 해설:

  • 배열(array)은
    • 같은 타입(동일 자료형)의 여러 개 데이터를 연속적으로 저장하는 공간.
    • 서로 다른 자료형(int, float, char 등)을 같은 배열로는 만들 수 없다.
    • ③ "다양한 자료형"은 구조체(struct)나 클래스(class)에서 가능, 배열은 아님.

정답: ③

 

문제 11. 단위 벡터

문제 해설: 

단위 벡터란 벡터 v가 주어졌을 때 이 벡터와 방향이 같고 길이가 1인 벡터를 구하는 것.

먼저 벡터의 크기를 구하면 (-3)^2 + 4^2 여서 √25가 되고 

여기에 대입하면 (-3/√25, 4/√25)

정답: ③

 

문제 12. 탐색 알고리즘

문제 해설:

  • 크루스칼(Kruskal)은 "최소 신장 트리(MST)"를 구하는 알고리즘이다.
  • "탐색 대상 반으로 나누기"는 이진 탐색(binary search)의 특징.

정답: ④

 

문제 13. 병합 정렬 과정

문제 해설:

병합 정렬(Merge Sort):

  • 분할(divide) → 정렬(sort) → 병합(merge) 방식.

정답: ④

 

문제 14. 이진 탐색 트리

 

문제 해설:

이진탐색트리의 특징은 노드의 왼쪽 자식은 나보다 작고 오른쪽 자식은 나보다 크다.

이를 지키면서 그림처럼 만들어가면

이런 모양이 나오게 된다. 7은 A-B-E를 거치면 됨.

정답: ③

 

문제 15. 유한 상태 머신

문제 해설:

유한 상태 기계에서 전이가 불가능할 때는 해당 방향의 전이가 이어져있지 않을 때.

정답: ②

 

문제 16. 문자열 검색 알고리즘

문제 해설:

KMP 알고리즘 (Knuth-Morris-Pratt):

  • 문자열 내에서 패턴과 일치하는 접두사/접미사 정보를 이용해
  • 필요 없는 부분은 건너뛰면서 빠르게 검색하는 알고리즘.
  • 이동 경로 테이블(= 실패 함수, Prefix table)을 미리 만든다.

Brute-Force 알고리즘: 하나하나 비교하는 방법.

Boyer-Moore 알고리즘: 뒤쪽부터 비교, 불일치 시 크게 점프.

Rabin-Karp 알고리즘: 문자열을 해시 값으로 비교하는 방식.

정답: ①

 

문제 17. 성능 순서

문제 해설:

상수 → 로그 → 선형 → 로그선형 → 제곱 → 지수 → 팩토리얼 순서대로 느려진다.

 

  • 성능(시간 복잡도)이 작은 것 → 큰 것 순서로 정렬한다.
  • 성장 속도 비교:
  • O(1) < log n < n < n log n < n² < n³ < 2ⁿ < n!

 

정답: ①

 

문제 18. 우선순위 탐색

문제 해설:

최소비용 신장트리(MST):

  • 모든 노드를 연결하는데 최소 비용만 사용.
  • 사이클이 생기면 안 된다.

정답: ③

 

문제 19. A* 알고리즘

문제 해설:

A* 알고리즘:

  • 시작점부터 목표점까지 최적의 경로를 찾는다.
  • 휴리스틱(Heuristic) + 실제 거리 = 평가 함수로 탐색.
  • 무작위(Random)가 아니라 "가장 좋은 후보"를 선택하면서 진행한다.→ 경로 탐색의 안정성은 오히려 높다.

정답: ④

 

문제 20. 최단 경로 알고리즘

문제 해설:

플로이드 - 와샬 알고리즘은 모든 정점 쌍의 최단 경로를 구할 때 사용함.

정답: ③

 

문제 21. 알고리즘 설명

문제 해설:

  • 동적 프로그래밍(Dynamic Programming, DP):
    • 큰 문제를 작은 하위 문제(subproblem)로 나누고,
    • 하위 문제의 결과를 저장해서 중복 계산을 방지한다.
    • 메모이제이션을 사용.
  • ① 분할 알고리즘은 단순히 쪼개는 것 (Divide and Conquer).
  • ② 탐욕 알고리즘은 그 순간 가장 좋아 보이는 선택만 함.
  • ④ 휴리스틱 알고리즘은 근사 해법을 찾는 방법.

정답: ③

 

문제 22. 재귀 함수 필요성

 

문제 해설:

 

  • 배열 순회는 단순 반복문으로 처리 가능.
  • 재귀는 트리 탐색이나 수열 계산처럼 중첩 구조일 때 쓰는 게 맞다

① 트리 전위 순회 - 재귀 사용이 매우 흔함.

② 팩토리얼 - 재귀로 간단히 표현함.

③ 피보나치 - 재귀 가능(성능은 반복이 낫다)

정답: ④

 

 

문제 23. AVL 트리

 

문제 해설:

 

  • AVL 트리는 높이 균형 트리일 뿐
    항상 완전 이진트리(Full Binary Tree)는 아니다.
  • 균형 조건은 "왼쪽과 오른쪽 서브트리 높이 차가 1 이하"만 만족.

정답: ②

 

 

문제 24. 그래프 절점

문제 해설:

 

  • 절점(Cut Vertex): 해당 정점을 제거하면
    그래프가 연결되지 않거나 컴포넌트 수가 증가하는 정점.
  • 절점은 보통 중간 허브 역할을 한다.

정답: ④

 

 

문제 25. 이진탐색

문제 해설:

이진 탐색은 항상 중간값을 잘 계산해야 하고,
l + (r-l)/2 방식을 쓰면 오버플로우를 방지할 수 있다.

정답: ②

 

게임 콘텐츠 프로그래밍

 

문제 1. 충돌 처리

문제 해설:

AABB (Axis Aligned Bounding Box):

  • x, y, z 축에 딱 맞게 정렬된 직육면체 형태의 경계 박스.
  • 오브젝트가 회전하지 않고 정렬된 상태로 충돌 처리를 간단하게 한다.
  • 충돌 검사 속도가 빠르고 계산량이 적다.

 Bounding Sphere와 Cylinder는 각각 구형 범위와 원기둥 형태.

정답: ①

 

문제 2. 변환행렬

문제 해설:

일반적으로 정점 변환은 단순히  M을 곱하지만,

법선 벡터는

 

M의 역행렬의 전치행렬을 사용해야 변환 결과가 올바르다.

이유: 일반적인 변환행렬(M)은 스케일, 회전등을 포함해서 왜곡이 일어나기 때문에

법 선은 이를 보정하는

로 변환되어야 함.

정답: ④

 

문제 3. 후처리 기법

문제 해설:

Blur(블러):

  • 이미지나 화면을 흐리게 만드는 효과.
  • 주로 포스트 프로세싱 단계에서,
    • 모션 블러,
    • 배경 흐림,
    • Depth of Field 효과 등을 구현할 때 사용.

Contrast: 명암 조정

Ray Tracing:  광선 추적 렌더링

Tone Mapping: 고정밀 이미지를 화면 밝기로 변환.

정답: ③

 

문제 4. 반사광에서 밝기 값 구하는 공식

문제 해설:

반사광은 반사 벡터와 시선 벡터의 내적을 이용하여 계산.

Specular Highlight(반사광) 계산은:

  • 광원 벡터 L과 법선 벡터 N을 이용해 반사 벡터 R을 만들고,
  • 시선 벡터 V와의 내적을 통해 빛나는 정도를 구한다

정답: ③

 

문제 5. PBR

문제 해설:

Microfacet(마이크로페이싯):

  • 표면을 미세한 평면(facet)들의 집합으로 가정하는 모델.
  • 실제 표면은 완전히 매끄럽지 않고, 미세한 면들로 구성되어 있다.
  • 거칠기(roughness)에 따라 반사 방향이 달라진다.

plane: 평면.

sphere:구체.

cube:정육면체.

정답: ①

 

문제 6. 텍스처

문제 해설:

 

  • Light Map:
    • 미리 광원 효과를 계산해서 텍스처에 저장하는 방식.
    • 런타임에 계산을 줄이고 빠른 조명을 표현할 수 있다.
  • 특징:
    • 주로 배경(Scene)이나 움직이지 않는 오브젝트에 사용.
    • 실시간 조명 비용을 줄이는데 유리.
  • normal Map:표면의 요철을 표현.
  • Diffuse Map:물체 표면의 기본색상.
  • Mask Map: 여러 속성(메탈, 러프니스)등을 저장.

정답: ③

 

 

문제 7. 텍스처

문제 해설:

Normal Mapping:

  • 정점(Vertex) 정보가 아니라,
  • 텍스처에 법선 벡터를 저장해서
  • 평평한 폴리곤도 굴곡이 있는 것처럼 보이게 만든다.

Lambert Lighting: 디퓨즈 조명 밝기 모델.

Ambient Occlusion: 음영표현, 빛이 닿기 어려운 부분을 더 어둡게.

Glow Mapping: 빛나는 효과 표현.

정답: ②

 

문제 8. 광원 종류

문제 해설:

 

  • Directional Light (방향광):
    • 빛이 평행하게 쏘인다.
    • 거리와 상관없이 광선은 무한히 길다 (태양광처럼).
  • Point Light (점광원):
    • 하나의 점에서 모든 방향으로 빛이 퍼진다.

정답: ③

 

 

문제 9. 컬링 기법

문제 해설:

  • Frustum Culling:
    • 카메라의 시야(FOV) 영역(Frustum) 안에 있는 것만 렌더링 하고,
    • 영역 밖에 있는 오브젝트는 렌더링 하지 않는다.
  • 효율적으로 드로우 콜을 줄이고 퍼포먼스를 높인다.
컬링 기법설명
Frustum Culling 시야 밖 오브젝트 제거
Back Face Culling 카메라 반대편 면 제거
Quad Tree Culling 2D 공간분할을 통한 컬링
Render Culling (정식 용어 아님)

정답: ①

 

문제 10. 텍스처

문제 해설:

  • Cube Map Texture:
    • 6장의 텍스처를 각각 앞, 뒤, 왼쪽, 오른쪽, 위, 아래에 맵핑.
    • 주로 반사, 굴절, 환경맵핑(Environment Mapping)에 사용.
텍스처설명
Diffuse Texture 기본 색상 텍스처
Occlusion Texture 음영 효과 텍스처
Cube Map Texture 6면에 텍스처, 반사/굴절 표현
Volume Texture 3D 텍스처, 내부 볼륨 표현

정답: ③

 

문제 11. 벡터

 

 

문제 해설:

 

  • 벡터(Vector)는 방향성과 크기를 가진 양을 나타낸다.
  • 벡터로 표현하는 것:
    • 변위(이동 거리 및 방향)
    • 속도(이동 방향과 속도)
    • 힘(힘의 크기와 방향)
  • 회전(Rotation)은 방향이나 각도 값으로 표현되며, 일반적으로 쿼터니언(Quaternion)이나 행렬(Matrix)로 다루지, 벡터 그 자체로는 표현하지 않는다.

정답: ③

 

 

문제 12. 벡터 계산

문제 해설:

  • 내적(Dot Product):
    • 두 벡터 사이의 각도를 구하는 데 사용.
    • 입사광(Light Vector)과 법선 벡터(Normal Vector) 사이의 내적을 계산해서 밝기를 결정한다.
    • 내적 결과가 크면 밝고, 작으면 어둡다.
연산용도
내적 각도 계산, 광원 입사각 표현
외적 수직 벡터(법선 벡터) 구함
벡터 차/합 위치나 방향 계산

정답: ①

 

문제 13.

  • Vertex(정점):
    • 3D 공간상의 하나의 점(x, y, z 좌표).
    • 텍스처 좌표(UV), 색상, 법선 벡터 등을 포함할 수 있다.
요소설명
Vertex 3D 점. x, y, z 좌표 등 저장
Line 두 Vertex를 연결한 선
Convex 볼록한 형태
Concave 오목한 형태

정답: ②

 

문제 14. Rasterizer 래스터라이저

문제 해설:

  • Rasterizer의 주 역할:
    • 3D 정점을 2D로 변환 (Projection)
    • 2D 뷰포트로 매핑
    • Z-Buffer로 깊이 정보 계산
  • Post Processing(후처리)은 렌더링 이후에 별도로 수행하는 작업이다 (Bloom, Blur 등).
과정역할
Rasterizer 3D→2D 변환, 깊이 계산
Post Processing 렌더링 이후 필터나 이펙트 처리

정답: ④

 

문제 15.

 

문제 해설:

  • DLSS (Deep Learning Super Sampling):
    • 낮은 해상도로 렌더링 한 이미지를
    • 딥러닝을 통해 고해상도처럼 보이게 업스케일링하는 기술.
    • NVIDIA RTX 그래픽 카드에서 지원.
    • 프레임 수 증가와 그래픽 품질 개선 효과.
기술설명
Tone Mapping 밝기 조절
DLSS 딥러닝 기반 업스케일링
Ray Casting 광선 기반 렌더링
SSAO 주변광 차폐 효과

정답: ②

 

문제 16.3D 렌더링 파이프라인

문제 해설:

  • 3D 렌더링에서는 반드시 Z-버퍼(깊이 버퍼)를 사용하여 z값을 비교하고,
    • 가까운 오브젝트만 화면에 보이게 하고,
    • 먼 오브젝트는 가려지게 한다.
  • Z버퍼 비교 없이 렌더링 하면 깊이 충돌 문제(z-fighting)가 발생한다.
항목설명
지역/세계 변환 분리 효율 향상
FOV 감소 확대 효과
원근 투영 거리 감 표현
Z버퍼 깊이 비교 필수

정답: ④

 

문제 17. 뷰포트 처리

 

문제 해설:

  • Clipping(절단):
    • 뷰포트(Viewport) 밖에 있는 삼각형을 잘라낸다.
    • 삼각형이 부분적으로만 보이면 잘려서 렌더링 된다.
용어설명
Culling 안 보이는 전체 오브젝트 제거
Space Partitioning 공간을 분할하여 최적화
Clipping 일부 보이는 삼각형 절단
Back-face Culling 뒤를 향한 면 제거

정답: ③

 

문제 18.

 

문제 해설:

① 지역변환 (Local Transform) 오브젝트 자신의 로컬 좌표계 기준 변환 오브젝트 중심 기준 회전/이동
② 세계변환 (World Transform) 로컬 → 세계 좌표계 변환 위치/회전/스케일 적용
투영변환 (Projection Transform) 3D 공간 → 2D 시점으로 바꾸는 단계 원근(Perspective), 직교(Orthographic)
④ 뷰변환 (View Transform) 세계 좌표 → 카메라 기준 좌표 카메라 위치/방향 반영

정답: ③

 

문제 19. 보간 함수

문제 해설:

  • Lerp(Linear Interpolation) 공식:

  • 알파 혼합에서
    • Alpha=0 → 결과는 A
    • Alpha=1 → 결과는 B
공식의미
A * (1-Alpha) + B * Alpha 선형 보간 공식 (정답)
나머지 의미 틀림

정답: ①

 

문제 20. 물리 기반 렌더링

  • PBR(Physically Based Rendering)은
    • 재질(Material) 표현을 현실적으로 만드는 기술이다.
    • 주요 속성은 Roughness(거칠기), Metallic(금속성), Reflectance(반사율) 등이다.
  • 계단현상(Aliasing)과 필터링은 렌더링 품질 개선(안티에일리어싱)과 관련 있고, PBR 자체 속성은 아니다.

정답: ④

 

 

 

문제 21. 렌더링

 

문제 해설:

  • VR Stereo Rendering(입체 렌더링):
    • 왼쪽 눈과 오른쪽 눈에 각각 다른 시점의 이미지를 보여줘서 입체감을 느끼게 한다.
    • 인간의 양쪽 눈 사이 간격을 고려해 두 이미지를 렌더링 한다.
기술설명
PBR 물리 기반 렌더링
VR Stereo 양안 시차로 입체감 부여
AR 현실에 가상 오브젝트 추가
Depth Rendering 깊이 기반 렌더링 (Z-buffer)

정답: ②

 

문제 22. 정점 셰이더

문제 해설:

  • 정점 셰이더(Vertex Shader)는 주로:
    • 정점 변환 (모델→월드→뷰→프로젝션 변환)
    • 정점 관련 조명 계산 (디퓨즈, 스페큘러 조명 준비)
    • 스키닝(본 애니메이션)
  • 여러 이미지 버퍼를 합성하는 작업(ex. 디퓨즈 + 스페큘러)은 픽셀 셰이더(프래그먼트 셰이더)에서 한다.
셰이더 타입역할
Vertex Shader 정점 변환, 조명 준비, 스키닝
Pixel Shader 최종 색상 계산, 합성 작업

정답: ③

 

문제 23. 전면 폴리곤

문제 해설:

  • 오른손 좌표계에서는 시계 반대 방향(counter-clockwise)으로 정점을 연결해야 전면(Face)으로 인식된다.
  • 순서대로:
    • 첫 삼각형: v1 → v2 → v0
    • 둘째 삼각형: v0 → v2 → v3
기준설명
오른손 좌표계 반시계 방향이 전면
왼손 좌표계 시계 방향이 전면

정답: ①

 

문제 24. 단위원 좌표

문제 해설:

반지름 1인 원에서 각도 θ를 기준으로 좌표를 구하는 공식이다.

정답: ①

 

문제 25. 확대한 이미지

문제 해설:

  • Render To Texture:
    • 현재 화면(Scene)을 다른 텍스처로 렌더링해서,
    • 해당 텍스처를 확대하거나 가공해서 다시 화면에 그리는 기법.
  • 망원경이나 CCTV 화면 효과를 구현할 때 매우 많이 사용한다.
기법설명
Linear Filtering 부드러운 텍스처 보간
Normal Map 굴곡 효과
Mip Map 거리 기반 저해상도 텍스처
Render To Texture 화면을 텍스처로 렌더링 후 재사용

정답: ④