Home
10점... 10점이요!
Cancel

OpenGL [11] 데이터(4) - 텍스처

OpenGL은 데이터를 저장하고 접근하기 위해 2개 형태의 데이터 스토리지를 제공한다. 버퍼 텍스처 텍스처 텍스처(texture)는 쉐이더가 읽기도 하고 쓰기도 하는 구조화된 스토리지 형식을 갖는다. 대부분 이미지 데이터를 저장할 때 사용되지만, 여러 다른 용도로 사용할 수도 있다. 텍스처 생성 및 읽기 텍스처를 생성하려면 이름을 ...

OpenGL [10] 데이터(3) - 쉐이더 스토리지 블록

유니폼 블록이 제공하는 버퍼 객체를 읽기 전용으로만 사용하지 않고, 쉐이더 스토리지 블록을 사용하면 쉐이더에서 쓰기 공간으로 사용할 수도 있다. 뿐만 아니라 쉐이더 스토리지 공간의 멤버에 대해 어토믹 연산을 수행할 수도 있다. 쉐이더 스토리지 블록은 크기 제한값이 훨씬 크다. uniform 대신 buffer 지시어를 사용한다. layout(bind...

OpenGL [09] 데이터(2) - 유니폼

비록 스토리지의 형태는 아니지만, 유니폼을 사용하면 어플이 직접 쉐이더 스테이지로 데이터를 전달할 수 있다. 어떻게 선언하느냐에 따라 2개의 방식으로 나뉜다. 디폴트 블록에 선언 유니폼 블록에 선언 디폴트 블록 유니폼 유니폼은 전체 프리미티브 배치를 렌더링하는 동안 또는 그 후에도 변하지 않고 균일하게 남아 있는 데이터를 쉐이더에 전달...

OpenGL [08] 데이터(1) - 버퍼

OpenGL은 데이터를 저장하고 접근하기 위해 2개 형태의 데이터 스토리지를 제공한다. 버퍼 텍스처 버퍼 버퍼는 타입이 정해져 있지 않은 데이터의 연속 공간이다. 버퍼는 이름으로 구별된다. 버퍼를 사용하기 전에 OpenGL을 통해 사용할 이름을 예약해야 하고, 그 이름을 사용해서 메모리를 할당하고 그 메모리에 데이터를 저장한다. 버퍼...

OpenGL [07] 지오메트리 쉐이더

지오메트리 쉐이더는 프리미티브당 한 번 수행되며, 수행되는 프리미티브를 구성하는 모든 버텍스에 대한 입력 버텍스 데이터에 접근할 수 있다. 다른 고유한 기능으로 파이프라인 중간에 프리미티브의 모드를 변경하는 기능이 있다. 예를 들면 삼각형들을 입력으로 하여 여러 점이나 선을 출력으로 만들어낼 수 있다. 아래 코드와 같이 말이다. geometry_s...

OpenGL [06] 테셀레이션

테셀레이션(tessellation, 조각화)은 고차 프리미티브(OpenGL에서는 patch로 알려져 있다)를 더 작고, 단순한 여러 개의 렌더링 가능한 프리미티브(예를 들면 삼각형)로 분할하는 작업이다. 이론적으로 테셀레이션 단계는 버텍스 쉐이딩 스테이지 바로 다음에 위치하며, tessellation control shader, tessellatio...

OpenGL [05] 인터페이스 블록

스테이지 간 데이터 전달 in 키워드를 사용해서 버텍스 속성을 생성하고, 코드에서 버텍스 쉐이더로 데이터를 전달할 수 있다. 예를 들어 glVertexAttrib*(). 한 쉐이더에서 out 키워드를 사용하여 데이터를 출력하면 다음 스테이지에서 in 키워드로 선언된 유사한 이름의 변수로 보내진다. 인터페이스 블록 실제 애플리케이션에서는 많은 다...

OpenGL [04] 그래픽스 파이프라인

그래픽스 파이프라인(Graphics pipeline) 또는 랜더링 파이프라인(Rendering pipeline)이라고 불린다. 이는 OpenGL이 객체를 렌더링할 때 수행하는 일련의 단계다. 여기서 렌더링은, 쉽게 말하면 3차원 개체를 가져와서 2차원 화면에 픽셀로 표현하는 것이다. OpenGL 렌더링의 기본 단위는 프리미티브(primitive)다....

GitLab pre-receive hook declined 에러

feature 브랜치에서 작업을 끝낸 뒤, master 브랜치로 merge 하고 push를 하니까 'pre-receive hook declined' 에러가 발생했다. $ git push origin master remote: GitLab: You are not allowed to push code to protected branches on this...

QT 로그 위젯 만들기

Python에서 제공하는 logging 모듈을 사용하여 로그가 작성되는 위젯을 만들 것이다. 이 모듈은 로그 메시지를 생성, 저장, 출력하는 기능을 제공하며 다양한 로그 레벨도 제공한다. 로그 레벨은 다음과 같다. DEBUG INFO WARNING ERROR CRITICAL 각 레벨은 중요도에 따라 순서가 정해져 있으며, 높...

Trending Tags