{"id":38,"date":"2005-05-09T06:45:00","date_gmt":"2005-05-09T06:45:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=38"},"modified":"2017-01-29T20:24:09","modified_gmt":"2017-01-29T11:24:09","slug":"opengl-tutorial-transparent-by-the-blending","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=38","title":{"rendered":"[OpenGL Tutorial] Transparent by The Blending"},"content":{"rendered":"<p><P><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1278692578.jpg\" class=\"alignleft\" width=\"200\" height=\"150\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/>\uc774 \uc7a5\uc740 OpenGL\uc758 Blend \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uc5ec \ud22c\uba85\ud55c \ubb3c\uccb4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\ub294 \uac83\uc744 \uc608\ub85c\uc368 Blend\ub97c \uc124\uba85\ud558\uace0 \ud55c\ub2e4.<\/P><P>OpenGL\uc5d0\uc11c \ub300\ubd80\ubd84\uc758 \ud2b9\uc218\ud6a8\uacfc\ub294 Blending\ub97c \uc774\uc6a9\ud55c\ub2e4. \ube14\ub79c\ub529\uc740 \uc774\ubbf8 \ud654\uba74\uc0c1\uc5d0 \uadf8\ub824\uc9c4 \ud53d\uc140\uc758 \uc0c9\uacfc \uc774\uc81c \ubc14\ub85c \uac19\uc740 \uc704\uce58\uc5d0 \uadf8\ub824\uc9c8 \ud53d\uc140\uc758 \uc0c9\uc758 \uc870\ud569\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4. \uc5b4\ub5a4\uc2dd\uc73c\ub85c \uc0c9\uc0c1\uc744 \uc870\ud569\ud558\ub294 \uc9c0\ub294 \uc54c\ud30c\uac12\uacfc \ube14\ub79c\ub529 \ud568\uc218\uc5d0 \uc758\ud574 \uc815\ud574\uc9c4\ub2e4. \uc54c\ud30c\uac12\uc774\ub780 \ubcf4\ud1b5 \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud560\ub54c 4\uac00\uc9c0 \uad6c\uc131\uc694\uc18c\uc911 \ub9c8\uc9c0\ub9c9 \ub124\ubc88\uc9f8 \uac12\uc774\ub2e4. \uc9c0\uae08\uae4c\uc9c0 \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c GL_RGB\ub97c \uc0ac\uc6a9\ud588\uc5c8\ub294\ub370 \uc5ec\uae30\uc5d0\ub294 \uc54c\ud30c\uac12\uc774 \uc5c6\ub2e4. \uc54c\ud30c\uac12\uc758 \ucd94\uac00\ub97c \uc704\ud574 GL_RGBA\ub97c \uc0ac\uc6a9\ud560\uc218\uc788\ub2e4. \uadf8\ub9ac\uace0 \uc54c\ud30c\uac12\uc744 \ud3ec\ud568\ud55c \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud558\uae30 \uc704\ud574 glColor3f \ub300\uc2e0 glColor4f\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/P><P>\ub300\ubd80\ubd84\uc758 \uc0ac\ub78c\ub4e4\uc740 \uc54c\ud30c\uac12\uc744 \ubb3c\uccb4\uc758 \ubd88\ud22c\uba85 \uc815\ub3c4\ub77c\uace0 \uc0dd\uac01\ud55c\ub2e4. \uc54c\ud30c\uac12 0.0\uc740 \uc644\uc804\ud55c \ud22c\uba85\uc774\uace0 1.0\uc740 \uc644\uc804\uc774 \ubd88\ud22c\uba85\ud558\ub2e4.<BR><BR><STRONG><U>\ube14\ub79c\ub529 \uacf5\uc2dd<BR><\/U>(Rs Sr + Rd Dr , Gs Sg + Gd Dg , Bs Sb + Bd Db , As Sa + Ad Da)<\/STRONG><\/P><P>OpenGL\uc740 \ub450\ud53d\uc140\uac04\uc758 \ube14\ub79c\ub529 \uacb0\uacfc\ub97c \uacc4\uc0b0\ud558\uae30 \uc704\ud574 \uc704\uc758 \uacf5\uc2dd\uc744 \uc774\uc6a9\ud55c\ub2e4. s\uc640 d\uc758 \uaf2c\ub9ac \uae00\uc790\ub294 \uc6d0\ubcf8(Source)\uc640 \ub300\uc0c1(Destination) \ud53d\uc140\uc744 \ub098\ud0c0\ub0b8\ub2e4. S\uc640 D \uc694\uc18c\ub294 \ube14\ub79c\ub529 \uc694\uc18c\uc774\ub2e4. \uc774\ub7ec\ud55c \uac12\ub4e4\uc774 \uc5b4\ub5a4 \ubc29\uc2dd\uc73c\ub85c \ube14\ub79c\ub529\ud560\uac83\uc778\uc9c0\ub97c \uc9c0\uc815\ud55c\ub2e4. \ub610\ud55c r, g, b, a\uc758 \ucca8\uc790\ub294 \uc0c9\uc758 3\uc694\uc18c(\ube68\uac15, \ucd08\ub85d, \ud30c\ub791)\uacfc \uc54c\ud30c\uac12\uc774\ub2e4. S\uc640 D\uc758 \uc77c\ubc18\uc801\uc778 \uac12\uc73c\ub85c\ub294 S\uc5d0 \ub300\ud574\uc11c\ub294 (As, As, As, As) (\uc904\uc5ec \ub9d0\ud558\uba74, \uc6d0\ubcf8 \uc54c\ud30c\uac12)\uc774\uba70 D\uc5d0 \ub300\ud574\uc11c\ub294 (1, 1, 1, 1) &#8211; (As, As, As, As) (\uc904\uc5ec \ub9d0\ud558\uba74, 1 &#8211; \uc6d0\ubcf8 \uc54c\ud30c\uac12)\uc774\ub2e4. \uc774\uac83\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \ube14\ub79c\ub529 \uacf5\uc2dd\uc744 \ub9cc\ub4e4\uc5b4 \ub0b8\ub2e4.<\/P><P><STRONG>( Rs As + Rd (1 &#8211; As), Gs As + Gd (1 &#8211; As), Bs As + Bs (1 &#8211; As), As As + Ad (1 &#8211; As) )<\/STRONG> <\/P><P>\uc774 \uacf5\uc2dd\uc740 \ud22c\uba85\/\ubc18\ud22c\uba85 \ud6a8\uacfc\ub97c \ub0bc\uc218 \uc788\ub2e4.<\/P><P>\uc6b0\ub9ac\ub294 \ub2e4\ub978 \uac83\ub4e4\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \ube14\ub79c\ub529\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \ubb3c\uccb4\ub97c \ud22c\uba85\ud558\uac8c \uadf8\ub9b4\ub54c\ub294 Depth Buffer \uc0ac\uc6a9\uc744 \ub9c9\ub294\ub2e4. \uc5b4\ub5a4 \ubb3c\uccb4\uc758 \uc55e\uc5d0 \ud22c\uba85\ud55c \ubb3c\uccb4\ub97c \uadf8\ub9b4\ub54c \ud22c\uba85\ud55c \ubb3c\uccb4\ub97c \ud1b5\ud574\uc11c \uadf8 \ub4a4\uc758 \uadf8 \ubb3c\uccb4\uac00 \ubcf4\uc5ec\uc57c\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. <\/P><P>\uc790 \uc774\uc81c \ube14\ub79c\ub529\uc5d0 \ub300\ud55c \uc218\ud559\uc801, \uac1c\ub860\uc801\uc778 \uc124\uba85\uc744 \uc811\uace0 \uc2e4\uc81c\ub85c \ud504\ub85c\uadf8\ub798\ubc0d \uc608\ub97c \ud1b5\ud574 \ube14\ub79c\ub529\uc744 \uc811\ud574\ubcf4\uc790. \uc0ac\uc6a9\ud560 \uc18c\uc2a4\ub294 6\uc7a5\uc5d0\uc11c \ub9cc\ub4e0 \ucf54\ub4dc\ub97c \uc774\uc6a9\ud558\uae30\ub85c \ud55c\ub2e4.<\/P><P>\uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uacb0\uacfc\ub294 \ud22c\uba85\ud55c \uc815\uc721\uba74\uccb4(?), \ubc14\ub85c \uc774\uac83\uc774\ub2e4. \uc2e4\uc81c \uacb0\uacfc\ub97c \ubbf8\ub9ac \ubcf4\uc778\ub2e4. \uc544\ub798\ub97c \ubcf4\ub77c.<\/P><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1066207259.jpg\" class=\"aligncenter\" width=\"389\" height=\"311\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/><BR><P>6\uc7a5\uc5d0\uc11c \ubcf4\uc558\ub358 \uac83\uacfc \uac19\uc740 \ub0b4\uc6a9\uc778\ub370 \ucc28\uc774\uc810\uc740 \uc815\uc721\uba74\uccb4\uc758 \uba74\uc774 \ud22c\uba85\ud574\uc11c \ubc18\ub300\ucabd \uba74\uae4c\uc9c0\ub3c4 \ubcf4\uc778\ub2e4\ub294 \uac83\uc774\ub2e4. \ud14d\uc2a4\uccd0 \ub9f5\ud551 \uc18c\uc2a4\ub97c \ubcf4\ub2e4 \uadf8\ub7f4\uc2f8\ud55c \uac83\uc73c\ub85c \ubcc0\uacbd\ud574\uc11c \ub2e4\uc2dc \uc2e4\ud589\ud574 \ubcf4\uba74 \ub610 \ub2e4\ub978 \uba4b\uc9c4 \uacb0\uacfc\uac00 \ub098\uc628\ub2e4. \uc9c1\uc811 \ud574\ubcf4\uae30 \ubc14\ub780\ub2e4.<\/P><P>\uc774\uc81c \ucf54\ub4dc\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc790.<\/P><P>\uba3c\uc800 \ube14\ub79c\ub529\uc744 \uc704\ud574\uc11c \ucd08\uae30\ud654 \uc2dc\ucf1c\uc918\uc57c \ud560 \uac83\ub4e4\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc790. \uc6b0\ub9ac\uac00 \uc798\uc54c\uace0 \uc788\ub4ef\uc774 \ucd08\uae30\ud654\ub294 InitGL \ud568\uc218\uc5d0\uc11c \ud574\uc900\ub2e4. \uae30\uc874\uc758 \uc18c\uc2a4 \ucf54\ub4dc\uc5d0\uc11c \uc0ad\uc81c\ub418\uace0 \ucd94\uac00\uac70\ub098 \ubcc0\uacbd\ub420 \ucf54\ub4dc\ub97c \uc124\uba85\ud558\uc790\uba74 \uba3c\uc800 glEnable(GL_CULL_FACE)\ub97c \uc0ad\uc81c\ud55c\ub2e4. \uc65c\ub0d0\ud558\uba74 \uc774 \ucf54\ub4dc\ub294 \uba74\uc758 \uc55e\uba74\uc5d0 \ub300\ud574\uc11c\ub9cc \uadf8\ub9ac\uace0 \ub4b7\uba74\uc744 \uadf8\ub9ac\uc9c0 \uc54a\uac8c \ud558\ub294 \ucf54\ub4dc\uc778\ub370 \uadf8\ub807\uac8c \ud558\uba74 \ud22c\uba85\ud55c \uba74\uc744 \ud1b5\ud574\uc11c \uadf8 \ub4b7\uba74\uc774 \ubcf4\uc774\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc774\ub2e4. \uadf8\ub9ac\uace0 glEnable(GL_DEPTH_TEST)\ub97c glDisable(GL_DEPTH_TEST)\ub85c \ubcc0\uacbd\ud55c\ub2e4. \uc774\uc720\ub294 \uc55e\uc11c \uc124\uba85\ud588\ub358 \ubc14\uc640 \uac19\ub2e4. \uadf8\ub9ac\uace0 \ubb3c\uccb4\uc758 \uc7ac\uc9c8\uc5d0 \ub300\ud574 \uc124\uc815\ud574 \uc8fc\ub294 \ubaa8\ub4e0 \ucf54\ub4dc\ub97c \uc0ad\uc81c\ud55c\ub2e4. \uc0ac\uc2e4 \ud14d\uc2a4\uccd0 \ub9f5\ud551\uc744 \uc785\ud78c \ubb3c\uccb4\ub294 \ub354 \uc774\uc0c1 \uc7ac\uc9c8\uc774 \ud544\uc694\uc5c6\uc744 \ubfd0\ub354\ub7ec \ube14\ub79c\ub529 \ud6a8\uacfc\uc5d0\uc11c\ub294 \uc7ac\uc9c8\uc758 \uc131\uc9c8\uc774 \ube14\ub79c\ub529 \ud6a8\uacfc\ub97c \ubc29\ud574\ud568\uc73c\ub85c\uc368 \ub454\ud0c1\ud55c \ub290\ub08c\uc758 \uacb0\uacfc\ub97c \uc5bb\uc744\uc218\ubc16\uc5d0 \uc5c6\ub2e4. \uc7ac\uc9c8\uc5d0 \uad00\uacc4\ub418\ub294 \ucf54\ub4dc\ub4e4\uc744 \uc81c\uac70\ud55c\ub2e4. \uc81c\uac70\ud560 \ucf54\ub4dc\ub294 \ub2e4\uc74c InitGL \ud568\uc218\uc758 \uc804\uccb4 \uad6c\ud604 \uc18c\uc2a4\ub97c \ubcf4\uc774\uaca0\ub2e4. \uadf8\ub9ac\uace0 \uac00\uc7a5 \uc911\uc694\ud55c \ube14\ub79c\ub529 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uc9c0\uc815\ud558\uace0 \ube14\ub79c\ub529 \ud568\uc218\ub97c \uc9c0\uc815\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4.\uadf8 \ub450 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/P><\/p>\n<pre>glBlendFunc(GL_SRC_ALPHA, GL_ONE);\r\nglEnable(GL_BLEND);<\/pre>\n<p>\uccab\ubc88\uc9f8\ub294 \ube14\ub79c\ub529 \ud568\uc218\ub97c \uc9c0\uc815\ud574 \uc8fc\ub294 \ucf54\ub4dc\uc774\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\uc778 GL_SRC_ALPHA\ub294 \uc6d0\ubcf8 \ud53d\uc140\uc5d0 \ub300\ud55c \ube14\ub79c\ub529 \uacc4\uc218\ub97c \uacc4\uc0b0\ud558\ub294 \ubc29\uc2dd\uc778\ub370 \uc6d0\ubcf8\uce7c\ub77c\ub97c \uc6d0\ubcf8 \uc54c\ud30c\uac12\uc73c\ub85c \uacf1\ud558\ub294 \uac83\uc774\ub2e4. \uadf8\ub9ac\uace0 \ub450\ubc88\uc9f8 \uc778\uc790\ub294 \ub300\uc0c1 \ud53d\uc140\uc5d0 \ub300\ud55c \ube14\ub79c\ub529 \uacc4\uc218\ub97c \uacc4\uc0b0\ud558\ub294 \ubc29\uc2dd\uc778\ub370 \uadf8\ub0e5 \ub300\uc0c1 \uce7c\ub77c\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uac83\uc774\ub2e4. \uc989 \ube14\ub79c\ub529 \uacc4\uc218\ub294 1\uc774 \ub418\uaca0\ub2e4. \ucd5c\uc885\uc801\uc73c\ub85c \uc774\ub807\uac8c \ucc98\ub9ac\ub41c \ub450 \ud53d\uc140\uac12\uc774 \ud569\ud574\uc838\uc11c \ucd5c\uc885 \ud53d\uc140\uac12\uc73c\ub85c \ucc98\ub9ac\ub418\uc5b4 \ud654\uba74\uc0c1\uc5d0 \ub098\ud0c0\ub098\uac8c \ub41c\ub2e4.<\/P><br \/>\n<P>\uc5ec\uae30\uae4c\uc9c0\uac00 \ube14\ub79c\ub529\uc744 \uc774\uc6a9\ud55c \ud22c\uba85\ud55c \ubb3c\uccb4\ub97c \uc0dd\uc131\ud558\ub294 \ucd08\uae30\ud654 \ucf54\ub4dc\uc774\ub2e4. \uc544\ub798\uc5d0 \uc804\uccb4 \ucf54\ub4dc\ub97c \uae30\ub85d\ud558\ub2c8 \ucc38\uace0\ubc14\ub780\ub2e4. \ub178\ub79c\uc0c9 \ubd80\ubd84\uc774 \ubcc0\uacbd\ub41c \ubd80\ubd84\uc774\ub2e4.<\/P><\/p>\n<pre>int InitGL(GLvoid)\r\n{\r\n    GLfloat ambientLight[] = { 0.25f, 0.25f, 0.25f, 1.0f };\r\n    GLfloat diffuseLight[] = { 0.9f, 0.9f, 0.9f, 1.0f };\r\n    GLfloat lightPos[] = { -100.0f, 130.0f, 150.0f, 1.0f };\r\n    GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };\r\n   \r\n    AUX_RGBImageRec *texRec[3];\r\n    memset(texRec, 0, sizeof(void *)*3);\r\n   \r\n    if((texRec[0]=LoadBMPFile(\"img.bmp\")) &&\r\n       (texRec[1]=LoadBMPFile(\"img2.bmp\")) &&\r\n       (texRec[2]=LoadBMPFile(\"img3.bmp\"))) {\r\n        glGenTextures(3, &tex[0]);\r\n        for(int i=0; i<3; i++) {\r\n            glBindTexture(GL_TEXTURE_2D, tex[i]);\r\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r\n            glTexImage2D(GL_TEXTURE_2D, \r\n            0, \r\n            3, \r\n            texRec[i]->sizeX, \r\n            texRec[i]->sizeY, \r\n            0, \r\n            GL_RGB, \r\n            GL_UNSIGNED_BYTE, \r\n            texRec[i]->data);\r\n        }\r\n    } else return FALSE;\r\n   \r\n    for(int i=0; i<3; i++) {\r\n        if(texRec[i])\r\n        {\r\n            if(texRec[i]->data) free(texRec[i]->data);\r\n            free(texRec[i]);\r\n        } else return FALSE;\r\n    }\r\n   \r\n    glEnable(GL_TEXTURE_2D);\r\n    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);\r\n   \r\n    glShadeModel(GL_SMOOTH);\r\n    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r\n    glClearDepth(1.0f);\r\n    \/\/ glEnable(GL_CULL_FACE); \/\/\r\n    glFrontFace(GL_CCW);\r\n    glEnable(GL_LIGHTING);\r\n   \r\n    \/\/\/\/\/\/\/\/\/\/\/ NEW \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n    glBlendFunc(GL_SRC_ALPHA, GL_ONE);\r\n    glEnable(GL_BLEND);\r\n    \/\/\/\/\/\/\/\/\/\/\/ NEW \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n    glDisable(GL_DEPTH_TEST); \/\/\r\n   \r\n    glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);\r\n    glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);\r\n    glLightfv(GL_LIGHT0, GL_POSITION, lightPos);\r\n    glLightfv(GL_LIGHT0, GL_SPECULAR, specular);\r\n    glEnable(GL_LIGHT0);\r\n   \r\n    \/\/ glEnable(GL_COLOR_MATERIAL); \/\/ \r\n    \/\/ glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); \/\/ \r\n    \/\/ glMaterialfv(GL_FRONT, GL_SPECULAR, specref); \/\/ \r\n    \/\/ glMateriali(GL_FRONT, GL_SHININESS, 10); \/\/ \r\n   \r\n    glDepthFunc(GL_LEQUAL);\r\n    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);\r\n   \r\n    return TRUE;\r\n}<\/pre>\n<p>\uc790 \uc774\uc81c \uc2e4\uc81c \ubb3c\uccb4\ub97c \uadf8\ub824\uc8fc\ub294 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790. \ubcc0\uacbd\ub41c \ubd80\ubd84\uc740 \ub2e8 \ud55c\uc904\uc774\ub2e4. \uc989 \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud560\ub54c \uc54c\ud30c\uac12\uc744 \ucd94\uac00\ud558\ub294 \uac83\uc774\ub2e4. \uc544\ub798\ub294 glDrawScene \ud568\uc218\uc758 \uc77c\ubd80\ubd84\uc774\ub2e4.<\/p>\n<pre>int DrawGLScene(GLvoid)\r\n{\r\n    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\r\n    glLoadIdentity();\r\n    glTranslatef(0.0f, 0.0f, -7.0f);\r\n   \r\n    glColor4f(1.0f, 1.0f, 1.0f, 0.2f); \/\/ \r\n   \r\n    glRotatef(rot, 1.0f, 0.1f, 0.4f);\r\n    glBindTexture(GL_TEXTURE_2D, tex[0]);\r\n    glBegin(GL_QUADS);\r\n    glNormal3f(0.0f, 0.0f, 1.0f);\r\n    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);\r\n    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);\r\n    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f);\r\n   \r\n        .\r\n        .\r\n        .<\/pre>\n<p>\uc704\uc758 \ub178\ub780\uc0c9 \ucf54\ub4dc\uac00 \uc720\uc77c\ud55c \ubcc0\uacbd \ucf54\ub4dc\uc778\ub370 \uc54c\ud30c\uac12\uc73c\ub85c 0.2\ub97c \uc8fc\uc5c8\ub2e4. \uc774\uac83\uc740 \ud22c\uba85\ub3c4\uac00 80%\ub97c \ub098\ud0c0\ub0b4\ub294 \uc218\uce58\uc774\ub2e4.<br \/>\n<P>\uc774\uac83\uc73c\ub85c \ube14\ub79c\ub529\uc744 \uc774\uc6a9\ud55c \ud22c\uba85\ud55c \uac1d\uccb4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\ub294 \uac83\uc744 \ub9c8\uce5c\ub2e4. \uc7ac\ubbf8 \uc0bc\uc544 \ub2e4\ub978 \ud14d\uc2a4\uccd0 \ub9f5\ud551 \uc18c\uc2a4\uc5d0 \ub300\ud55c \uadf8\ub9bc \ud30c\uc77c\ub9cc\uc744 \ubc14\uafd4\uc11c \uc2e4\ud589\ubcf8 \uacb0\uacfc\ub97c \uc544\ub798\uc5d0 \uc81c\uc2dc\ud55c\ub2e4. \ubcf4\uae30 \ubc14\ub780\ub2e4.<BR><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1300025193.jpg\" class=\"aligncenter\" width=\"319\" height=\"290\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/><\/p>\n<p style='text-align:center'><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1099150726.zip\"><img width='64' src='\/images\/download.svg' \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774 \uc7a5\uc740 OpenGL\uc758 Blend \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uc5ec \ud22c\uba85\ud55c \ubb3c\uccb4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\ub294 \uac83\uc744 \uc608\ub85c\uc368 Blend\ub97c \uc124\uba85\ud558\uace0 \ud55c\ub2e4.OpenGL\uc5d0\uc11c \ub300\ubd80\ubd84\uc758 \ud2b9\uc218\ud6a8\uacfc\ub294 Blending\ub97c \uc774\uc6a9\ud55c\ub2e4. \ube14\ub79c\ub529\uc740 \uc774\ubbf8 \ud654\uba74\uc0c1\uc5d0 \uadf8\ub824\uc9c4 \ud53d\uc140\uc758 \uc0c9\uacfc \uc774\uc81c \ubc14\ub85c \uac19\uc740 \uc704\uce58\uc5d0 \uadf8\ub824\uc9c8 \ud53d\uc140\uc758 \uc0c9\uc758 \uc870\ud569\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4. \uc5b4\ub5a4\uc2dd\uc73c\ub85c \uc0c9\uc0c1\uc744 \uc870\ud569\ud558\ub294 \uc9c0\ub294 \uc54c\ud30c\uac12\uacfc \ube14\ub79c\ub529 \ud568\uc218\uc5d0 \uc758\ud574 \uc815\ud574\uc9c4\ub2e4. \uc54c\ud30c\uac12\uc774\ub780 \ubcf4\ud1b5 \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud560\ub54c 4\uac00\uc9c0 \uad6c\uc131\uc694\uc18c\uc911 \ub9c8\uc9c0\ub9c9 \ub124\ubc88\uc9f8 \uac12\uc774\ub2e4. \uc9c0\uae08\uae4c\uc9c0 \uc0c9\uc0c1\uc744 \uc9c0\uc815\ud558\ub294 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=38\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[OpenGL Tutorial] Transparent by The Blending&#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],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-opengl","tag-opengl"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/38","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=38"}],"version-history":[{"count":4,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":3830,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions\/3830"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}