OpenGL
-
Drawing PrimitivesOpenGL/iOS_Metal 2019. 7. 3. 22:17
안녕하세요 dely입니다:) 오늘은 shader를 사용하여 화면에 그라데이션 되는 컬러를 입혀보겠습니다. - vertices, indices 설정 화면을 삼각 폴리곤 두개로 나누어 생각할 수 있는데요 삼각형은 점의 위치에 상관없이 항상 평면으로 만들 수 있기 때문에 폴리곤 기본 도형으로 쓰입니다..(라고 들었던 기억이 있습니다..) 그래서 화면에 컬러를 입힐 때 삼각형 두개로 나누어서 각 vertex 값을 배열에 입력합니다. 반시계 방향으로 입력합니다. 빨간 삼각형 : [1, -1, 0, -1, 1, 0, -1, -1, 0] 노랑 삼각형 : [1, -1, 0, 1, 1, 0, -1, 1, 0] quad_vertex = [1, -1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, ..
-
Hello Again, MetalOpenGL/iOS_Metal 2019. 7. 1. 21:48
안녕하세요 dely입니다:) iOS Metal을 사용하여 하나씩 이해해나가며 그래픽스 실습을 해보려합니다. 일단 가볍게 화면 background에 노란색 칠하기를 해보겠습니다. 먼저 프로젝트를 하나 만들고, ViewController에 MetalKit을 import합니다. import MetalKit MetalKit 안에는 렌더링 후 출력에 필요한 View를 구성하는 역할을 가진 MTKView가 있습니다. storyboard에서 MTKView를 배치하고 ViewController와 연결해줍니다. @IBOutlet weak var metalView: MTKView! Metal에서 Metal App과 GPU의 관계는 클라이언트-서버 패턴의 관계입니다. 클라이언트인 Metal App에서 어떤 그림을 그려줘~ ..
-
OpenGL ProgrammingOpenGL/Computer Graphics 2019. 7. 1. 17:23
안녕하세요 dely입니다:) 오늘은 OpenGL Programming에 대해서 정리해보겠습니다. GL 프로그램은 렌더링 기능만 수행할 뿐, 입력장비를 통해 사용자 입력을 받아들이거나 렌더링 결과를 출력하기 위해 화면에 윈도우를 생성하는 등의 일들을 할 수 없습니다. 그래서 추가적인 유틸리티를 사용하게 됩니다. 프로그램 구성 요소 - GL 라이브러리(GL: OpenGL Core Library) : 렌더링 기능을 제공하는 함수 라이브러리입니다. - GL 유틸리티 라이브러리(GLU: OpenGL Untility Library) : 다각형 분할, 투상, 2차원 곡면 등 고급 기능 제공하는 함수로, GL로 작성 되어 있습니다. 또한 원구, 원뿔, 원기둥을 손쉽게 생성 할 수 있습니다. - GL 유틸리티 툴 킷(G..
-
OpenGL APIOpenGL/Computer Graphics 2019. 7. 1. 16:30
안녕하세요 dely입니다:) 오늘은 OpenGL API에 대해 정리해보겠습니다. OpenGL은 실리콘 그래픽스사의 워크스테이션용 API인 GL이 발전한 것으로, 그래픽 관련 하드웨어를 상위 수준에서 다룰 수 있도록 함으로써 프로그래머가 쉽게 그래픽 처리를 할 수 있도록 도와주는 라이브러리 함수입니다. 또한 OpenGL은 다양한 그래픽 API 중에서 오랫동안 많은 이들이 사용해왔고, 저수준 API로써 그래픽 메모리, 그래픽 가속 칩 등의 하드웨어와 매우 근접되어 있기 때문에 이것을 직접 제어함으로써 하드웨어 성능을 최대한 발휘 시킬 수 있다는 장점을 갖고 있습니다. OpenGL 설계 시 고려 사항 OpenGL을 설계할 때 몇가지 고려한 사항들이 있는데 다음과 같습니다. 범용성 - 거의 대부분의 하드웨어에서..
-
그래픽 프로세서OpenGL/Computer Graphics 2019. 6. 11. 01:33
안녕하세요 dely입니다:) 오늘은 그래픽 카드, 비디오 카드, 비디오 보드, 비디오 어댑터, 그래픽 보드, 그래픽 어댑터 등 여러 용어로 표현되는 그래픽 프로세서에 대해 정리해보겠습니다. 원래 메인 CPU에서 모든 일을 담당했었습니다. 모든 데이터 처리부터 프레임 버퍼를 채우거나, 전자빔의 아날로그 신호로 바꾸는 그래픽 처리 등등.. 그런 바쁜 CPU를 도와주기 위해 개발된 것이 그래픽 프로세서 입니다. 드라이버 소프트웨어에 의해 명령어를 해독하고 실행하는 일, 명령어 실행 결과 최종적인 그림을 프레임 버퍼에 기록하는 일 모두 그래픽 프로세서가 하게 됩니다. GPU 그래픽스에서 2차원 물체와 3차원 물체인지에 따라서 작업 처리 방법이 조금씩 다릅니다. 3차원 물체의 경우는 정점(vertex)을 기준으로..
-
래스터 그래픽 장치 & 벡터 그래픽 장치OpenGL/Computer Graphics 2019. 6. 10. 23:49
안녕하세요 dely입니다:) 오늘은 래스터 그래픽 장치와 벡터 그래픽 장치에 대해 정리해보겠습니다. 먼저, 래스터 그래픽 장치의 래스터(Raster)는 화소를 의미하는데요. 하나의 화소는 R, G, B 색을 띤 인점(Phosphor Dot)으로 구성되어 있습니다. (화면에 인(Phosphor)이라는 형광 물질이 입혀져 있습니다.) 그래서 세가지 인점의 밝기에 따라 하나의 화소의 색상이 결정되게 됩니다. 하나의 영상 화면을 만들 때는 전자빔이 주사선(화면의 가로 방향 화소를 따라 진행하는 선-ScanLine)을 따라 각 화소 색상에 해당하는 세기로 빔을 쏘아 화소 내부의 인점을 밝힙니다. 여기서 자연스레 문제가 생깁니다. 만약 곧바른 모양의 선이나 모양을 그리려 할 때는 화소를 칠하는 방식이기 때문에 아래..
-
그래픽 하드웨어 구성 및 진공관 모니터 작동원리OpenGL/Computer Graphics 2019. 6. 8. 17:39
안녕하세요 dely입니다:) 오늘은 그래픽 하드웨어에 대해 정리해보겠습니다. 그래픽 하드웨어는 성능에 민감한 플랫폼에서 좋은 그래픽을 출력해주기 위해서도 필히 알아야하고, 그래픽스 용어를 이해하는 데에도 큰 도움이 됩니다. 오늘은 그래픽 하드웨어 구성 및 진공관 모니터 작동원리에 대해 알아봅시다. 그래픽 하드웨어에는 무엇이 있을까요? 그래픽 하드웨어는 크게 입력 장치, 메인 컴퓨터, 그래픽 컨트롤러, 출력 장치로 구성됩니다. 책에서는 출력 장치에 대해 설명하기 위해 진공관 모니터의 작동 원리부터 설명을 시작합니다. 진공관 모니터, 즉 CRT 모니터 (https://namu.wiki/w/CRT) 예전 컴퓨터 모니터가 떠오릅니다.. (플로피디스켓을 모르는 요즘 이들은 모를 그것..) 간단히 설명하자면, 필라..
-
컴퓨터 그래픽스 구성요소, 모델링과 렌더링OpenGL/Computer Graphics 2019. 6. 2. 02:23
안녕하세요 dely입니다:) 컴퓨터 그래픽스는 크게 두가지로 작업을 나누어 생각할 수 있는데요 1. 모델링 2. 렌더링 이라고 할 수 있습니다. 그러면 모델링은 무엇인가?? 무엇을 그릴지 장면이나 물체를 정의하는 것. vertex, edge를 사용하여 물체를 그림으로써 컴퓨터에게 이 위치에는 물체의 어느부분이 있어! 라고 얘기하는 것이라고 할 수 있습니다. 제가 요즘 3Ds Max를 사용하여 열심히 만들고 있는 것도 모델링! (vertex를 균일하게 잘 표현하는 것이 중요하다는 것을 느끼는 요즘입니다.. 허헣..) 그 다음으로 렌더링은 무엇일까요?? 흔히 렌더링 건다라고 말하기도 하는데요 모델링 해둔 것에 조명이나, 카메라 이동, 표면 재질 같은 것을 표현하여 영상(장면)을 만들어 내는 과정을 말합니다...