오늘은 GL 에서 중요한 기본 개념인 Graphics pipeline에 대해 정리하고자 한다. 지난 글에서 프레임 버퍼를 설명할 때, 그래픽 프로그램이 적절히 처리한 데이터를 프레임 버퍼에 저장하면, 프레임 버퍼에 저장된 데이터를 비디오 컨트롤러가 가져다가 화면에 출력할 수 있는 데이터로 변환해준다고 했다. 이제 구체적으로 그래픽 프로그램이 어떻게 '적절히 처리' 하는지 과정을 살펴보자. 먼저 프레임 버퍼에 데이터를 저장하기까지 처리하는 큰 흐름은 위와 같다. 이 흐름을 따라가려면 먼저 Vertex 에 대한 이야기를 해야한다. 이를 위해 OpenGL 의 기본 용어 4가지를 정리해보자. Open GL 기본 용어 Primitive : 원시적인 이라는 뜻 그대로, 렌더링의 기반이 되는 기본 단위(점, 선, 삼..
한번 간단한 GLFW 기본 예제를 뜯어보자. 우선 전체 소스코드는 아래와 같다. // OpenGL1 glfw.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include #include #include void framebuffer_size_callback(GLFWwindow* window, int width, int height); void processInput(GLFWwindow* window); const unsigned int SCR_WIDTH = 800; const unsigned int SCR_HEIGHT = 600; int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJ..
Graphics API Open GL 프로그래밍에 앞서 Graphics API 에 대해 정리하고자 한다. 그래픽 API는 말 그대로 그래픽 작업을 하는데 필요한 주요 기능을 추상화하여 API로 제공해주는 도구를 말한다. 그래픽 어플리케이션을 만든다면 사용자가 이 어플리케이션과 상호작용할 때 결국 키보드도 쓰고 마우스도 쓰고, 컴퓨터는 화면을 그리기 위해 그래픽카드도 사용하고 할텐데, 그런 하드웨어와 프로그램 사이에 정보를 주고받을 수 있는 중간 통로 역할을 하게 된다. 보통 3차원을 그리기 위해서 Graphics API를 사용할텐데, 이때 크게 High Level API 와 Low Level API로 나뉘어진다. High Level API 프로그래머 친화적인 방식이다. 어떤 그림을 그리기 위한 자세한 과..
2시간의 삽질 끝에 성공한 GLFW, GLAD 환경설정 과정을 정리한다. 개발환경 세팅이 언제나 제일 어렵다.. GLFW 설치 GLFW (Graphics Library Framework) 는 OpenGL에서 데스크톱 개발을 하기 위한 도구를 제공한다. 그래픽스 개념을 적용하여 어플리케이션을 만드는 도구이다. 학교 강의록에서는 교수님이 CMake를 설치하고 직접 GLFW 파일을 빌드하여 사용하는 것을 알려주셨다. https://www.glfw.org/download.html Download GLFW source code and binary distribution download links. www.glfw.org 그대로 따라하면서 계속 뭔가 막혀서 답답했는데 이 사이트에 가면 이미 빌드된 파일을 함께 제공..
3월 26일 4주차 백엔드 스터디 이번에는 지난 과제에 이어 Controller 를 만들었다. Domain > Repository > Service > Controller 이렇게 차근차근 만드는 과정을 하다보니 스프링 프레임워크의 레이어에 대해 더 이해가 잘 되는 것 같다. 지난주 서비스 과제를 하면서 다른 사람의 코드를 읽는 것이 인터넷 검색을 해서 정보를 찾아가며 공부하는 것보다 배워가는 것도 많고 더 효율이 더 좋은 것 같다고 느껴서 이번 과제는 컨트롤러에 대해 하나하나 찾아보기보다 완성된 스프링 프로젝트의 컨트롤러 구조를 참고하여 공부하기로 했다. https://github.com/woowacourse-teams/2023-hang-log GitHub - woowacourse-teams/2023-h..
3월 19일 백엔드 스터디 지난 주 과제를 발표하고, Service 계층을 구현하는 과제를 수행했다. 지난 주 과제는 나도 발표하게 되었는데, 레포지토리 레이어를 구현하는 부분에 대해 내가 Spring Data Repository를 사용하지 않아서 왜 안썼는지에 대해 궁금해해서 그것도 발표하게 되었다.. 사실 몰라서 안썼던 거라... 그냥 쌩으로 Repository를 구현하다보니 반복적인 작업을 하는게 너무 귀찮고 힘들었음을 느껴서 Spring Data Repository를 써야하는 이유를 몸으로 느끼게 된 과제였다고 말하면서 마무리했다..ㅎ 발표 이후에는 2명씩 짝을 지어서 서로의 코드를 리뷰하는 시간을 가졌는데, 잘하는 사람의 코드를 읽으면서 배워가는 점이 정말 많다는 걸 느낄 수 있었다. 생성시간,..
Internet Structure첫번째 글에서 인터넷은 infrastructure 로서의 기능도 수행한다고 하였다.그렇다면 전 세계에 깔려있는 인터넷(Internet)은 어떤 구조로 구성되어 있을까? 인터넷의 구성을 다시 한번 복기해보자.네트워크 엣지에는 host, access network, physical link 가 있었다.네트워크 코어에는 ISP 와 각종 라우터가 있었다. 네트워크 엣지에 존재하는 host는 ISP의 access network 를 통해 ISP의 네트워크와 연결된다.그리고 다시 ISP도 서로서로 연결되어있다.KT통신망을 쓰는 사람과 STK 통신망을 쓰는 사람이 서로 연락이 가능한 것도 그 이유이다.따라서 어떤 ISP에 연결만 되어있다면, 그 사람은 전 세계 모든 ..
3월 12일 백엔드 스터디 3월 12일 스터디는 온라인으로 진행되었다. 3월 13일 정기 세션이 대면으로 진행되었기 때문이다. 스터디는 5명의 멤버를 지원받거나 뽑아서 1주차 과제를 발표하는 시간을 가졌다. 같은 과제에 대해 발표하다보니 같은 내용을 반복적으로 듣는 것도 있었지만, 사람마다 중요하게 강조해서 정리한 포인트가 달라 듣는 재미가 있기도 했다. 이후에는 2주차 과제 및 JPA 설명이 있었다. JPA 소개는 간단하게 큰 흐름을 짚는다는 느낌으로 진행되었고, 과제는 에브리타임 ERD 모델링 이후, 엔티티 클래스 작성 및 레포지토리 레이어 테스트를 진행하는 것으로 진행되었다. 과제는 나에게 굉장히 도전적인 과제였다.. 내가 공부한 내용은 김영한 스프링 입문, 스프링 JPA 활용 1편이 전부였기 때문..
네트워크는 Network Edge 와 Network Core 로 구성되어 있다. Network Edge는 크게 Host와 Host가 접근하는 가장 가까운 네트워크인 Access Network, 그리고 이들 사이를 연결하는 Physical Link로 이루어져있다. 이제 Network Core에 대해 정리해보자. Network Core, Forwarding, Routing 네트워크 코어는 라우터들이 서로 연결되어있는 mesh (그물망) 형태의 모양이다. mesh 라고 하면, 정형화 되어있는 (특정한 형태가 있는) 모양이 아닌, 얼기설기 얽힌 모양을 뜻한다. host의 어플리케이션이 보낸 메세지가 패킷으로 잘게 나뉘면, 이 패킷은 physical link를 타고 네트워크 코어에 있는 라우터로 들어간다. 호스트..
백엔드 1주차 스터디 (3월 5일) 최종 합불 결과가 3월 4일에 나왔는데, 바로 다음날부터 스터디가 진행되었다. 그래도 학기초에 여유 있을 때 부지런히 스터디를 하고, 시험기간에 여유있게 스터디를 빼는 스케줄이라 더 좋았다ㅎㅎ 1주차 스터디에서는 스프링이라는 프레임워크에 대해 공부하는 시간을 가졌다. 신촌지역에 있는 스터디룸을 대여하여 진행하였으며, 간단한 자기소개 후, 운영진이 노션에 정리한 스터디 내용을 강의하는 식으로 진행되었다. (스터디 방식과 진도를 보면 알겠지만, 스프링 프레임워크를 처음 써보는 사람이 감당할 수 있는 정도가 아니다. 세오스 지원할 생각이 있다면 꼭 스프링 프레임워크를 한번이라도 써보고 지원하자) 1주차 스터디 내용은 스프링 핵심 원리인 IoC/DI, AOP, PSA 개념과 ..