분류 전체보기 504

[OpenGL] ※그래픽 파이프라인과 GLSL(ShaderProgram)

전통적인 그래픽스 파이프라인 예전에는 모두 fixed vlsi칩으로 구현했기 때문에 수정할 수 없다. Vertex input Vertex Processing primitive assembly rasterization fragment processing blend framebuffer fixed hardware Vertex Processing 입력받은 Vertex의 좌표 변환(transform) 필요하다면 위치를 조금씩 수정한다. Primitive assembly vertex(꼭지점)를 결합한다. (graphics primitive) 1vertex(점), 2vertex(선), 3vertex(삼각형) 컴퓨터 테크픽스 관점에서는 다른 다각형들을 모두 삼각형으로 분해할 수 있다. 그래서 삼각형으로 최적화하려는 ..

OpenGL 2024.04.03

[OpenGL] 래스터 저장방식과 컬러

래스터 저장방식 이는 기본적으로 3D 모델을 화면에 픽셀로 렌더링하는 프로세스를 의미합니다. 래스터화란, 3차원 공간에서의 객체들을 2차원 화면에 표현하기 위해 필요한 작업들을 의미합니다. OpenGL에서 래스터화는 다음과 같은 단계로 이루어집니다: 정점 처리(Vertex Processing): 래스터화 프로세스는 우선 3D 모델의 정점들을 처리합니다. 이 과정에서는 정점의 좌표를 변환하고, 조명, 텍스처, 카메라의 시점 등과 같은 다양한 효과들이 적용됩니다. 기하 처리(Geometry Processing): 정점 처리 이후, OpenGL은 이들 정점을 기하적으로 처리합니다. 이 과정에서는 정점들을 선, 삼각형 등의 기본 기하 요소들로 결합하고, 클리핑(화면 영역 밖의 기하 요소들을 제거) 등의 작업을 ..

OpenGL 2024.04.03

[OpenGL] Delayed execution 지연실행와 glFlush, glFinish

OpenGl 함수는 효율성을 높이기 위해 명령어 큐에 기록하고 바로 retrun한다. OpenGL에서의 delayed execution은 일반적으로 OpenGL 명령이 실제로 그래픽 처리 장치인 GPU에 의해 처리될 때까지 실행이 지연되는 것을 의미합니다. OpenGL에서 그래픽 명령을 호출하면 이러한 명령들은 일반적으로 버퍼에 쌓이게 됩니다. 그러나 이들 명령이 실제로 그래픽 처리 장치인 GPU에 의해 실행되는 시점은 보장되지 않습니다. OpenGL은 이들 명령을 GPU에 보내고, GPU가 이들을 처리할 때까지 기다리지 않습니다. 따라서 OpenGL 명령이 실제로 실행되는 지점은 명령을 호출한 다음 프레임 버퍼를 사용하거나 명령의 결과를 읽어들일 때까지 알 수 없습니다. 이러한 delayed execu..

OpenGL 2024.04.02

[OpenGL] Double buffering와 glfwSwapBuffers

화면을 업데이트하다가 생기는 문제 때문에 하드웨어적인 해결처를 찾은 게 double buffering이다. 우선 프레임버퍼는 그래픽스 카드상에 있는 특별한 2D Array를 의미한다. 쉐도우 프레임을 이용하여 2D Array인 프레임 버퍼 에다 어떤 내용을 업데이트한다. 그러면 그래픽 카드에 하드로 구현되어 있는 디스플레이 프로세서가 이 2d Array를 계속 무한 반복해서 모니터에 그대로 보여준다. 디스플레이 프로세서는 1초에 60~ 120번 정도에 굉장히 빠른 속도로 화면을 업데이트하고 있는 게 문제가 될 수 있다. Partial Update Problem이라는 문제로 어떤 경우는 처음에 OpenGL 프로그램에서 쉐이드 프로그램이 프레임 버퍼에 그림을 다 그려놓은 상황에서는 문제가 없다. 하지만 Op..

OpenGL 2024.04.02

[OpenGL] GLAD 설치 및 사용법

GLAD는 라이브러리를 인스톨 하는것이아닌 필요한 소스 코드를 생성해서 내 프로젝트에 가져가는 개념이다. Url : https://glad.dav1d.de/ https://glad.dav1d.de/ Extensions... glad.dav1d.de 생성 원하는 버전 선택 후 생성 include 복사 다운받은 glad폴더의 include폴더안 glad, KHR폴더를 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\xx.yy.zzzzz\include 안에 복사해준다. glad.c 사용 glad.c는 직접 소스코드에 포함시킨다. #include #include #pragma comment(lib, "glew32.lib") #pragm..

OpenGL 2024.04.01

[OpenGL] GLEW 설치 및 적용 방법 (glew32.dll 오류해결)

GLEW는 크로스플랫폼으로 서로 다른 플랫폼에서 사용하여 서로다른 플랫폼간의 호환성 문제를 해결할 수 있습니다. 확장 로딩: GLEW는 OpenGL 확장 로딩을 자동으로 처리하여 개발자의 프로세스를 단순화합니다.이식성: Windows, macOS 및 Linux와 같은 여러 플랫폼과 호환됩니다.확장 쿼리: 애플리케이션이 실행되는 컴퓨터에서 OpenGL 확장이 지원되는지 쉽게 확인할 수 있습니다. 다운로드 URL : https://glew.sourceforge.net/ GLEW: The OpenGL Extension Wrangler LibraryThe OpenGL Extension Wrangler Library The OpenGL Extension Wrangler Library (GLEW) is a cros..

OpenGL 2024.03.29

[OpenGL] GLFW 설명과 설치

OpenGL을 사용하여 그래픽 애플리케이션을 만들 때 유용하게 활용됩니다. GLFW는 크로스 플랫폼이며, 창 생성, 입력 처리, OpenGL 컨텍스트 생성 및 관리 등의 기능을 제공합니다. 다양한 윈도우 시스템(x window, macintosh, microsoft windows...)등 다양한 윈도우 시스템에서 작동하는 추상적 윈도우 시스템을 만든다. 단점으로는 모든 윈도우 시스템에 공통인 기능만 제공한다. 대화형 프로그램으로 입력->처리->출력의 무한 반복을 수행한다.(출력 결과를 보고 다시 새로운 입력)결국 이런 대화형 프로그램은 이벤트 루프 모델을 따라간다. main loop가 무한 반복 하며 callback 함수를 미리 등록하여 사용한다.input event 발생 여부 체크(unity의 upda..

OpenGL 2024.03.29

[Git] 저장소 옮기기git history 유지(마이그레이션) mirror

mirror를 사용하여 옮기기 Git mirror는 일반적으로 기존 저장소의 완전한 복제본을 만드는 것을 의미합니다. 이는 모든 커밋, 브랜치, 태그 및 기타 저장소의 역사를 포함합니다. Mirror를 만드는 주요 이유 중 하나는 보통 다른 서버나 호스팅 서비스로 저장소를 이전할 때입니다. 일반적으로 Git mirror를 만드는 방법은 다음과 같습니다: 원본 저장소 복제: 먼저 원본 저장소를 복제합니다. 이를 위해 보통 git clone --mirror 명령을 사용합니다. 이 명령은 저장소의 모든 내용을 복제하고 원격 저장소의 모든 브랜치와 태그를 로컬에 복사합니다. 새로운 위치에 복제: 복제된 저장소를 새로운 위치에 저장합니다. 일반적으로 이 단계에서는 원격 서버나 다른 호스팅 서비스에 새로운 저장소를..

형상관리/Git 2024.03.28

[Unity] Addresable 어드레서블를 이용한 웹서버 원격 로드방법

어드레스블 에셋 시스템 설명 https://blog.unity.com/kr/games/addressable-asset-system 어드레서블 에셋 시스템 | Unity Blog 어드레서블의 주된 기능은 로드할 대상이 되는 에셋과 에셋이 로드되는 위치 및 방식을 분리하는 것입니다. 씬, 프리팹, 텍스트 에셋을 비롯한 모든 에셋을 어드레서블(위치 지정 가능)로 표시 blog.unity.com 어드레스블 메모리 최적화 설명 https://blog.unity.com/kr/technology/tales-from-the-optimization-trenches-saving-memory-with-addressables 어드레서블 에셋 시스템으로 메모리 최적화하기 | Unity Blog 위에서 발생한 문제를 해결하기 위..

Unity 2024.03.26

[OpenGL] OpenGL특성 및 유용한 라이브러리

OpenGL(Open Graphics Library)은 컴퓨터 그래픽스를 위한 크로스 플랫폼 API(Application Programming Interface)입니다. 이는 2D 및 3D 그래픽 애플리케이션을 개발하기 위한 강력한 도구로 널리 사용됩니다. OpenGL은 다양한 운영 체제에서 동작하며, 컴퓨터, 모바일 기기, 게임 콘솔 등 다양한 플랫폼에서 지원됩니다. void glClearColor 화면을 지울 때 색깔을 뭐로 할지 결정한다. void glClear 화면을 클리어 시킨다. GLFW htttp://www.glfw.org/ GLFW는 크로스 플랫폼 라이브러리로서 Windows, macOS 및 Linux(OpenGL ES)와 같은 다양한 운영 체제에서 사용할 수 있습니다. 또한 C 언어 기반..

OpenGL 2024.03.25