{"id":445,"date":"2007-08-20T13:33:37","date_gmt":"2007-08-20T13:33:37","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=445"},"modified":"2017-01-29T11:20:00","modified_gmt":"2017-01-29T02:20:00","slug":"opengl-shader-9","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=445","title":{"rendered":"OpenGL Shader &#8211; 9"},"content":{"rendered":"<p><strong>GLSL\uc744 \uc704\ud55c OpenGL \uc124\uc815 &#8211; InfoLog\ub97c \ud1b5\ud55c \ub514\ubc84\uae45<\/strong><br \/>\n\uc6d0\ubb38: <a href=\"http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?oglinfo\">http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?oglinfo<\/a><\/p>\n<p>\uc250\uc774\ub354 \ub514\ubc84\uae45\uc740 \uc5b4\ub835\ub2e4. \uc544\uc9c1 printf\uc640 \uac19\uc740 \ucd9c\ub825\ubb38\ub3c4 \uc5c6\uace0 \uc55e\uc73c\ub85c\ub3c4 \uc5c6\uc744 \uac83\uc774\ub2e4. \ud558\uc9c0\ub9cc \ud5a5\ud6c4 \uac1c\ubc1c\ud234\uc5d0\uc11c \uc250\uc774\ub354 \ub514\ubc84\uae45\uc744 \uc704\ud55c \uae30\ub2a5\uc744 \uc81c\uacf5\ud560\uc9c0 \ubaa8\ub974\uaca0\ub2e4. \uc250\uc774\ub354 \ucf54\ub4dc\uac00 \uc633\ubc14\ub974\uac8c \ucef4\ud30c\uc77c \ub418\uace0 \ub9c1\ud06c \ub418\uc5c8\ub294\uc9c0\ub97c \uac80\uc0ac\ud558\uae30 \uc704\ud55c \ud568\uc218\uac00 \uc788\ub2e4.<\/p>\n<p>\ucef4\ud30c\uc77c \ub2e8\uacc4\ub4e4\uc5d0 \ub300\ud55c \uacb0\uacfc \uc0c1\ud0dc\ub97c \uc5bb\uae30 \uc704\ud55c OpenGL 2.0 \ud615\ud0dc\uc758 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p>void glGetShaderiv(GLuint object, GLenum type, int *param);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \uac1d\uccb4 \ud578\ub4e4<br \/>\ntype &#8211; GL_COMPILE_STATUS<br \/>\nparam &#8211; \ubc18\ud658\uac12\uc73c\ub85c\uc368 \uc131\uacf5\uc774\uba74 GL_TRUE\ub97c, \uc2e4\ud328\uba74 GL_FALSE<\/p>\n<p>\ub9c1\ud06c \ub2e8\uacc4\uc5d0 \ub300\ud55c \uacb0\uacfc \uc0c1\ud0dc\ub97c \uc5bb\uae30 \uc704\ud55c OpenGL 2.0 \ud615\ud0dc\uc758 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p>void glGetProgramiv(GLuint object, GLenum type, int *param);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \uac1d\uccb4 \ud578\ub4e4<br \/>\ntype &#8211; GL_LINK_STATUS<br \/>\nparam &#8211; \ubc18\ud658\uac12\uc73c\ub85c\uc368 \uc131\uacf5\uc774\uba74 GL_TRUE\uc774\uace0 \uc2e4\ud328\uba74 GL_FALSE<\/p>\n<p>\uc704\uc758 OpenGL 2.0 \ud615\ud0dc\uc758 \ub450\uac1c\uc758 \ud568\uc218\uc5d0 \ub300\ud55c ARB \ud655\uc7a5 \ud568\uc218\ub294 \ud558\ub098\ub85c \ub300\uc2e0\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>void glGetObjectParameterivARB(GLhandleARB object, GLenum type, int *param);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \ud578\ub4e4<br \/>\ntype &#8211; GL_OBJECT_LINK_STATUS_ARB \ub610\ub294 GL_OBJECT_COMPILE_STATUS_ARB<br \/>\nparam &#8211; \ubc18\ud658\uac12\uc73c\ub85c\uc368 \uc131\uacf5\uc774\uba74 1, \uc2e4\ud328\uba74 0<\/p>\n<p>\uc704\uc5d0\uc11c \uc5b8\uae09\ud55c \ud568\uc218\ub4e4\uc758 \ub450\ubc88\uc9f8 \uc778\uc790(type)\uc5d0 \ub300\ud574 \ub354 \ub9ce\uc740 \uc635\uc158\uc774 \uc788\uc9c0\ub9cc, \uc790\uc138\ud55c \uc124\uba85\uc740 \uc5ec\uae30\uc11c \ud558\uc9c0 \uc54a\uaca0\ub2e4. \ub300\uc2e0 <a href=\"http:\/\/developer.3dlabs.com\/openGL2\/index.htm\">http:\/\/developer.3dlabs.com\/openGL2\/index.htm<\/a>\ub97c \ucc38\uace0\ud558\uae38 \ubc14\ub780\ub2e4.<\/p>\n<p>\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0 InfoLog\ub97c \uc0ac\uc6a9\ud574\uc11c \uc5d0\ub7ec\uc5d0 \ub300\ud55c \ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \uc5bb\uc5b4\uc62c \uc218 \uc788\ub2e4. \uc774 \ub85c\uadf8\ub294 \uc218\ud589\ud55c \ub9c8\uc9c0\ub9c9 \uc5f0\uc0b0\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub294\ub370, \uadf8 \ub0b4\uc6a9\uc740 \ucef4\ud30c\uc77c\uc5d0 \ub300\ud55c \uacbd\uace0\ub098 \uc5d0\ub7ec \ub610\ub294 \ub9c1\ud06c \ub2e8\uacc4\uc5d0\uc11c\uc5d0\uc11c \ubc1c\uc0dd\ud55c \ubb38\uc81c\ub4e4\uc774\ub2e4. \ub85c\uadf8\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc5d0\uc11c \uc2e4\ud589\ub420 \uc250\uc774\ub354\uc5d0 \ub300\ud574 \ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \uc81c\uacf5\ud55c\ub2e4. \uc608\ub97c\ub4e4\uc5b4\uc11c \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 \uae30\ub2a5\uc774 \ud558\ub4dc\uc6e8\uc5b4\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294\ub2e4\ub4e0\uc9c0, \uc544\ubb34\ub7f0 \ubb38\uc81c\uac00 \uc5c6\ub2e4\ub4e0\uc9c0\uc640 \uac19\uc740 \uc815\ubcf4\uc774\ub2e4. \ubd88\ud589\uc774\ub3c4 InfoLog \uba54\uc138\uc9c0\uc5d0 \ub300\ud55c \uc2a4\ud399\uc740 \uc5c6\ub2e4. \uadf8\ub798\uc11c \uac01 \ubca4\ub354\ub9c8\ub2e4 \uadf8 \uba54\uc138\uc9c0\uc758 \ub0b4\uc6a9\uc774 \ub2e4\ub974\ub2e4.<\/p>\n<p>\ud2b9\uc815\ud55c \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c InfoLog\ub97c \uc5bb\uae30 \uc704\ud55c OpenGL 2.0 \ud615\ud0dc\uc758 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p>void glGetShaderInfoLog(GLuint object, int maxLen, int *len, char *log);<br \/>\nvoid glGetProgramInfoLog(GLuint object, int maxLen, int *len, char *log);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \uac1d\uccb4 \ud578\ub4e4<br \/>\nmaxLen &#8211; InfoLog\ub85c\ubd80\ud130 \ubc1b\uc744\uc218 \uc788\ub294 \ubb38\uc790\uc758 \ucd5c\ub300 \uac1c\uc218<br \/>\nlen &#8211; \uc2e4\uc81c \ubc1b\uc744 \ubb38\uc790\uc758 \uac1c\uc218<br \/>\nlog &#8211; \uc2e4\uc81c \ub85c\uadf8 \uba54\uc138\uc9c0 \ubb38\uc790\uc5f4<\/p>\n<p>\uc704\uc758 \ud568\uc218\uc5d0 \ub300\ud55c ARB \ud655\uc7a5 \ud615\ud0dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud558\ub098\uc758 \ud568\uc218\ub85c \ub300\uc2e0\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>void glGetInfoLogARB(GLhandleARB object, int maxLen, int *len, char *log);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8 \uac1d\uccb4\uc5d0 \ub300\ud55c \ud578\ub4e4<br \/>\nmaxLen &#8211; InfoLog\ub85c\ubd80\ud130 \ubc1b\uc744 \uc218 \uc788\ub294 \ubb38\uc790\uc5f4\uc758 \ucd5c\ub300 \uae38\uc774<br \/>\nlen &#8211; \uc2e4\uc81c \ubc1b\uc744 \ubb38\uc790\uc5f4\uc758 \uae38\uc774<br \/>\nlog &#8211; \uc2e4\uc81c \ub85c\uadf8 \uba54\uc138\uc9c0 \ubb38\uc790\uc5f4<\/p>\n<p>InfoLog\ub97c \ud1b5\ud574 \uc5bb\uc744 \uc815\ubcf4\uc758 \uc815\ud655\ud55c \uae38\uc774\ub97c \uc54c\uc544\uc57c\ud560 \ud544\uc694\uac00 \uc788\ub294\ub370, \uc5bb\ub294 \ubc29\ubc95\uc740 \uc544\ub798\uc758 \ud568\uc218\uc640 \uac19\ub2e4. (OpenGL 2.0 \ud615\ud0dc)<\/p>\n<p>void glGetShaderiv(GLuint object, GLenum type, int *param);<br \/>\nvoid glGetProgramiv(GLuint object, GLenum type, int *param);<br \/>\nParameter:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8 \uac1d\uccb4\uc5d0 \ub300\ud55c \ud578\ub4e4<br \/>\ntype &#8211; GL_INFO_LOG_LENGTH<br \/>\nparam &#8211; \ubc18\ud658\uac12\uc73c\ub85c\uc368 InfoLog\uc758 \uae38\uc774<\/p>\n<p>\uc704\uc758 \ud568\uc218\uc5d0 \ub300\ud55c ARB \ud655\uc7a5\uc740 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<p>void glGetObjectParameterivARB(GLhandleARB object, GLenum type, int *param);<br \/>\nParameters:<br \/>\nobject &#8211; \uc250\uc774\ub354\ub098 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \ud578\ub4e4<br \/>\ntype &#8211; GL_OBJECT_INFO_LOG_LENGTH_ARB<br \/>\nparam &#8211; \ubc18\ud658\uac12\uc73c\ub85c\uc368 InfoLog\uc758 \uae38\uc774<\/p>\n<p>\ub2e4\uc74c \ud568\uc218\ub294 OpenGL 2.0\uc5d0\uc11c InfoLog\uc758 \ub0b4\uc6a9\uc744 \ucd9c\ub825\ud558\ub294 \uc608\uc774\ub2e4.<\/p>\n<pre><code class=\"html\">void printShaderInfoLog(GLuint obj)\r\n{\r\n\u00a0 int infologLength = 0;\r\n\u00a0 int charsWritten\u00a0 = 0;\r\n\u00a0 char *infoLog;\r\n\r\n\u00a0 glGetShaderiv(obj, GL_INFO_LOG_LENGTH, &amp;infologLength);\r\n\r\n\u00a0 if (infologLength > 0)\r\n\u00a0 {\r\n\u00a0 \u00a0 \u00a0\u00a0 infoLog = (char *)malloc(infologLength);\r\n\u00a0 \u00a0 \u00a0\u00a0 glGetShaderInfoLog(obj, infologLength, &charsWritten, infoLog);\r\n\u00a0 \u00a0 \u00a0\u00a0 printf(\"%s\\n\",infoLog);\r\n\u00a0 \u00a0 \u00a0\u00a0 free(infoLog);\r\n\u00a0 }\r\n}\r\n\r\nvoid printProgramInfoLog(GLuint obj)\r\n{\r\n\u00a0 int infologLength = 0;\r\n\u00a0 int charsWritten\u00a0 = 0;\r\n\u00a0 char *infoLog;\r\n\r\n\u00a0 glGetProgramiv(obj, GL_INFO_LOG_LENGTH,&infologLength);\r\n\r\n\u00a0 if (infologLength > 0)\r\n\u00a0 {\r\n\u00a0 \u00a0 \u00a0\u00a0 infoLog = (char *)malloc(infologLength);\r\n       glGetProgramInfoLog(obj, infologLength, &charsWritten, infoLog);\r\n\u00a0 \u00a0 \u00a0\u00a0 printf(\"%s\\n\",infoLog);\r\n\u00a0 \u00a0 \u00a0\u00a0 free(infoLog);\r\n\u00a0 }\r\n}<\/code><\/pre>\n<p>ARB \ud655\uc7a5 \ud615\ud0dc\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre><code class=\"html\">void printInfoLog(GLhandleARB obj)\r\n{\r\n    int infologLength = 0;\r\n    int charsWritten = 0;\r\n    char *infoLog;\r\n\r\n    glGetObjectParameterivARB(obj, \r\n        GL_OBJECT_INFO_LOG_LENGTH_ARB, &amp;infologLength);\r\n\r\n    if(infologLength > 0)\r\n    {\r\n        info = (char *)malloc(infologLength);\r\n        glGetInfoLogARB(obj,infologLength, &amp;charsWritten, infoLog);\r\n        printf(\"%s\\n\", infoLog);\r\n        free(infoLog);\r\n    }\r\n}<\/code>\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>GLSL\uc744 \uc704\ud55c OpenGL \uc124\uc815 &#8211; InfoLog\ub97c \ud1b5\ud55c \ub514\ubc84\uae45 \uc6d0\ubb38: http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?oglinfo \uc250\uc774\ub354 \ub514\ubc84\uae45\uc740 \uc5b4\ub835\ub2e4. \uc544\uc9c1 printf\uc640 \uac19\uc740 \ucd9c\ub825\ubb38\ub3c4 \uc5c6\uace0 \uc55e\uc73c\ub85c\ub3c4 \uc5c6\uc744 \uac83\uc774\ub2e4. \ud558\uc9c0\ub9cc \ud5a5\ud6c4 \uac1c\ubc1c\ud234\uc5d0\uc11c \uc250\uc774\ub354 \ub514\ubc84\uae45\uc744 \uc704\ud55c \uae30\ub2a5\uc744 \uc81c\uacf5\ud560\uc9c0 \ubaa8\ub974\uaca0\ub2e4. \uc250\uc774\ub354 \ucf54\ub4dc\uac00 \uc633\ubc14\ub974\uac8c \ucef4\ud30c\uc77c \ub418\uace0 \ub9c1\ud06c \ub418\uc5c8\ub294\uc9c0\ub97c \uac80\uc0ac\ud558\uae30 \uc704\ud55c \ud568\uc218\uac00 \uc788\ub2e4. \ucef4\ud30c\uc77c \ub2e8\uacc4\ub4e4\uc5d0 \ub300\ud55c \uacb0\uacfc \uc0c1\ud0dc\ub97c \uc5bb\uae30 \uc704\ud55c OpenGL 2.0 \ud615\ud0dc\uc758 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. void &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=445\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;OpenGL Shader &#8211; 9&#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":[3,25],"class_list":["post-445","post","type-post","status-publish","format-standard","hentry","category-opengl","tag-opengl","tag-shader"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/445","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=445"}],"version-history":[{"count":3,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/445\/revisions"}],"predecessor-version":[{"id":3597,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/445\/revisions\/3597"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=445"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}