본문 바로가기

Game/Graphics

(68)
OpenGL-Tutorial 12 : OpenGL Extensions link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/tutorial-12-opengl-extensions/ 12번째 튜토리얼 시작! Extensions 새로운 세대마다 GPU의 성능이 향상되어 더 많은 삼각형과 더 많은 픽셀을 렌더링 할 수 있습니다. 하지만, 원시 성능만이 유일한 관심사는 아니다. NVIDIA, AMD 및 Intel은 더 많은 기능을 제공함으로써 그래픽 카드를 향상시킵니다. 몇 가지 예를 살펴보겠다. ARB_fragment_program 2002년에는 GPU에 정점 셰이더나 조각 셰이더가 없고, 모든 것이 칩 내부에 하드 코드되었습니다. 이를 Fixed-Function Pipeline (FFP)라고 한다. 따라서 OpenGL..
OpenGL-Tutorial 11 : 2D Text link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/tutorial-11-2d-text/ 11번째 튜토리얼이다. 이번에는 3D 콘텐츠 위에 2D 텍스트를 그리는 방법을 배운다고 한다. The API 우리는 간단한 인터페이스 (common / text2D.h)를 구현할 것이다.void initText2D(const char * texturePath); void printText2D(const char * text, int x, int y, int size); void cleanupText2D();코드가 640*480과 1080p에서 모두 작동하려면 x와 y는 좌표가 [0-800] [0-600]이 된다. vertex shader는 이를 화면의 실..
OpenGL-Tutorial 10 : Transparency link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/tutorial-10-transparency/ 10번째 튜토리얼이다. 이번에는 투명도 바꾸는 것을 배우는 것 같다. The alpha channel 알파 채널의 개념은 매우 간단하다. RGB 결과를 작성하는 대신에// Ouput data : it's now a vec4 out vec4 color; 처음 3개의 구성 요소는 .xyz swizzle 연산자로 액세스 되지만 마지막의 구성요소는 alpha 값이다.color.a = 0.3;비직관적으로 alphap = 투명도이다. 그리고 alpha = 1은 불투명을 의미하고 alpha = 0은 완전 투명을 의미한다. 여기서 알파 채널을 0.3으로 하드 ..
OpenGL-Tutorial 9 : VBO Indexing link : http://www.opengl-tutorial.org/kr/intermediate-tutorials/tutorial-9-vbo-indexing/ 9번째 튜토리얼이다. 이제 Basic tutorial이 끝나고 Intermediate tutorial이 시작했다! 화이팅! The principle of indexing (Index 생성 원칙) 지금까지 VBO를 만들 때 우리는 항상 2개의 삼각형 가장자리를 공유할 때마다 정점을 복사했다. 이 튜토리얼에서는 동일한 꼭지점을 반복해서 사용하는 인덱싱을 소개한다. 인덱스 버퍼를 사용해 이 작업을 수행한다. 인덱스 버퍼는 다양한 속성 버퍼(위치, 색상, UV 좌표, 다른 UV 좌표, 법선, ..)를 참조하는 메쉬의 각 삼각형에 대해 3개의 정수가 포함된..
OpenGL-Tutorial 8 : Basic shading link : http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-8-basic-shading/ 8번째 튜토리얼이다. 이번 튜토리얼에서는 기본적인 쉐이딩을 수행하는 방법을 학습한다고 한다. 1) 광원에 가까울 때 더 밝은 빛2) 빛의 반사를 바라볼 때 하이라트가 있다(반사 조명)3) 빛이 모델쪽으로 직접 향하지 않을 때 어두워 진다(확산 조명) Triangle normalse (삼각형 법선) 평면의 법선은 이 평면에 수직인 길이 1의 벡터이다.삼각형의 법선은 이 삼각형에 수직인 길이 1의 벡터이다. 그것은 두 개의 모서리의 외적을 취함으로써 쉽게 계산된다.triangle ( v1, v2, v3 ) edge1 = v2-v1 edge2 = v3-v1..
OpenGL-Tutorial 7 : Model loading link : http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-7-model-loading/ 7번째 튜토리얼이다. 이번 튜토리얼에서는 파일에서 3D 메쉬를 로드하는 방법을 학습한다고 한다. 가능한 간단하게 이 튜토리얼을 유지하기 위해 OBJ 파일 형식을 사용할 것이라고 한다. Loading the OBJ bool loadOBJ( const char * path, std::vector & out_vertices, std::vector & out_uvs, std::vector & out_normals ) Example OBJ file OBJ 파일은 다음과 같다.# Blender3D v249 OBJ File: untitled.blend # www...
OpenGL-Tutorial 6 : Keyboard and Mouse link : http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-6-keyboard-and-mouse/ 벌써 6번째 튜토리얼! 이번에는 마우스와 키보드를 사용해서 카메라를 움직이는 방법을 배운다고 한다. The Interface 이 코드는 튜토리얼 전체에서 다시 사용되므로 common/controls.cpp 라는 별도의 파일에 코드를 추가하고,controls.hpp를 선언해 사용하라고 한다. (사실 이전에 쓰던 shader와 texture도 따로 선언해야하는데 안 했었다) 나는 튜토리얼만 할 것임으로 한 코드에 넣을 것이다. (이렇게 해야지 초보자 분들도 따라하기 쉬울거 같아서) do{ // ... // Compute the MVP matrix..
OpenGL-Tutorial 5 : A Textured Cube link : http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-5-a-textured-cube/ 이번 튜토리얼부터는 영어다! 앞으로는 해석과 함께 중요한 개념들을 정리해서 올리도록 하겠다. [배울 것]1) UV좌표 2) 직접 텍스처를 입히는 방법3) OpenGL에서 사용하는 방법4) 필터링과 맵핑이 무엇이고, 어떻게 사용하는지5) GLFW로 견고하게 텍스처를 입히는 방법 1) UV Coordinate - mesh를 Texturing할 때 각 삼각형에 대해 이미지의 어느 부분을 사용해야하는지 OpenGL에 알리는 방법이 필요하다. 이 것은 UV 좌표로 수행된다. 각 정점은, 그 위치의 최상부에 2개의 부동 소수점 U와 V를 가질 수 있다. 이러..