목록Graphics/OpenGL (9)
momodudu.zip
우리가 사용하고자 하는 vertex data는 DRAM, 즉 client단의 memory에 저장되어 있는것 뿐이다. 이를 graphic memory에 copy하기 위해 사용하는 명령어가 바로 glDrawArrays, glDrawElements같은 call이다. 하지만 매 draw call마다 CPUGPU간의 데이터 교환이 자주 일어나게 된다면 memory bandwidth로 인해 당연히 성능상에 문제가 발생하므로, CPU에서 그릴 vertex를 생성해놓고, "캐시"처럼 사용하고자 하는게 바로 VBO이다. OpenGL ES3.0에서는 vertex buffer인 GL_ARRAY_BUFFER와 index버퍼인 GL_ELEMENT_ARRAY_BUFFER , 두가지 buffer object 타입을 제공한다. 그 ..

이제 glm을 이용해서 어디서 많이 듣던 MVP가 뭔지 알아보자. 이 세가지를 이해하기에는 2D는 부족하다. 그래서 이번에는 정육면체를 들고왔다. 1.Model Model은 앞서 포스팅한것들에 대한것이라고 보면 되겠다. 즉, Translate, Rotate, Scale에 대한 매트릭스이다. 물체 자체에 대한 Matrix로 보면 된다. 모든 vertex가 원점을 중심으로 매칭된 공간에서, 모든 vertex들이 world좌표계의 중심으로 정의된 공간. 2. View View는 카메라에 대한 매트릭스로 보면 된다. 물체를 어디서 볼것인지? 어디로 볼것인지? 간단한 View matrix는 아래와 같다. glm::mat4 View = glm::lookAt(glm::vec3(4.0f, 3.0f, 1.0f), glm..

음.. 매트릭스 관련해서 공부를 하고 있는데, glm 관련 예제가 별로 없어서 기록 겸 포스팅. 쓰기 어려운 라이브러리는 아닌데, 그냥 공부겸 기록겸.... 일단 개발 환경은 모두 세팅된 상태여야함. 나는 glfw/opengl/c++입니당. 일단 2D상태의 아래와 같은 사각형이 있다. const char* vertexShaderSource = { "#version 330 core\n" "#define IN_VERTEX0\n" "#define IN_COLOR1\n" "#define IN_TEXTURE 2\n" "layout (location=IN_VERTEX) in highp vec3 position;\n" "layout (location=IN_COLOR) in lowp vec3 colors;\n" "la..

학부시절에는 그래픽스의 "그"자도 만져본적이 없었는데, 어떻게 하다보니 첫 회사 첫 팀(이자 마지막)이 그래픽스 관련 팀이었다. 원래 개발자 신입은 다 그런것 같다. 내가 학부생때 그렸던 개발과는 전혀 다른일을 하는 경우가 많은것 같다. 그러다가 맞으면 계속 그 길을 가는거고 아님 아닌거고.. 무튼 그래서 처음 팀 내부 코드를 받고는... 진짜 멘붕이었다. EGL이 뭐냐고요.... 사실 아직도 잘 모른다..; 아무도 안가르쳐줬거든요... 물어봐도 자기가 짠거 아니라고 안알려줬거든요.. 솔직히 내가 먼저 알아서 공부를 했었어야 하는게 맞다 (...) 항상 그렇다. 시작할때 애초에 잘 해뒀으면 더 좋았을텐데.. 늘 눈앞에 있는 일에 급급해서 대충 이거구나. 하고 짚어넘어가는게 제일 큰 문제다.. 무튼, 그래..