{"id":892,"date":"2018-11-15T20:57:20","date_gmt":"2018-11-15T11:57:20","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=892"},"modified":"2018-12-31T14:51:58","modified_gmt":"2018-12-31T05:51:58","slug":"5-open-gl-es%eb%a1%9c-%ec%82%ac%ea%b0%81%ed%98%95-%eb%a7%8c%eb%93%a4%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=892","title":{"rendered":"[OpenGL] 5. \uc0ac\uac01\ud615 \ub9cc\ub4e4\uae30"},"content":{"rendered":"<h1>\uc0ac\uac01\ud615 \ub9cc\ub4e4\uae30<\/h1>\n<p>OpenGL ES 2.0\uc5d0\uc11c \uc0ac\uac01\ud615(Quad) \uadf8\ub9ac\uae30\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 \uc0bc\uac01\ud615 \ub450\uac1c\ub97c \uc870\ud569\ud574\uc11c \uadf8\ub9ac\ub294 \ubc29\ubc95\uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\">Note: OpenGL\uc740 OpenGL ES\uc640 \ub2ec\ub9ac \uc0ac\uac01\ud615\uc744 \uc9c1\uc811 \uadf8\ub9ac\ub294 \uac83\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc, \uc798\uc4f0\uc774\uc9c0 \uc54a\uc73c\uba70 \uae30\ubcf8\uc801\uc73c\ub85c \uc0bc\uac01\ud615\uc73c\ub85c \uc870\ud569\ud558\uc5ec \uadf8\ub9bd\ub2c8\ub2e4.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uc9c0\ub09c <a href=\"https:\/\/www.charlezz.com\/?p=752\">\ud3ec\uc2a4\ud305<\/a>\uc5d0\uc11c \uc0bc\uac01\ud615\uc744 \uadf8\ub824\ubcf4\uc558\ub2e4\uba74, \uc0ac\uac01\ud615 \uadf8\ub9ac\uae30\ub3c4 \uc27d\uac8c \ub530\ub77c \ud560\uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<h3>\uc0ac\uac01\ud615 \uadf8\ub9ac\uae30 \uc704\ud55c \uc815\uc810 \ucc0d\uae30<\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/11\/quad_vertices.jpg\" alt=\"\" width=\"512\" height=\"512\" class=\"aligncenter size-full wp-image-912\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/11\/quad_vertices.jpg 512w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/11\/quad_vertices-150x150.jpg 150w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/11\/quad_vertices-300x300.jpg 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/p>\n<p>\uc0bc\uac01\ud615 \ub450\uac1c\ub97c \uadf8\ub9ac\uae30 \uc704\ud574 \uc815\uc810\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc120\uc5b8\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">val quadVertices: Buffer = GlUtil.createFloatBuffer(arrayOf(\r\n            -0.5f, 0.5f,  \/\/0\ubc88 \uc815\uc810\r\n            -0.5f, -0.5f,  \/\/1\ubc88 \uc815\uc810\r\n            0.5f, -0.5f,  \/\/2\ubc88 \uc815\uc810\r\n\r\n            -0.5f, 0.5f,  \/\/0\ubc88 \uc815\uc810\r\n            0.5f, -0.5f,  \/\/2\ubc88 \uc815\uc810\r\n            0.5f, 0.5f  \/\/\/3\ubc88 \uc815\uc810\r\n    ).toFloatArray())<\/pre>\n<p>\uc0bc\uac01\ud615\uc744 \ub450\uac1c \uadf8\ub9bd\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">glDrawArrays(GL_TRIANGLES, 0, 6)<\/pre>\n<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\">Note:\uc0bc\uac01\ud615 \uadf8\ub9ac\uae30\uc640 \ub3d9\uc77c \ud558\uc5ec \uc0bc\uac01\ud615\uc744 \uadf8\ub9ac\ub294 \uc911\uac04 \uacfc\uc815\uc740 \uc0dd\ub7b5\ud569\ub2c8\ub2e4. \uc0bc\uac01\ud615\uc744 \uadf8\ub9ac\ub294 \ubc29\ubc95\uc740 \uc774\uc804 <a href=\"https:\/\/www.charlezz.com\/?p=752\">\ud3ec\uc2a4\ud2b8<\/a>\ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uc0ac\uac01\ud615\uc774 \uc798 \uadf8\ub824\uc9c4\ub2e4\uba74 \uc131\uacf5\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ub2e4\ub978 \ubc29\ubc95\uc73c\ub85c \uc0ac\uac01\ud615 \uadf8\ub9ac\uae30<\/h2>\n<p>\uc0ac\uac01\ud615\uc758 \uaf2d\uc9d3\uc810\uc740 4\uac1c\uc778\ub370 \uc0bc\uac01\ud615 \ub450\uac1c\ub97c \uadf8\ub9ac\uae30 \uc704\ud574 \uc815\uc810 6\uac1c\ub97c \ucc0d\uc5c8\uc2b5\ub2c8\ub2e4. \uacf5\ud1b5\uc801\uc778 \uc815\uc810\uc744 \uc7ac\uc0ac\uc6a9\ud558\uc5ec \uc815\uc810 4\uac1c\ub85c\ub9cc 4\uac01\ud615\uc744 \uadf8\ub824\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc810 4\uac1c\ub97c \uc120\uc5b8\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">val quadVertices: Buffer = GlUtil.createFloatBuffer(arrayOf(\r\n            -0.5f,  0.5f, \/\/0\ubc88 \uc815\uc810 \r\n            -0.5f, -0.5f, \/\/1\ubc88 \uc815\uc810\r\n            0.5f, -0.5f,  \/\/2\ubc88 \uc815\uc810\r\n            0.5f,  0.5f  \/\/3\ubc88 \uc815\uc810\r\n    ).toFloatArray())<\/pre>\n<p>\uc815\uc810\uc744 \uc774\uc5b4 \uadf8\ub9b4 \uc21c\uc11c\uc758 \ubc30\uc5f4\uc744 \uc120\uc5b8\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">val order = arrayOf(0,1,2,0,2,3).toIntArray() \/\/\uc0bc\uac01\ud615 \uadf8\ub9ac\ub294 \uc21c\uc11c (012),(023)\r\n\r\nval orderBuffer = ByteBuffer.allocateDirect(order.size * 4).let { \/\/\r\n    it.order(ByteOrder.nativeOrder())\r\n    it.asIntBuffer()\r\n}.apply {\r\n    put(order)\r\n    position(0)\r\n} \/\/\ub4dc\ub85c\uc789 \uc21c\uc11c \ubc84\ud37c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/pre>\n<p>\uae30\uc874 glDrawArrays(int, int, int)\uac00 \uc544\ub2cc glDrawElements(int, int, int, Buffer) \uba54\uc18c\ub4dc\ub85c \uc0bc\uac01\ud615\uc744 \uc21c\uc11c\ub300\ub85c \uadf8\ub9bd\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">glDrawElements(GL_TRIANGLES, order.size, GL_UNSIGNED_INT, orderBuffer)<\/pre>\n<ul>\n<li>1\ubc88\uc9f8 \ud30c\ub77c\ubbf8\ud130 : \ub3c4\ud615\uc744 \uadf8\ub9ac\ub294 \uc885\ub958<\/li>\n<li>2\ubc88\uc9f8 \ud30c\ub77c\ubbf8\ud130 : \uadf8\ub9ac\ub294 \uc21c\uc11c\ubc30\uc5f4\uc758 \uc0ac\uc774\uc988<\/li>\n<li>3\ubc88\uc9f8 \ud30c\ub77c\ubbf8\ud130 : \uadf8\ub9ac\ub294 \uc21c\uc11c\ubc30\uc5f4\uc758 \uc790\ub8cc\ud615<\/li>\n<li>4\ubc88\uc9f8 \ud30c\ub77c\ubbf8\ud130 : \uadf8\ub9ac\ub294 \uc21c\uc11c\ubc30\uc5f4\uc758 \ubc84\ud37c<\/li>\n<\/ul>\n<h1>Conclusion<\/h1>\n<p>\uc774\uc81c \ube4c\ub4dc\ub97c \ud574\uc11c \uacb0\uacfc\ub97c \ud655\uc778\ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.\u00a0 glDrawArrays\uc640 glDrawElements\ub85c \uc0ac\uac01\ud615\uc744 \uadf8\ub9b0 \uacb0\uacfc\ubb3c\uc740 \ud06c\uac8c \ucc28\uc774\uac00 \uc5c6\uc73c\ub098 glDrawArrays \uc8fc\uc5b4\uc9c4 \uc815\uc810\ubc30\uc5f4\uc744 \uc21c\uc11c\ub300\ub85c \uadf8\ub9ac\ub294 \ubc18\uba74\uc5d0 glDrawElements\ub294 \uc8fc\uc5b4\uc9c4 \uc815\uc810\ubc30\uc5f4\uc5d0\uc11c \uc6d0\ud558\ub294 \uc815\uc810\uc744 \uace8\ub77c \uc21c\uc11c\ub97c \uc815\ud574 \uadf8\ub9b4\uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubcf8 \ud504\ub85c\uc81d\ud2b8\ub294 <a href=\"https:\/\/github.com\/Charlezz\/OpenGLStudy\">github<\/a>\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4.<a href=\"https:\/\/www.charlezz.com\/?p=892\"><\/a><\/p>\n<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\"><\/table>\n","protected":false},"excerpt":{"rendered":"<p>\uc0ac\uac01\ud615 \ub9cc\ub4e4\uae30 OpenGL ES 2.0\uc5d0\uc11c \uc0ac\uac01\ud615(Quad) \uadf8\ub9ac\uae30\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 \uc0bc\uac01\ud615 \ub450\uac1c\ub97c \uc870\ud569\ud574\uc11c \uadf8\ub9ac\ub294 \ubc29\ubc95\uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. Note: OpenGL\uc740 OpenGL ES\uc640 \ub2ec\ub9ac \uc0ac\uac01\ud615\uc744 \uc9c1\uc811 \uadf8\ub9ac\ub294 \uac83\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc, \uc798\uc4f0\uc774\uc9c0 \uc54a\uc73c\uba70 \uae30\ubcf8\uc801\uc73c\ub85c \uc0bc\uac01\ud615\uc73c\ub85c \uc870\ud569\ud558\uc5ec \uadf8\ub9bd\ub2c8\ub2e4. \uc9c0\ub09c \ud3ec\uc2a4\ud305\uc5d0\uc11c \uc0bc\uac01\ud615\uc744 \uadf8\ub824\ubcf4\uc558\ub2e4\uba74, \uc0ac\uac01\ud615 \uadf8\ub9ac\uae30\ub3c4 \uc27d\uac8c \ub530\ub77c \ud560\uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4. \uc0ac\uac01\ud615 \uadf8\ub9ac\uae30 \uc704\ud55c \uc815\uc810 \ucc0d\uae30 \uc0bc\uac01\ud615 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[24],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/892"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=892"}],"version-history":[{"count":5,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/892\/revisions"}],"predecessor-version":[{"id":986,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/892\/revisions\/986"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}