일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- vertex
- fetching
- 솔루션에프로젝트추가
- superbible
- 수리명제
- visualstudip
- vertexarrayobject
- Tutorial
- OpenGL
- git
- 파일생성 명령어
- VAO
- interface block
- 자동판결
- 정의
- turingmachine
- glfw
- glDrawArrays
- .sln
- multi process
- 시작
- 프로젝트 여러개
- 튜링기계
- vertex sahder
- 멀티프로세스
- shader
- 하나의 솔루션
- fragment
- Qtspim
- qtspim stack
- Today
- Total
목록개발 | OpenGL (9)
공사중
버텍스 패치 버텍스 쉐이더 테셀레이션 컨트롤 쉐이더 테셀레이션 테셀레이션 이벨류에이션 쉐이더 지오메트리 쉐이더 래스터라이제이션 프래그먼트 쉐이더 프레임버퍼 동작 Tessellation : 조각화 tesellation은 고차 primitive(openGL에서는 patch라고도 함)을 여러 개의 rendering이 가능한 primitive로 분할하는 작업입니다. 위 순서도에서 볼 수 있듯이 세 개의 단계로 구성됩니다. Tessellation Control Shader tesellation control shader 쉐이더는 vertex shader로부터 입력을 받아서 주로 두 가지 일을 진행합니다. tesellation engine에 보낼 tesellatino level을 결정한다. (engine에 보내는 ..
버텍스 패치 버텍스 쉐이더 테셀레이션 컨트롤 쉐이더 테셀레이션 테셀레이션 이벨류에이션 쉐이더 지오메트리 쉐이더 래스터라이제이션 프래그먼트 쉐이더 프레임버퍼 동작 vertex fetch부터 vertex shader까지 openGL에서 첫 번째 프로그래밍가능 스테이지이자 유일한 필수 스테이지인 vertex shader stage이전에는 vertex fetch 스테이지가 실행됩니다. GLSL에서 쉐이더로 데이터를 가져오거나 보내는 작업은 in/out 키워드를 사용해서 전역변수를 선언하는 방식으로 이루어집니다. 이전에 작성했던 fragment shader에서 out 키워드를 사용해서 색상을 출력했습니다. 이처럼 이전 쉐이더에서 out 키워드를 포함하고, 다음 쉐이더에서 in 키워드를 포함하는 방식으로 데이터를 ..
일단은 본 내용을 눈으로 보면서 이해합니다. 실제로 실행해보는 것은 필요할 때에 언급하겠습니다. 빈 윈도우 띄워보기 #include "sb7.h" class my_application : public sb7::application { public: void render(double currentTime) { static const GLfloat red[] = { 1.0f, 0.0f, 0.0f, 1.0f }; glClearBufferfv(GL_COLOR, 0, red); } }; DECLARE_MAIN(my_application); 먼저 sb7.h를 include 합니다. 이 헤더파일은 sb7라는 namespace를 정의하고 그 안에 applicaion이라는 이름을 가지는 class를 정의합니다. 우리는 ..
프로젝트 빌드하기 여기에서 openGL SuperBible의 샘플 코드를 다운받습니다. 원하는 위치에 압축을 해제합니다. 여기에서 Cmake를 다운받습니다. CMD를 열고 cmake라고 입력했을 때 아래와 같은 화면이 나오지 않는다면 path를 추가합니다. {2.에서 압축을 해제한 위치}\sb7code-master\extern\glfw-3.0.4로 이동한 다음, 아래의 코드를 CMD에 입력합니다. '.'까지 입력해야합니다. cmake -G "Visual Studio 15" . {2.에서 압축을 해제한 위치}\sb7code-master\extern\glfw-3.0.4에 생긴 GLFW.sln파일을 VS2017로 실행해서 아래의 두 버전으로 빌드합니다. 아래 디렉토리에서 debug 파일 안에 있는 glfw3...
openGL이란? openGL의 GL은 Graphics Library를 의미합니다. openGL은 애플리케이션이 그 하부에서 동작하는 장치의 그래픽스 서브시스템에 접근하고 제어하기 위해 사용하는 인터페이스입니다. 서브시스템에 대한 인터페이스를 표준화하면 다양한 플랫폼에 대해서 고민하는 것이 아니라, 흥미로운 컨텐츠를 개발 하는데 집중할 수 있습니다. 이렇게 표준화된 Application Programming Interface를 API라고 부르고 openGL은 API입니다. openGL의 목표 openGL의 목표는 애플리케이션과 그 하부의 그래픽스 서브시스템의 추상화 레이어를 제공하는 것입니다. 이 말은 그래픽스 서브시스템을 구성하는 그래픽스 프로세스 유닛(GPU)의 제작사가 어디인지, 어떻게 동작하는지,..
youtube에서 openGL를 사용해서 마인크래프트를 일주일 프로젝트로 만드는 영상을 보고 openGL을 배워야겠다는 생각을 처음 했습니다. 안드로이드 프로그래밍이 생각보다 취향에 잘 안맞는다는 생각이 들었고, 이 이후 오랜만에 관심이 가는 분야가 생겼습니다. 이제부터 OpenGL에 대해서 차근차근 알아보려고 합니다. 이전 포스팅에서 조금 다루긴 했지만 'OpenGL Super Bible'이라는 책을 보면서 다시 정리하려고 합니다. 누가 언제봐도 그대로 따라할 수 있을 정도로 깔끔하게 정리해보려고 합니다.
openGL을 만지기 전에 가장 먼저 그래픽 드라이버 업그레이드를 진행합니다. 일단 업그레이드를 확인하고나면 추후에 발생할 수 있는 자잘한 버그들을 미리 처리할 수 있습니다. 제어판 -> 시스템과 보안 -> 시스템 -> 장치 관리자 -> 디스플레이 Third party library를 추가하는 방법에서 알아봤던 것처럼, CMAKE를 사용해서 소스코드 파일을 빌드해서 프로젝트 파일.sln을 만듭니다. 프로젝트 파일을 실행하고 아래의 코드를 입력합니다. 단순한 window를 띄우는 내용인데 그리 짧지가 않습니다. 외부 library를 사용하는 코드이다보니 설명이 좀 되지만 읽으면 이해하는데 큰 도움이 됩니다. // Include standard headers #include #include /* Includ..
https://learnopengl.com/Getting-started/Creating-a-window위 링크의 튜토리얼을 보고 따라하면서 나중에 리마인드할 때 보기 위해서 정리한 포스팅입니다. 그래픽을 그리기 위해서는 window, context, handler를 만들어야하지만 OS 마다 이들을 만드는 방법이 다릅니다. 그래서 openGL은 이들을 만드는 방법을 플랫폼과 상관없는 추상화된 방법을 제공합니다. OS마다 차이가 없는 방법으로 제공되기 때문에 편리하지만 context와 handler를 정의하는 것을 개발자가 직접 해야한다는 단점이 있습니다. 특히 openGL을 위해서 이런 수고(각 플랫폼 별로 같은 일을 하기 위해서 다른 코드를 작성해야하는)를 덜어주는 것이 여러가지 있고 우리는 이들 중 G..