본문 바로가기

C++

(113)
Game Physics Engine Development - Chapter 4 : 입자 물리 엔진 보호되어 있는 글입니다.
Learn OpenGL - Advanced OpenGL : Geometry Shader link : https://learnopengl.com/Advanced-OpenGL/Geometry-Shader Geometry Shader 정점과 조각 쉐이더 사이에 기하학 쉐이더라고 불리는 선택적인 쉐이더 스테이지가 있다. 기하학 쉐이더는 하나의 기본 점 또는 삼각형을 형성하는 정점 세트를 입력으로 사용한다. 그런 다음 기하학 쉐이더는 다음 쉐이더 단계로 보내기 전에 적합하다고 판단되는 대로 이 정점을 변형 할 수 있다. 그러나 기하학 쉐이더를 흥미롭게 만드는 것은 처음에 주어진 것보다 훨씬 많은 정점을 생성 할 수 있는 완전히 다른 프리미티브로 정점 세트를 변환 할 수 있다. 우리는 여러분에게 기하학 쉐이더 예제를 보여줌으로써 여러분을 깊은 곳으로 던질 것이다:#version 330 core lay..
Learn OpenGL - Advanced OpenGL : Advanced GLSL link : https://learnopengl.com/Advanced-OpenGL/Advanced-GLSL Advanced GLSL 이 튜토리얼에서는 장면의 시각적 품질을 크게 향상시키는 고급 기능을 소개하지 않는다. 이 튜토리얼은 GLSL의 흥미로운면과 미래의 노력에 도움이 될만한 좋은 트릭에 다소간 차이가 있다. 기본적으로 GLSL과 함께 OpenGL 응용 프로그램을 만들 때 더 쉽게 익숙해질 수 있는 기능이 있습니다. 흥미로운 내장 변수, 쉐이더의 입출력을 구성하는 새로운 방법, 균일 버퍼 객체라는 매우 유용한 도구에 대해 살펴 보겠습니다. GLSL's built-in variables 쉐이더는 최소한이지만 현재 쉐이더 밖의 다른 소스의 데이터가 필요한 경우 데이터를 전달해야한다. 우리는 정점 속..
LearnOpenGL - Advanced OpenGL : Advanced Data link : https://learnopengl.com/Advanced-OpenGL/Advanced-Data Advanced Data OpenGL의 버퍼를 사용해 꽤 오랫동안 데이터를 저장했다. 텍스처를 통해 많은 양의 데이터를 쉐이더에 전달하는 버퍼 및 기타 흥미로운 메소드를 조작하는 더 흥미로운 방법이 있다. 이 튜토리얼에서는 보다 흥미로운 버퍼 함수와 텍스처 객체를 사용해 많은 양의 데이터를 저장하는 방법에 대해 설명한다. OpenGL의 버퍼는 특정 메모리와 그 이상을 관리하는 객체일 뿐이다. 버퍼를 특정 버퍼 대상에 바인딩 할 때 버퍼에 의미를 부여한다. 버퍼는 GL_ARRAY_BUFFER에 바인드 할 때 단지 정점 배열 버퍼일 뿐이지만 GL_ELEMENT_ARRAY_BUFFER에 쉽게 바인드 할..
[백준 1774번] 우주신과의 교감 link : https://www.acmicpc.net/problem/1774 우주신과의 교감 성공한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB90627716427.517%문제황선자씨는 우주신과 교감을 할수 있는 채널러 이다. 하지만 우주신은 하나만 있는 것이 아니기때문에 황선자 씨는 매번 여럿의 우주신과 교감하느라 힘이 든다. 이러던 와중에 새로운 우주신들이 황선자씨를 이용하게 되었다.하지만 위대한 우주신들은 바로 황선자씨와 연결될 필요가 없다. 이미 황선자씨와 혹은 이미 우주신끼리 교감할 수 있는 우주신들이 있기 때문에 새로운 우주신들은 그 우주신들을 거쳐서 황선자 씨와 교감을 할 수 있다.우주신들과의 교감은 우주신들과 황선자씨 혹은 우주신들 끼리 이어진 정신적인 통로를 통해 ..
Learn OpenGL - Advanced OpenGL : Cubemaps link : https://learnopengl.com/Advanced-OpenGL/Cubemaps Cubemaps 우리는 잠시동안 2D 텍스처를 사용해 왔지만 지금까지 살펴보지 못한 더 많은 텍스처 유형이 있다. 이 튜토리얼에서는 사실 하나의 텍스처로 매핑된 여러 텍스처의 조합인 큐브 텍스처 유형에 대해 설명한다: 방향 벡터의 크기는 중요하지 않다. 방향이 제공되는 한 OpenGL은 방향이 도달하는 해당 텍셀을 검색하고, 제대로 샘플링 된 텍스쳐 값을 반환한다. 큐브 맵을 첨부할 큐브 모양이 있다고 상상하면 큐브 맵을 샘플링하는 방향 벡터는 큐브의 정점 위치와 유사하다. 큐브가 원점의 중앙에 있는 한 큐브의 실제 위치 벡터를 사용해 큐브 맵을 샘플링 할 수 있다. 그런 다음 모든 정점의 텍스처 좌표를 ..
Learn OpenGL - Model Loading : Model link : https://learnopengl.com/Model-Loading/Model Model 이제 Assimp로 손을 더럽히고 실제 로딩 및 변환 코드를 작성해라. 이 튜토리얼의 목표는 모델 전체를 나타내는 또 다른 클래스, 즉 다중 객체가 포함된 다중 메쉬를 포함하는 모델을 만드는 것이다. 목조 발코니, 타워 및 수영장이 포함된 집은 여전히 단일 모델로 로드될 수 있다. Assimp를 통해 모델을 로드하고, 마지막 튜토리얼에서 마든 여러 메쉬 객체로 변환한다. 더 이상 고민하지 않고 Model 클래스의 클래스 구조를 설명하겠다:class Model { public: /* Functions */ Model(char *path) { loadModel(path); } void Draw(Shader ..
Learn OpenGL - Model Loading : Mesh link : https://learnopengl.com/Model-Loading/Mesh Mesh Assimp를 사용하면 많은 다른 모델을 응용 프로그램에 로드할 수 있지만, 일단 로드되면 모두 Assimp의 데이터 구조에 저장된다. 우리가 결국 원하는 것은 OpenGL이 이해할 수 있는 형식으로 데이터를 변환해 객체를 렌더링 할 수 있게 하는 것이다. 이전 튜토리얼에서 메쉬는 하나의 drawable entity를 나타내므로 우리 자신의 메쉬 클래스를 정의해보겠다. 지금까지 배운 것들을 검토해 메쉬가 데이터로서 갖는 최소한의 역할에 대해 생각해보자. 메쉬에는 적어도 각 꼭지점에 위치 벡터, 법선 벡터, 텍스처 좌표 벡터가 포함된 일련의 꼭지점이 있어야한다. 메쉬에는 인덱스된 드로잉에 대한 인덱스와 텍스처..