전체 글

개발은 좋은데 뭘로 개발할까
CS/HCI 윈도우즈프로그래밍

[OpenGL] 12. Shader (8) - 여러 Texture 생성하기

Sampler GLSL 에서 텍스쳐 객체를 저장하기 위한 내장 데이터 타입 (일종의 컨테이너) 이다. 텍스쳐 타입에 따라 sampler1D, sampler2D, sampler3D 등으로 분류되며, uniform 변수로 선언한다. 기본적으로 디폴트값이 정해져 있어서, 텍스쳐를 하나만 바인딩하는 경우에는 직접 유니폼 변수에 값을 등록하지 않아도 바로 사용할 수 있다. 텍스쳐를 유니폼 변수에 직접 등록하기 텍스쳐를 유니폼 변수에서 사용할 때는 텍스쳐의 위치에 해당하는 정수값을 넘겨주게 된다. 이러한 텍스쳐의 위치를 texture unit 이라고 한다. 이 텍스쳐 유닛의 기본값은 0이다. (그래서 하나를 바인딩할 때는 바로 가져다 사용할 수 있는 것) 텍스쳐 유닛을 사용하는 이유는 사용자가 셰이더로 하여금 1개..

CS/프로그래밍언어론

[프로그래밍언어론] 3. Syntax 와 BNF, Parse Tree

개요syntax와 semantics는 프로그래밍 언어의 2가지 축이다.syntax는 문법과 문법에 따라 만들어 놓은 문장을 의미한다.semantics는 수식, 문장, 프로그램 유닛들이 지니는 의미를 말한다. 예를 들어 x = 3 이라는 문장이 주어졌을 때syntax는 'x' 라는 문자 옆에 '=' 이라는 문자, '3' 이라는 문자가 올 수 있다는 그 문법을 체크하는 것이 목표고,semantics 는 x가 변수, = 가 대입 연산자, 3은 정수라는 의미를 부여하는 것이 목표이다. 문법은 문장이 어떻게 쓰여야 하는지 그 규칙을 기술한 것.시멘틱은 각 문장과 그 요소들이 갖는 의미를 기술한 것이라고 볼 수 있다.Syntaxsentence (문장) : 문자들의 집합language (언어)..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 9. Application Layer (2) : HTTP와 Cookie

HTTP웹페이지는 HTML 파일, 이미지, Java applet, 오디오 파일과 같은 object 들로 구성되어있다.이 각각의 오브젝트는 서로 다른 웹 서버에 존재할 수 있다.웹 페이지는 base html 파일에 서로다른 각가의 오브젝트 URL로 연결시켜 구성한다. HTTP (HyperText Transfer Protocol) 은 웹 서비스의 어플리케이션 계층 프로토콜이다.HTTP의 Hypertext는 위에서 말한 오브젝트를 의미한다. 이 프로토콜은 client - server 패러다임을 따른다.클라이언트는 웹 브라우저로, 웹 서버에 오브젝트를 요청하고, 얻어낸 오브젝트를 사용자에게 보여주는 역할을 한다.서버는 웹 서버로, 웹 브라우저가 요청한 오브젝트를 HTTP 프로토콜을 사용하여 보..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 11. Shader (7) - Texture Wrapping, Filtering, MipMaps

Texture Wrapping 텍스쳐의 좌표 범위는 (0,0) 에서 (1,1) 이다. 만약 이 범위 밖의 좌표를 지정할 경우, OpenGL은 기본적으로 텍스쳐를 반복한다. 만약 단순 반복하는게 아니라 대칭반복하거나, 클램핑하거나, 지정한 색으로 채우고 싶을 경우, 아래와 같은 다양한 옵션을 사용할 수 있다. GL_REPEAT, GL_MIRRORED_REPEAT, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER 이 설정값은 텍스쳐를 컨텍스트에 바인딩한 이후, 설정값을 넣는다. x축, y축에 대해 각각 설정을 지정해야 하는데, 아래와 같이 glTexParameteri 함수를 사용하여 지정할 수 있다. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ..

CS/프로그래밍언어론

[프로그래밍언어론] 2. 프로그래밍 언어의 진화

Zuze's Plankalkul세계 최초의 컴퓨터 x1을 프로그래밍하기 위해 나온 언어1945년에 나온 언어인데, 이때 벌써 floating point, array, record 의 개념과 상수가 정의되어 있었다. A[5] = A[4] + 1 를 이렇게 썼고, 1.n 은 데이터 타입을 나타낸 표기라고 한다. Pseudocodes등장 배경컴퓨터가 등장했을 때, 사람들은 컴퓨터에 기계어로 명령을 직접 내려야 했다.기계어는 읽기, 수정하기, 의사표현하기가 매우 힘든 언어였고, index, floating point 의 개념도 없었다. - Short Code (BINAC 컴퓨터에 사용한 슈도 코드) - SpeedCoding (IBM 701 컴퓨터에 사용)700개의 단어 밖에 사용하지 ..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 10. Shader (6) - Texture

Texture 이번 글에서는 객체에 2D 이미지를 입힐 수 있는 '텍스쳐' 라는 기능에 대해 정리한다. 택스쳐는 어떤 이미지 위에 도형 틀을 그리는 것과 비슷하다. 이를 텍스쳐를 도형에 매핑한다고 하는데, 텍스쳐를 도형(가령 삼각형)에 매핑하기 위해서는, 도형의 vertex가 texture의 어느 위치에 해당하는지를 지정해야 한다. 이때 텍스쳐 좌표계를 통해서 위치를 지정할 수 있는데, 텍스쳐 좌표계는 x, y 축에서 0~1사이의 값을 가진다. 기준점은 왼쪽 아래를 원점으로 한다. 그리고 이 텍스쳐 좌표계를 통해 텍스쳐의 색상을 가져올 수도 있는데, 이를 sampling 이라고 한다. Texture 생성 // Create Texture & Bind unsigned int texture; glGenText..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 8. Application Layer (1) : 어플리케이션 계층 개요

인터넷을 사용하는 어플리케이션을 만들 때, 프로그래머는 Transport 계층이 제공하는 서비스 중 어떤 서비스를 사용해서 어플리케이션을 만들 것인지, 어떤 구조로 만들 것인지만 결정하면 된다. 어플리케이션 밑에 있는 라우터, 스위치 같은 core device의 동작에 대해서는 신경쓰지 않아도 된다. Application Design Paradigm 네트워크 어플리케이션을 만들 때 사용할 수 있는 디자인 패러다임으로 크게 client - server 패러다임과 peer to peer 패러다임이 있다. client - server paradigm 데이터를 요구하는 클라이언트와 데이터를 제공하는 서버로 역할을 구분하는 패러다임이다. 서버는 항상 켜져있는 컴퓨터(host)이고, 고정된 IP주소를 가지고 있다...

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 7. Protocol layers

이번 글에서는 네트워크 5계층과 프로토콜에 대해 정리하고자 한다. 인터넷은 매우 복잡하고 거대한 개념이다.이 개념을 그냥 구현하려고 한다면 매우 복잡하고 거대하기 때문에 힘든일이 될 것이다.그래서 이 거대한 개념을 보다 작은 단위의 개념으로 나눈다음, 이 작은 단위의 개념을 서로 연결해서 큰 개념을 구현하도록 설계했다. 비행기 탑승 절차와 레이어예를 들어 비행기를 타고 다른 나라로 여행을 가는 과정을 생각해보자.비행기는 단순히 타고싶을 때 타서 바로 슝 날아가서 도착하는게 아니라 여러 복잡한 절차가 존재한다. 비행기 표 예매 > 짐 맡기기 > 탑승구에서 비행기 탑승 > 활주로 이륙 > 비행 > 활주로 착륙 > 비행기에서 내려 탑승구로 나오기 > 짐 찾기 > 비행기 티켓에 대해 문제가 있..

CS/프로그래밍언어론

[프로그래밍언어론] 1. 프로그래밍 언어의 개념

프로그래밍 언어의 개념을 공부하는 이유- 아이디어 표현 능력 향상- 적절한 언어를 선택하는데 필요한 배경 지식 습득- 새로운 언어 학습 능력 향상- 프로그래밍 언어의 구현 방식에 대한 깊은 이해와 이를 바탕으로한 기존 언어에 대한 이해도 향상 프로그래밍 분야- 과학 분야 (큰 수의 부동 소수점 계산 등) → Fortran- 경영 분야 (레포트 생성, 10진수 숫자와 문자 사용)  → COBOL- 인공 지능 (심볼릭 컴퓨테이션 = 기호를 이용한 논리 전개, 링크드 리스트 사용) → LISP- 시스템 프로그래밍 (지속적인 사용을 위해 효율성이 필요) → C- 웹 소프트웨어 → HTML, PHP, Java 프로그래밍 언어의 평가 기준Readability프로그램을 읽고 이해하기 쉬워야..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 9. Shader (5) - 직사각형에 실시간으로 변하는 색상 입히기 (GLFW, GLAD)

직사각형에 색상 입히기 예제 지난 글에 작성했던 내용을 한번 코드로 실습해보고자 한다. 우선 아래와 같이 색상을 입힌 직사각형 코드를 준비했다. #include #include #include "Shader_s.h" #include float vertex_data[] = { -0.5, -0.5, 1.0, 0.2, 0.2, 0.2, // 왼쪽 아래 0.5, -0.5, 1.0, 0.3, 0.3, 0.3, // 오른쪽 아래 -0.5, 0.5, 1.0, 0.4, 0.4, 0.4, // 왼쪽 위 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, // 오른쪽 위 }; unsigned int index_data[] = { 0, 1, 2, 1, 2, 3 }; int main() { glfwInit(); glfwWi..

에버듀
Blog. 에버듀