{"id":1017,"date":"2019-02-01T14:15:04","date_gmt":"2019-02-01T05:15:04","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=1017"},"modified":"2019-12-21T17:14:26","modified_gmt":"2019-12-21T08:14:26","slug":"opengl-10-cube%ec%a0%95%ec%9c%a1%eb%a9%b4%ec%b2%b4-%eb%a7%8c%eb%93%a4%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=1017","title":{"rendered":"[OpenGL] 10. Cube(\uc815\uc721\uba74\uccb4) \ub9cc\ub4e4\uae30"},"content":{"rendered":"<h1>Cube \ub9cc\ub4e4\uae30<\/h1>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=43769\" rel=\"attachment wp-att-43769\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51-1024x1024.png\" alt=\"\" width=\"750\" height=\"750\" class=\"aligncenter size-large wp-image-43769\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51-1024x1024.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51-150x150.png 150w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51-300x300.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51-768x767.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/charles-2019-12-21-\uc624\ud6c4-5.13.51.png 1832w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\uc815\uc721\uba74\uccb4\ub294 6\uac1c\uc758 \uc0ac\uac01\ud615\uc73c\ub85c \uad6c\uc131\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. \uc989 OpenGL\ub85c \ud45c\ud604\ud558\uae30 \uc704\ud574\uc11c\ub294 12\uac1c\uc758 \uc0bc\uac01\ud615\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub807\ub2e4\uba74 \uc0ac\uac01\ud615\uc744 \uadf8\ub9ac\uae30\uc704\ud55c \uc815\uc810\uc740 \uba87\uac1c\uac00 \ud544\uc694\ud560\uae4c\uc694?<\/p>\n<p>\uc815\ub2f5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc815\uc810\uc744 \uc0bc\uac01\ud615 \uac2f\uc218 \ub9cc\ud07c \uc7a1\ub294\ub2e4\uba74, <br \/>\n3\uac1c(\uc0bc\uac01\ud615 \uc815\uc810 \uc218) * 12\uac1c(\ud544\uc694\ud55c \uc0bc\uac01\ud615 \uc218) = 36\uac1c\uac00 \ud544\uc694\ud560 \uac83\uc774\uace0,<\/p>\n<p>\uc911\ucca9\ub418\ub294 \uc815\uc810\uc744 \ud65c\uc6a9\ud55c\ub2e4\uba74 \uc815\uc810 \ubc30\uc5f4\uc758 \uc0ac\uc774\uc988\ub97c \uc544\ub084\uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\uadf8\ub798\uc11c \uc804 \uc911\ucca9\ub418\ub294 \uc815\uc810\uc744 \ud65c\uc6a9\ud558\uc5ec \ud050\ube0c\uc758 \uaf2d\uc9d3\uc810 \uc218 \ub9cc\ud07c \uc815\uc810\uc744 \uc120\uc5b8\ud574 \ud050\ube0c\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">float[] vertices = new float[]{ \r\n   -0.5f, -0.5f, -0.5f,\r\n    0.5f, -0.5f, -0.5f,\r\n    0.5f, 0.5f, -0.5f,\r\n   -0.5f, 0.5f, -0.5f,\r\n   -0.5f, -0.5f, 0.5f,\r\n    0.5f, -0.5f, 0.5f,\r\n    0.5f, 0.5f, 0.5f,\r\n   -0.5f, 0.5f, 0.5f\r\n};<\/pre>\n<p>\uc704\uc758 \uc815\uc810\uc744 \uc774\uc6a9\ud558\uc5ec \uc0bc\uac01\ud615\uc744 \uadf8\ub9ac\ub294 \uc21c\uc11c\ub97c \uc815\uc758\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">byte[] indices = new byte[]{\r\n    0, 1, 3, 3, 1, 2, \/\/ Front face.\r\n    0, 1, 4, 4, 5, 1, \/\/ Bottom face.\r\n    1, 2, 5, 5, 6, 2, \/\/ Right face.\r\n    2, 3, 6, 6, 7, 3, \/\/ Top face.\r\n    3, 7, 4, 4, 3, 0, \/\/ Left face.\r\n    4, 5, 7, 7, 6, 5, \/\/ Rear face.\r\n};<\/pre>\n<p>\ud050\ube0c\uc5d0 \uc0c9\uc0c1\ub3c4 \uc785\ud788\uae30 \uc704\ud574 \uc0c9\uc0c1\ub3c4 \uc9c0\uc815\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">float[] colors = new float[]{\r\n    0.0f, 1.0f, 1.0f, 1.0f,\r\n    1.0f, 0.0f, 0.0f, 1.0f,\r\n    1.0f, 1.0f, 0.0f, 1.0f,\r\n    0.0f, 1.0f, 0.0f, 1.0f,\r\n    0.0f, 0.0f, 1.0f, 1.0f,\r\n    1.0f, 0.0f, 1.0f, 1.0f,\r\n    1.0f, 1.0f, 1.0f, 1.0f,\r\n    0.0f, 1.0f, 1.0f, 1.0f,\r\n};<\/pre>\n<p>&nbsp;<\/p>\n<p>\ubaa8\ub378(\ud050\ube0c)\uc740 \uc6d0\uc810\uc5d0 \ub450\uace0, \uce74\uba54\ub77c(\ubdf0)\ub9cc \ub4a4\ub85c \ube7c\uc11c \ubaa8\ub378\uc744 \ubc14\ub77c\ubcf4\ub3c4\ub85d MVP\ub9e4\ud2b8\ub9ad\uc2a4\ub97c \uc9c0\uc815\ud588\uc2b5\ub2c8\ub2e4. \ub9e4\ud2b8\ub9ad\uc2a4\ub294 \uae30\uc874\uc5d0 <a href=\"https:\/\/www.charlezz.com\/?p=752\">\uc0bc\uac01\ud615<\/a>, <a href=\"https:\/\/www.charlezz.com\/?p=892\">\uc0ac\uac01\ud615<\/a> \uadf8\ub9b4\ub54c\uc640 \ub3d9\uc77c\ud558\uae30 \ub54c\ubb38\uc5d0 \uc0dd\ub7b5\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub294 <a href=\"https:\/\/www.charlezz.com\/?p=960\">MVP\ub9e4\ud2b8\ub9ad\uc2a4<\/a>\ud3b8\uc744 \ud655\uc778\ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/Screenshot_1548995974-576x1024.png\" alt=\"\" width=\"576\" height=\"1024\" class=\"aligncenter size-large wp-image-1019\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/Screenshot_1548995974-576x1024.png 576w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/Screenshot_1548995974-169x300.png 169w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/Screenshot_1548995974-768x1365.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/02\/Screenshot_1548995974.png 1080w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/p>\n<p>\uc644\uc131\ub41c \ubaa8\uc2b5\uc785\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7f0\ub370 \uc65c \ud050\ube0c\uac00 \uc544\ub2cc \uc0ac\uac01\ud615\uc77c\uae4c\uc694?<br \/>\n\uc544\ub2d9\ub2c8\ub2e4 \ud050\ube0c\uac00 \ub9de\uc2b5\ub2c8\ub2e4. \ub2e4\ub9cc \ud050\ube0c\uc758 \uc55e\uba74\uc744 \uc81c\uc678\ud55c \uc606, \uc704, \uc544\ub798, \ub4b7\uba74\uc744 \uce74\uba54\ub77c\uac00 \ubcf4\uc9c0 \ubabb\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uce74\uba54\ub77c\ub97c \uc774\ub3d9\uc2dc\ud0a4\uac70\ub098, \ud050\ube0c\ub97c \ub3cc\ub9b0\ub2e4\uba74 \ub2e4\ub978 \uba74\ub3c4 \ubcfc\uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ud050\ube0c \ub3cc\ub9ac\uae30<\/h2>\n<pre class=\"lang:java decode:true\">private long lastUpdateMillis = 0;\r\nprivate int REFRESH_RATE_FPS = 60;\r\nprivate long FRAME_TIME_MILLIS = TimeUnit.SECONDS.toMillis(1) \/ REFRESH_RATE_FPS;\r\nprivate float rotation = 0f;\r\nprivate float ROTATION_INCREMENT = 1f;\r\nprivate void updateRotation() {\r\n    long currentTime = SystemClock.elapsedRealtime();\r\n    if (lastUpdateMillis != 0L) {\r\n        long factor = (lastUpdateMillis-currentTime) \/ FRAME_TIME_MILLIS;\r\n        rotation += ROTATION_INCREMENT * factor;\r\n        rotation = rotation%360; \/\/OpenGL\uc5d0\uc11c \ucc98\ub9ac\ud574\uc8fc\uae30 \ub54c\ubb38\uc5d0 \uc0dd\ub7b5 \uac00\ub2a5\r\n    }\r\n    lastUpdateMillis = currentTime;\r\n}\r\n\r\n@Override\r\npublic void draw(float[] matrix) {\r\n    super.draw(matrix);\r\n    updateRotation();\r\n    Matrix.setRotateM(modelMatrix,0, rotation, 1.0f, 1.0f, 1.0f);\r\n}<\/pre>\n<p>1Frame\uc744 \uadf8\ub9b4\ub54c \uc774\uc804 \ud504\ub808\uc784\uc744 \uadf8\ub838\ub358 \uc2dc\uac04\uacfc \ube44\uad50\ud558\uc5ec \uc5bc\ub9c8\ub098 \ud050\ube0c\ub97c \ud68c\uc804\ud574\uc57c\ud560\uc9c0\ub97c \uacc4\uc0b0 \ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.\u00a0<\/p>\n<p>Matrix.setRotateM(&#8230;) \uc744 \uc774\uc6a9\ud558\uc5ec \uacc4\uc0b0\ub41c \ud68c\uc804\uac12\uc744 \ubaa8\ub378 \uba54\ud2b8\ub9ad\uc2a4\uc5d0 \uc801\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/vv2Kst_zeKw\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cube \ub9cc\ub4e4\uae30 \uc815\uc721\uba74\uccb4\ub294 6\uac1c\uc758 \uc0ac\uac01\ud615\uc73c\ub85c \uad6c\uc131\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. \uc989 OpenGL\ub85c \ud45c\ud604\ud558\uae30 \uc704\ud574\uc11c\ub294 12\uac1c\uc758 \uc0bc\uac01\ud615\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc0ac\uac01\ud615\uc744 \uadf8\ub9ac\uae30\uc704\ud55c \uc815\uc810\uc740 \uba87\uac1c\uac00 \ud544\uc694\ud560\uae4c\uc694? \uc815\ub2f5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. \uc815\uc810\uc744 \uc0bc\uac01\ud615 \uac2f\uc218 \ub9cc\ud07c \uc7a1\ub294\ub2e4\uba74, 3\uac1c(\uc0bc\uac01\ud615 \uc815\uc810 \uc218) * 12\uac1c(\ud544\uc694\ud55c \uc0bc\uac01\ud615 \uc218) = 36\uac1c\uac00 \ud544\uc694\ud560 \uac83\uc774\uace0, \uc911\ucca9\ub418\ub294 \uc815\uc810\uc744 \ud65c\uc6a9\ud55c\ub2e4\uba74 \uc815\uc810 \ubc30\uc5f4\uc758 \uc0ac\uc774\uc988\ub97c \uc544\ub084\uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc804 \uc911\ucca9\ub418\ub294 \uc815\uc810\uc744 \ud65c\uc6a9\ud558\uc5ec [&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\/1017"}],"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=1017"}],"version-history":[{"count":3,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":43770,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions\/43770"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}