일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LayerMask
- 코드블럭 테마
- c++
- 유니티 Vector3
- unity
- 소스코드 줄번호
- 너비 우선 탐색
- LookRotation
- 유니티 시야 가림
- 유니티 오브젝트 풀링
- 오브젝트 풀링
- ML-Agents
- 알고스팟
- 유니티 리소스매니저
- 유니티
- 유니티 ResourceManager
- c++ 문자열 자르기
- Mathf.Clamp
- git-lfs
- LFS
- Raycast
- eulerAngles
- Quaternion.Euler
- 깊이 우선 탐색
- 유니티 InputManager
- 유니티 Rotate
- InputManager
- 유니티 Collision
- 유니티 머신러닝
- 이진트리
- Today
- Total
무민은귀여워
0703 과제 본문
1. DrawCall에 대해 조사해오세요.
스크린에 오브젝트를 렌더링하기 위해 렌더링 엔진은 OpenGL이나 Direct3D 그래픽 API에(GPU : 그래픽 처리 장치) 그리기 요청(draw call)을 하는데 이 요청을 드로우 콜이라고 한다.
모든 그리기 요청(draw call)은 CPU 상의 상당한 퍼포먼스 오버헤드를 일으킨다.
# 오버헤드 : 오버헤드는 특정한 기능을 수행하기 위해 추가로 사용되는 컴퓨터 자원을 지칭하는 것이다
예를 들어, 감사 증적을 유지하기 위해 10%의 오버헤드가 필요하다는 말은, 감사 증적 기능이 동작하고 있는 동안에는 그 프로그램의 실행속도가 10% 가량 늦어진다는 것을 의미한다.
이 작업은 자원이 많이 들기 때문에 드로우 콜을 줄이는 것이 성능 향상에 있어 매우 중요하다.
스프라이트들을 스프라이트 시트에 모두 모아놓으면 단 한번의 드로우 콜로 모든 스프라이트를 화면에 표시할 수 있다.
참고 :
http://bbbcomputersite.blogspot.com/2016/05/drawcall.html
https://hungry2s.tistory.com/105
2. Vertex Shader, Pixel Shader에 대해 조사해오세요.
쉐이더 : 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수
쉐이더는 픽셀의 농담, 색조, 명암을 결정한다.
쉐이더의 최종결과는 농담, 색조, 명암 효과를 전부 짬뽕해서 나온 RGBA색상 값 하나이다.
정점쉐이더(vertex shader) : 3D 물체를 구성하는 정점들의 위치를 화면좌표로 변환하는 것.
정점쉐이더는 3D 물체를 구성하는 정점의 수만큼 실행된다.
※물체의 위치를 다른 공간으로 옮기는 과정을 공간변환(space transformation)이라고 부른다.
래스터라이저(rasterizer) : 화면을 구성하는 단위는 픽셀이니까 화면에 뭔가 그림을 그리려면 픽셀을 어디에 몇 개나 그려야 하는지를 알아야한다. 이것이 래스터라이저이다. 래스터라이저는 정점쉐이더가 출력하는 정점의 위치를 차례대로 3개씩 모아 삼각형을 만든 뒤, 그 안에 들어갈 픽셀들을 찾아낸다.
픽셀쉐이더(pixel shader) : 화면에 출력할 최종색상을 계산하는 것이다.
참고 : https://kblog.popekim.com/2011/11/01-part-1.html
3. strlen, strcmp, strcat, strcpy를 구현해주세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#include<stdio.h>
#include<string.h>
int myStrlen(char* str)
{
int num = 0;
while (str[num] != '\0')
{
num++;
}
return num;
}
int myStrcmp(char* str1, char* str2)
{
int idx = 0;
while (str1[idx] != '\0' || str2[idx] != '\0')
{
if (str1[idx] > str2[idx])
{
return 1;
}
else if (str1[idx] < str2[idx])
{
return -1;
}
idx++;
}
return 0;
}
char* myStrcat(char* str1, char* str2)
{
char* temp = str1;
while (*str1 != '\0')
{
str1++;
}
while (*str2 != '\0')
{
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return temp;
}
char* myStrcpy(char* str1, char* str2)
{
int idx = 0;
while (str2[idx] != '\0')
{
str1[idx] = str2[idx];
idx++;
}
str1[idx] = NULL;
return str1;
}
int main()
{
char str[256];
char str1[256] = "aaa";
char str2[256] = "aab";
char str3[256] = "aac";
printf("%d \n", myStrlen(str1));
printf("%d \n", myStrcmp(str1, str1));
printf("%d \n", myStrcmp(str2, str1));
printf("%d \n", myStrcmp(str2, str3));
printf("%s \n", myStrcat(str1, str2));
printf("%s \n", myStrcpy(str1, str2));
printf("%s \n", myStrcpy(str3, str2));
return 0;
}
|
cs |
'IT > 기타' 카테고리의 다른 글
*.ini 파일 읽고 쓰기 (0) | 2019.07.10 |
---|---|
0709 과제 (0) | 2019.07.09 |
0702 과제 (0) | 2019.07.02 |
0701 과제 (0) | 2019.07.01 |
메모) php 코딩 규약 (0) | 2018.11.26 |