{"id":78,"date":"2005-05-15T08:00:00","date_gmt":"2005-05-15T08:00:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=78"},"modified":"2017-01-29T20:07:29","modified_gmt":"2017-01-29T11:07:29","slug":"opengl-tutorial-bill-board%eb%b9%8c%eb%b3%b4%eb%93%9c-%ea%b8%b0%eb%b2%95","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=78","title":{"rendered":"[OpenGL Tutorial] Bill-board(\ube4c\ubcf4\ub4dc) \uae30\ubc95"},"content":{"rendered":"<p><P><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1066088480.gif\" class=\"alignleft\" width=\"200\" height=\"150\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/>\ube4c\ubcf4\ub4dc \uae30\ubc95\uc774\ub780 \uc0ac\uac01\ud615\uc774 \ud56d\uc0c1 \uc2dc\uc810\uc744 \ubc14\ub77c\ubcf4\ub3c4\ub85d \ub9cc\ub4dc\ub294 \uac83\uc744 \ub9d0\ud55c\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uad00\ucc30\uc790\uac00 \uc5b4\ub290 \uc704\uce58\ub85c \uc774\ub3d9\ud558\ub354\ub77c\ub3c4 \uc0ac\uac01\ud615\uc740 \ud56d\uc0c1 \uac19\uc740 \uba74\uc744 \uad00\ucc30\uc790\uc5d0\uac8c \ubcf4\uc5ec\uc8fc\uac8c \ub41c\ub2e4. \uc751\uc6a9\uc608\ub85c\uc368 \ub113\uc740 \ub300\uc9c0\uc704\uc5d0 \ub098\ubb34\ub97c \ub098\ud0c0\ub0b4\uace0\uc790 \ud560\ub54c, \ub098\ubb34\ub97c \uba54\uc26c(Mesh)\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub378\ub9c1\ud558\uc9c0 \uc54a\uace0 \ub098\ubb34 \uc774\ubbf8\uc9c0\ub9cc\uc73c\ub85c \uad6c\ud604\uc774 \uac00\ub2a5\ud558\ub2e4.<\/P><P>\uad6c\ud604\uc5d0 \ub300\ud55c \ud575\uc2ec\uc740, \ud56d\uc0c1 \uc2dc\uc810\uc744 \ubc14\ub77c\ubcf4\ub3c4\ub85d \uc0ac\uac01\ud615\uc744 \uc774\ub8e8\ub294 \ub124 \uc88c\ud45c\ub97c \uc870\uc815\ud558\uc5ec\uc57c \ud558\ub294\ub370, \uc774\ub97c \uc704\ud574 Model View \ud589\ub82c\uc744 \uc774\uc6a9\ud55c\ub2e4. Model-View \ud589\ub82c\uc5d0\ub294 \uad00\ucc30\uc790\uc758 \uc2dc\uc810\uc5d0 \ub300\ud55c \uc815\uc218\uc9c1\ubca1\ud130\uc640 \uc815\uc6b0\uce21\ubca1\ud130\uc5d0 \ub300\ud55c \uc815\ubcf4\uac00 \ub2f4\uaca8\uc788\ub2e4. <\/P><P>\uc77c\ub2e8 OpenGL\uc5d0\uc11c Model View \ud589\ub82c\uc744 \uc5bb\ub294 \ucf54\ub4dc\ub97c \uc54c\uc544\ubcf4\uc790.<\/P><\/p>\n<pre>Glfloat viewMatrix[16];\r\nGlGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix);<\/pre>\n<p>ViewMatrix\uc5d0 \uc800\uc7a5\ub41c Model View \ud589\ub82c\uc774 \ub2e4\uc74c \uadf8\ub9bc\uacfc \uac19\ub2e4\uace0 \ud560 \ub54c \ubca1\ud130(m1, m5, m9)\uc740 \uc2dc\uc120 \ubca1\ud130\uc640 \uc218\uc9c1\uc778 \uc704\ucabd \ubca1\ud130\uc774\uace0, \ubca1\ud130(m0, m4, m8)\ub294 \uc2dc\uc120 \ubca1\ud130\uc640 \uc218\uc9c1\uc778 \uc624\ub978\ucabd \ubca1\ud130\uc774\ub2e4.<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1403451563.jpg\" class=\"aligncenter\" width=\"300\" height=\"300\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/>\uc2dc\uc120\uacfc \uc704\ucabd\uc73c\ub85c \uc218\uc9c1\uc778 \ubca1\ud130\ub97c UpVector\ub77c \ud558\uace0 \uc624\ub978\ucabd \ubc29\ud5a5\uc73c\ub85c \uc218\uc9c1\uc778 \ubca1\ud130\ub97c RightVector\ub77c \ud558\uc790. \uc774 \ub450 \ubca1\ud130\ub97c \uc774\uc6a9\ud558\uc5ec \uc0ac\uac01\ud615\uc744 \uc774\ub8e8\ub294 4\uac1c\uc758 \uc88c\ud45c\ub97c \uc870\uc815\ud558\uae30 \uc704\ud574, \uc0ac\uac01\ud615\uc758 \uc911\uc2ec \ubca1\ud130\ub97c centerVector\ub77c\uace0 \ud558\uba74, \uc0ac\uac01\ud615\uc744 \uc774\ub8e8\ub294 4\uac1c\uc758 \uc88c\ud45c\ub294 \ub2e4\uc74c \uadf8\ub9bc\uacfc \uac19\ub2e4. <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1186708095.gif\" class=\"aligncenter\" width=\"510\" height=\"279\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/>\uc704\uc758 \ub124 \uc88c\ud45c\ub97c \uc2a4\uce7c\ub77c\uac12 Size\ub97c \uc801\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4. Size\ub294 \uc0ac\uac01\ud615\uc758 \ud06c\uae30\ub85c \uc0dd\uac01\ud560 \uc218 \uc788\ub2e4.<P>CenterPoint + (RightVector + UpVector) * (-Size))<BR>CenterPoint + (RightVector -UpVector) * Size<BR>CenterPoint + (RightVector + UpVector) * Size<BR>CenterPoint + (UpVector -RightVector) * Size <\/P><P>\uc2e4\uc81c\ub85c \uad6c\ud604 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790. <\/P><\/p>\n<pre>void GL_Window::Draw(void)\r\n{\r\n    \/\/ Clear Screen And Depth Buffer\r\n    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     \r\n    glLoadIdentity (); \/\/ Reset The Modelview Matrix\r\n    glTranslatef (0.0f, 0.0f, -6.0f); \/\/ Translate 6 Units Into The Screen\r\n    glRotatef (angle, 0.0f, 1.0f, 0.0f); \/\/ Rotate On The Y-Axis By angle\r\n   \r\n    \/\/ \ubaa8\ub378\ubdf0 \ud589\ub82c\uc744 \uc5bb\ub294\ub2e4\r\n    float mat[16];\r\n    glGetFloatv(GL_MODELVIEW_MATRIX, mat);\r\n   \r\n    \/\/ \ubaa8\ub378\ubdf0 \ud589\ub82c\ub85c\ubd80\ud130 \uc2dc\uc120\ubc29\ud5a5\uc5d0 \ub300\ud574 \uc218\uc9c1\uc73c\ub85c \uc624\ub978\ucabd \ubca1\ud130\uc640 \r\n    \/\/ \uc218\uc9c1\uc73c\ub85c \uc717\ucabd \ubca1\ud130\ub97c \uc815\uc758\ud55c\ub2e4.\r\n    vector3_t right(mat[0], mat[4], mat[8]);\r\n    vector3_t up(mat[1], mat[5], mat[9]);\r\n   \r\n    glBindTexture(GL_TEXTURE_2D, texture[0]); \/\/ Select Our Texture\r\n   \r\n    vector3_t pos(0.0f, 0.0f, 1.0f);\r\n   \r\n    glBegin(GL_QUADS);\r\n    \/\/ \ube4c\ubcf4\ub4dc \uae30\ubc95\uc744 \uc801\uc6a9\ud558\uc9c0 \uc54a\uc740 \ud3f4\ub9ac\uace4\uc758 \uacbd\uc6b0\r\n    \/\/ Bottom Left Of The Texture and Quad\r\n    \/\/ glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); \r\n    \/\/ Bottom Right Of The Texture and Quad\r\n    \/\/ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);\r\n    \/\/ Top Right Of The Texture and Quad\r\n    \/\/ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); \r\n    \/\/ Top Left Of The Texture and Quad\r\n    \/\/ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); \r\n   \r\n    \/\/ \ube4c\ubcf4\ub4dc \uae30\ubc95\uc774 \uc801\uc6a9\ub41c \ud3f4\ub9ac\uace4\uc758 \uacbd\uc6b0\r\n    \/\/ Bottom Left Of The Texture and Quad\r\n    glTexCoord2f(0.0f, 0.0f); glVertex3fv((pos+(right+up)*(-1)).v);\r\n    \/\/ Bottom Right Of The Texture and Quad \r\n    glTexCoord2f(1.0f, 0.0f); glVertex3fv((pos+(right-up)*(+1)).v);\r\n    \/\/ Top Right Of The Texture and Quad\r\n    glTexCoord2f(1.0f, 1.0f); glVertex3fv((pos+(right+up)*(+1)).v); \r\n    \/\/ Top Left Of The Texture and Quad\r\n    glTexCoord2f(0.0f, 1.0f); glVertex3fv((pos+(up-right)*(+1)).v); \r\n    glEnd();\r\n\r\n    glFlush();\r\n} <\/pre>\n<p>\uc704\uc758 \uc18c\uc2a4\uc5d0\uc11c \uc774\ubbf8 \uc81c\uc791\ub41c vector \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc600\ub2e4. vector \ud074\ub798\uc2a4\uc758 \uc0ac\uc6a9\uc740 \ud06c\uac8c \uc5b4\ub835\uc9c0 \uc54a\uc73c\ubbc0\ub85c 10\uc5ec\ubd84\uc815\ub3c4 \ud22c\uc790\ud558\uc5ec \uc18c\uc2a4\ub97c \ubd84\uc11d\ud574\ubcf4\uba74 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n<p><P>\ube4c\ubcf4\ub4dc \uae30\ubc95\uc744 \uc801\uc6a9\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uc18c\uc2a4 \ucf54\ub4dc\ub97c \uc8fc\uc11d\ucc98\ub9ac\ud558\uc600 \ub193\uc558\ub2e4. \uc8fc\uc11d\uc744 \uc81c\uac70\ud558\uc5ec \uc2e4\ud589\ud574 \ubcf4\uba74\uc11c \ube44\uad50\ud574\ubcf4\uae30 \ubc14\ub780\ub2e4.<\/P><\/p>\n<p style='text-align:center'><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1154583450.zip\"><img width='64' src='\/images\/download.svg' \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ube4c\ubcf4\ub4dc \uae30\ubc95\uc774\ub780 \uc0ac\uac01\ud615\uc774 \ud56d\uc0c1 \uc2dc\uc810\uc744 \ubc14\ub77c\ubcf4\ub3c4\ub85d \ub9cc\ub4dc\ub294 \uac83\uc744 \ub9d0\ud55c\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uad00\ucc30\uc790\uac00 \uc5b4\ub290 \uc704\uce58\ub85c \uc774\ub3d9\ud558\ub354\ub77c\ub3c4 \uc0ac\uac01\ud615\uc740 \ud56d\uc0c1 \uac19\uc740 \uba74\uc744 \uad00\ucc30\uc790\uc5d0\uac8c \ubcf4\uc5ec\uc8fc\uac8c \ub41c\ub2e4. \uc751\uc6a9\uc608\ub85c\uc368 \ub113\uc740 \ub300\uc9c0\uc704\uc5d0 \ub098\ubb34\ub97c \ub098\ud0c0\ub0b4\uace0\uc790 \ud560\ub54c, \ub098\ubb34\ub97c \uba54\uc26c(Mesh)\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub378\ub9c1\ud558\uc9c0 \uc54a\uace0 \ub098\ubb34 \uc774\ubbf8\uc9c0\ub9cc\uc73c\ub85c \uad6c\ud604\uc774 \uac00\ub2a5\ud558\ub2e4.\uad6c\ud604\uc5d0 \ub300\ud55c \ud575\uc2ec\uc740, \ud56d\uc0c1 \uc2dc\uc810\uc744 \ubc14\ub77c\ubcf4\ub3c4\ub85d \uc0ac\uac01\ud615\uc744 \uc774\ub8e8\ub294 \ub124 \uc88c\ud45c\ub97c \uc870\uc815\ud558\uc5ec\uc57c \ud558\ub294\ub370, \uc774\ub97c \uc704\ud574 Model View \ud589\ub82c\uc744 \uc774\uc6a9\ud55c\ub2e4. Model-View \ud589\ub82c\uc5d0\ub294 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=78\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[OpenGL Tutorial] Bill-board(\ube4c\ubcf4\ub4dc) \uae30\ubc95&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-78","post","type-post","status-publish","format-standard","hentry","category-opengl"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/78","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=78"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/78\/revisions"}],"predecessor-version":[{"id":3816,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/78\/revisions\/3816"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=78"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=78"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}