전체 글 127

Chapter03. 입력 콜백

시스템과 이벤트 게임을 하다보면 클릭이나 키보드 입력을 통해서 특정 이벤트가 발생하도록 구현되어 있다. 따라서, 입력이 들어왔는지 안들어왔는지 항시 체크를 함으로써, 입력에 따른 이벤트 처리를 해야한다. 하지만 이를 무한 Loop를 돌려서 하기에는 비효율적이고 CPU의 Cost가 증가하게 된다. 따라서 이는 운영체제의 지원을 받음으로써 보다 효율적인 처리가 가능하다. 운영체제는 이벤트 큐라고 하는 기능을 지원한다. 큐는 자료구조로써 First In First Out로, 먼저들어온 작업을 먼저 처리한다는 자료구조이다. 따라서, 먼저 들어온 이벤트 입력을 먼저처리하는 기능이다. 그러면 우리는 무한Loop를 돌리지 않고 운영체제에 접근해서 이벤트 큐에 처리하고자 하는 입력을 넘겨줄 수 있는데, 이를 가능하게 ..

Computer Graphics 2021.05.27

Chapter02. OpenGL 시작 및 실습코드

OpenGL이란? Vertices를 Pixels로 변환하는 과정을 지원하는 그래픽스 표준 API이다. 1992년 실리콘 그래픽스사에서 만든 2차원 및 3차원 그래픽스 표준 API로, 함수 호출을 통해 기하도형에서부터 복잡한 3차원 장면을 생성할 수 있다. 즉, OpenGL은 Vertices를 Pixels로 변환하는 과정을 지원한다. 앞서 살펴보았던 GPU를 통해 컴퓨터 화면에 그림을 생성하는 과정(아래 그림) 여기선 Vectices를 응용프로그램이라고 했으나 간단하게 점이라고 생각하자. 즉, 점을 픽셀로 변환하는 이 과정을 OpenGL이 해주는 것이다. 하지만 각 과정에 어떤 상태변수를 넘겨줌으로써 우리가 원하는 그림을 그려내야 할 것이다. 따라서 아래와 같은 그림으로 설명할 수 있다. OpenGL을 이..

Computer Graphics 2021.05.26

Chapter 01-03. Graphics System & Model 상식

Computer Graphics - Graphics System & Model - 그래픽스 시스템 전반의 각종 요소와 용어들에 대해서 다 살펴본다. 일단 그래픽스 시스템에 무엇이 있고 과거엔 무엇을 사용했는지 간단하게 훑어보고, 이 중에 중요한 것들은 나중에 자세하게 다룰 것이다. 그래픽스 시스템(하드웨어)에 대해서 알아보자 그래픽스 시스템은 PC의 영역과 그래픽의 영역이 있다.(포함 관계이다.) PC 영역 : CPU, Memory, Disk, Graphics Card, Sound Card, Network, Peripherals : keybboard, mouse, monitor Graphics Card 영역 : GPU, Memory, Video Output 시대가 지날수록 그래픽 성능이 더 많이 요구되고..

Computer Graphics 2021.05.19

Chapter 01-02. 시작과 상식

Computer Graphics - 시작과 상식 - 컴퓨터 그래픽스에 대한 본격적인 공부에 앞서서 상식적인 부분에 대해 알아보도록 한다. 컴퓨터 그래픽스란? 컴퓨터 그래픽스란 컴퓨터를 이용해서 이미지나 그림을 만들어내는 일련의 과정을 이를 위한 기술들을 통칭하는 단어이다. "당신이 눈으로 보고있는 장면을 컴퓨터 화면에 그려봐라"에 대한 대답을 어떻게 할 수 있을까? 이 세상은 3차원, 4차원 여러 말들이 있다만, 3차원이라고 생각해보자. 이 세상에는 3차원으로된 객체들이 있으며, 그 객체들은 모양, 색깔, 음영, 질감들을 가지고 있다. 그리고 그 객체들은 가만히 있을 수도 있고 항상 움직일 수도 있다. 뿐만 아니라 빛, 그림자, 어떤 현상에 의한 Effect 등 다양한 시각적 요소들로 이루어져 있다. 이..

Computer Graphics 2021.05.19

Chapter 01. 들어가기에 앞서

Computer Graphics / OpenGL - 독학 시작 - AR/VR Contents Dev와 Game Programming을 하기에 앞서서, 이 기술들의 근간이 되는 Computer Graphics에 대한 이해가 필요하다고 생각한다. 단순하게 High Level의 Unity Game Engine을 이용한 C# Programming만 하면서 생각해 보니, Particle System이나 Rendering PipeLine도 모른채 마냥 갖다 쓰고만 있다는 본인이 한심하게 느껴졌고 전문성을 갖추기 위해서 해당 이론에 대해 기초부터 꼼꼼히 살펴보고자 한다. 공부 방식 공부 방식은 인터넷에 올라온 무료 온라인 강의를 통해 공부한다. 그리고 강의에 포함되어 있지 않은 내용들은 추가적으로 정보를 수집하여 정..

Computer Graphics 2021.05.18

정리[NetWork]

용어 정리 네트워크 : 네트워크란 데이터를 교환하기 위해 전송 매체를 매개로 서로 연결되어 있는 것을 의미합니다. 인터넷 : 전세계의 컴퓨터들이 서로 연결되어있는 거대한 네트워크를 뜻합니다. 프로토콜 : 사람간의 대화에서 같은 언어를 이용해서 의사소통하듯이 네트워크 상에서 데이터를 주고받기 위해서 일종의 정해진 규약이 있는데 이것을 프로토콜입니다. OSI(Open Systems Interconnection Reference Model) 7계층이란? 네트워크 상에서 정보를 주고받으려면 어느 경로로 보낼지, 어떤 방식으로 보낼지 등등의 고려사항들이 많이 발생하게 됩니다. 만약 하나의 규약을 정해놓았다면 이슈에 대한 관리가 어려워지게 되고 또다른 문제가 발생하게됩니다. 따라서, 네트워크 관리에 대하여 7가지 ..

Computer Science 2021.04.13

정리[Database]

키란? 테이블에 저장되어있는 튜플들을 식별하기 위한 Attribute값이 키입니다. 최소성과 유일성 - 유일성 : 특정 튜플을 바로 찾아낼 수 있는 유일한 속성이어야 한다.(나를 찾기 위한 주민등록번호) - 최소성 : 최소한의 속성으로 튜플을 구분할 수 있어야 한다. 1) Super Key 슈퍼키 튜블을 식별할 수 있는 하나 이상의 속성들의 집합입니다. 슈퍼키는 최소성이 아닌 유일성만 만족하면 됩니다. 2) Candidate Key 후보키 튜플들을 식별하기 위해 사용되는 키들의 집합이 후보키입니다. 후보키는 두가지의 조건을 만족해야합니다. 3) Primary Key 기본키 후보키들 중에서 선택한 하나의 키로 오직 하나만 존재하며, 기본키는 NULL데이터와 중복 데이터를 가져선 안된다. 최소성과 유일성을 ..

Computer Science 2021.04.08

정리[Computer Architecture, OS]

CPU 인간으로따지면 두뇌와 같은 부분입니다. 프로그램 명령어와 데이터를 읽어서 처리하고 명령어의 수행 순서를 제어합니다. CPU는 비교와 연산을 담당하는 산술논리연산장치(ALU)와 명령어의 해석과 실행을 담당하는 제어장치, 속도가 빠른 데이터 기억장소인 레지스터로 구성되어 있습니다. - 데이터 버스 중앙처리장치와 다른 장치 사이에서 데이터를 전달하는 통로로 주소 버스, 제어 버스가 있습니다. 주소버스는 데이터를 정확하게 실어나르기 위한 주소를 전달하는 역할을 합니다. 제어버스는 CPU가 기억장치는 입출력장치에 제어 신호를 전달하는 통로입니다.(읽기 쓰기, 인터럽트 요청 승인, 클락 리셋 등) 캐시 메모리 CPU가 주기억장치에서 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음..

Computer Science 2021.03.31

[Unity C#] 문자열 뒤집기

public class StringReverse_Source : MonoBehaviour { void Start() { string input = "Hello"; char[] arr = input.ToCharArray(); Reverse(arr); for(int i = 0; i < arr.Length; i++) { Debug.Log(arr[i]); } } void Reverse(char[] arr) //Switching { //char배열로 변경 char temp; for(int i = 0; i < (arr.Length/2); i++) // 앞쪽 절반만 돌아서 뒤쪽과 switcing { temp = arr[i]; arr[i] = arr[arr.Length -1 -i];//arr.Length-1가 맨 뒤이..

[Unity C#] 중복 문자열 체크 (아스키코드, 유니코드)

문제 중복된 문자열이 있는지 체크하라 소스코드 public class StringUnique_Source : MonoBehaviour { // Start is called before the first frame update void Start() { Debug.Log(isUnique_ASCII("Hello")); Debug.Log(isUnique_UNICODE("Hello")); } public bool isUnique_ASCII(string str) { if (str.Length > 128) return false; bool[] char_set = new bool[128]; for (int i = 0; i < str.Length; i++) { int val = str[i]; // 1. int형으로 캐..