{"id":363131,"date":"2024-05-21T01:49:27","date_gmt":"2024-05-21T01:49:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=363131"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=363131","title":{"rendered":"<span>\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0438\u0437 90-\u0445: \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 3dfx Voodoo \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb? \u041f\u0438\u0448\u0435\u043c 3D-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 Glide<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/a39\/392\/f20\/a39392f203f55e6caebf3da856842eca.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a39\/392\/f20\/a39392f203f55e6caebf3da856842eca.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c\u0438, \u043a\u0430\u043a 3dfx Voodoo. \u042d\u0442\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438 \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b\\\u043a\u043e\u043d\u0446\u0430 90-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0431\u044b\u043b \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u0434\u043b\u044f \u0438\u0433\u0440, \u0430 \u043e \u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0430\u0433\u0430\u043b\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u044b. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0435\u0441\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u043d\u0430\u0442\u043e\u0432 \u0440\u0435\u0442\u0440\u043e-\u0438\u0433\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442, \u043b\u044e\u0431\u044f\u0442 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0441 \u0446\u0432\u0435\u0442\u043c\u0435\u0442\u0430 \u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043e\u0442 3dfx, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0421\u041d\u0413. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0431\u0437\u043e\u0440\u043e\u0432 \u043d\u0430 3dfx Voodoo \u043c\u043d\u043e\u0433\u043e, \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0433\u0440 \u2014 \u0442\u043e\u0436\u0435, \u0430 \u0432\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u00ab\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438\u00bb \u043e \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c 3D-\u0438\u0433\u0440\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442! \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0440\u0438\u043a\u0443\u043f\u0438\u043b \u0441\u0435\u0431\u0435 Voodoo 3, \u0438 \u043d\u0430\u0447\u0430\u043b \u0437\u0443\u0431\u0440\u0438\u0442\u044c Programmer&#8217;s Manual \u0441 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0434\u0430\u043a\u043e\u0435\u2026 \u0421\u0442\u0430\u0442\u044c\u044e \u044f \u0434\u043e\u043b\u0433\u043e \u0438 \u0443\u043f\u043e\u0440\u043d\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u0430\u0431\u044b \u0443\u0441\u043f\u0435\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0441 \u0432\u0430\u043c\u0438: \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 3dfx, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432 3dfx \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 90\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 3D-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Glide \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441 \u043d\u0443\u043b\u044f. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0422\u043e\u0433\u0434\u0430 \u0436\u0434\u0443 \u0432\u0430\u0441 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435!<a name=\"habracut\"><\/a><\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/font><\/h2>\n<p>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/770724\/\">\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 S3 ViRGE<\/a> \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0440\u0443\u0431\u0440\u0438\u043a\u0430 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u00ab\u043f\u043e\u0434\u043a\u0430\u043f\u043e\u0442\u043a\u0438\u00bb \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432 90-\u0445 \u0433\u043e\u0434\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u043b\u044e\u0434\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043f\u043e\u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0436\u0435 \u043f\u0438\u0448\u0443\u0442 \u0432 \u043b\u0438\u0447\u043a\u0443 \u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432! \u0414\u0443\u043c\u0430\u044e, \u044d\u0442\u0430 \u0440\u0443\u0431\u0440\u0438\u043a\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0433\u043e\u0434\u0443, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441 \u0432\u0430\u043c\u0438:<\/p>\n<ol>\n<li> PSP;<\/li>\n<li> PS1 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u0440\u0438\u043b \u0444\u0430\u0442\u043e\u0447\u043a\u0443 \u0438 \u0441\u043b\u0438\u043c\u043a\u0443);<\/li>\n<li> ATI Rage;<\/li>\n<li> \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, GeForce 2.<\/li>\n<\/ol>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ni\/tr\/24\/nitr24iwtpiaxnfqkwuhdtdf9xg.jpeg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/webt\/ni\/tr\/24\/nitr24iwtpiaxnfqkwuhdtdf9xg.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0421\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u044f \u043d\u0435 \u043c\u043e\u0433 \u043f\u0440\u043e\u0439\u0442\u0438 \u043c\u0438\u043c\u043e 3dfx Voodoo. \u0418 \u0434\u0435\u043b\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432, \u043d\u043e \u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 GPU. \u041f\u0440\u043e 3dfx \u044f \u0437\u043d\u0430\u044e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u043b\u0435\u0442, \u0435\u0449\u0451 \u0441 \u0441\u0430\u043c\u043e\u0439 \u044e\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u0432 \u00ab16-\u0431\u0438\u0442 \u0442\u043e\u043c\u0443 \u043d\u0430\u0437\u0430\u0434\u00bb, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438\u043a\u0443\u043f\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0440\u0435\u0448\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/ccd\/d7a\/4d6\/ccdd7a4d63dd5603b3b9299ce56174d9.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ccd\/d7a\/4d6\/ccdd7a4d63dd5603b3b9299ce56174d9.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0427\u0435\u043c \u0436\u0435 \u0431\u044b\u043b \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u043a\u0443\u043b\u044c\u0442\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 3dfx Voodoo \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430? \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, 3dfx Voodoo \u0432\u044b\u0448\u0435\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u043d\u043e \u0438 \u0441\u0442\u0430\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 (\u043d\u0430\u0440\u044f\u0434\u0443 \u0441 Rendition Verite) \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 GPU \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0446\u0435\u043d\u043e\u0439 \u0434\u043b\u044f 3D-\u0438\u0433\u0440 \u0442\u0435\u0445 \u043b\u0435\u0442. \u0418\u0433\u0440\u044b \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0438 \u0440\u0430\u043d\u0435\u0435: \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b PS1, N64, \u0438\u043b\u0438 \u044f\u043f\u043e\u043d\u0441\u043a\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b \u0438\u0437 90-\u0445, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u0438\u0433\u0440\u0430\u0445 \u043d\u0430 \u041f\u041a \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b \u0441\u043e\u0444\u0442\u0432\u0430\u0440\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440, \u0430 3dfx Voodoo \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435, \u0430 \u0442\u043e \u0438 \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0442\u0435\u0445 \u043b\u0435\u0442. \u0417\u0430 \u0433\u043e\u0434 \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u0430 Voodoo 1, \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f NVidia NV1 \u2014 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0439 \u0447\u0438\u043f, \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0437\u0430\u0434\u0430\u0447 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u043d \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0435 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0435\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0430 \u043a\u0432\u0430\u0434\u0430\u043c\u0438 \u2014 \u0442.\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c\u0438 \u0438 \u043d\u0435 \u0431\u044b\u043b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 API \u0442\u0435\u0445 \u043b\u0435\u0442, \u043f\u043e\u0441\u0435\u043c\u0443 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b Voodoo \u0431\u044b\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0438 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0438\u043f\u043e\u0432, \u0447\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u0438 \u0446\u0435\u043d\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432:<\/p>\n<ul>\n<li> \u041e\u0434\u0438\u043d <b>FBI<\/b>: \u0427\u0438\u043f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043e\u0431\u043c\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0445\u043e\u0441\u0442-\u041f\u041a \u0447\u0435\u0440\u0435\u0437 PCI\/AGP \u0438 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432. \u042d\u0442\u043e <b>\u0433\u043b\u0430\u0432\u043d\u044b\u0439 <\/b>\u0447\u0438\u043f \u0432 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043f\u0430\u0440\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c FBI, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u2014 <b>SLI<\/b>.<\/li>\n<li> \u0414\u043e \u0442\u0440\u0451\u0445 <b>TMU<\/b>: \u041e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u043f\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 <b>\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433<\/b> \u2014 \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0430 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, FBI \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c TMU \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f, \u043c\u0438\u043f\u044b \u0438.\u0442.\u043f).<\/li>\n<\/ul>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0433\u043e\u043d\u043a\u0430 \u0437\u0430 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u0445 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0443. \u0412\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0441 \u043e\u0431\u0449\u0438\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 16\u041c\u0431 \u0441\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043a\u0440\u0443\u0447\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0441 8\u041c\u0431: \u0438 \u0432\u0435\u0434\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043e\u0431\u044a\u0451\u043c VRAM \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0432\u0438\u0434\u0435\u043e\u044f\u0434\u0440\u0430 \u0442\u043e\u0433\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0440\u0435\u0436\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/17f\/f99\/e89\/17ff99e8976168ea790660605ba756b8.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/17f\/f99\/e89\/17ff99e8976168ea790660605ba756b8.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0414\u0440\u0443\u0433\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 API. \u0412 \u0442\u0435 \u0433\u043e\u0434\u044b \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b OpenGL, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043a \u043d\u0430\u043c \u0441 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439: SGI \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 API \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0432\u044b\u043a\u0438\u043d\u0443\u043b\u0438 \u043e\u0442\u0442\u0443\u0434\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0435 \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439. \u0412 1996 \u0433\u043e\u0434\u0443, DirectX 2.0 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Direct3D \u0442\u043e\u043b\u044c\u043a\u043e-\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c GAPI (\u0434\u0430\u0436\u0435 \u041a\u0430\u0440\u043c\u0430\u043a \u0435\u0433\u043e \u0440\u0443\u0433\u0430\u043b), \u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 3dfx Glide \u2014 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e API, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 OpenGL \u043f\u0443\u0442\u0451\u043c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0438\u043c\u0435\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u0444\u0438\u0448\u0435\u043a Glide \u0441\u0442\u0430\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/678914\/\">Windows<\/a>, \u043d\u043e \u0438 DOS, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u0438\u043c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043b\u044f \u0442\u0435\u0445 \u043b\u0435\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/abc\/92a\/b0f\/abc92ab0fbeed3da637d18f56a9ee846.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/abc\/92a\/b0f\/abc92ab0fbeed3da637d18f56a9ee846.png\"\/><\/div>\n<p>  \u0418\u0433\u0440\u044b \u0434\u043b\u044f 3dfx Voodoo \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u0435\u0431\u044f \u0436\u0434\u0430\u0442\u044c. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 Glide \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438 SDK, \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0438\u0433\u0440\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e GAPI: Tomb Raider, MechWarrior, Quake \u2014 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0433\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 (\u043a\u0430\u043a \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430\u044f \u043a\u0432\u0430\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 Glide -> \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e OpenGL, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0433\u0440\u044b), \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e. \u0412\u044b\u0445\u043e\u0434 \u0438\u0433\u0440 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 3dfx Glide \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b \u0443\u0441\u043f\u0435\u0445 \u043d\u043e\u0432\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0433\u0440\u044b \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0448\u0443\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u0435\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/c7a\/71b\/334\/c7a71b334c8a5ffa5d8de07ab1b2c5ac.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c7a\/71b\/334\/c7a71b334c8a5ffa5d8de07ab1b2c5ac.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 3dfx Voodoo, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 Glide \u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u0438\u0434\u0435\u043e-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435\u0439. \u0412 1998 \u0433\u043e\u0434\u0443, \u0441\u043f\u0443\u0441\u0442\u044f \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 Voodoo, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 Voodoo 2 \u0441 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 8\u041c\u0431 (\u043f\u043e 2\u041c\u0431 \u043d\u0430 TMU) \u0438\u043b\u0438 12\u041c\u0431 (\u043f\u043e 4\u041c\u0431 \u043d\u0430 TMU), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e \u0431\u044b\u043b\u0430 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0441\u043b\u0430 \u0432 \u0441\u0435\u0431\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li> 64-\u0431\u0438\u0442\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 TMU. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, 3dfx \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0448\u0438\u043d\u0435, \u0435\u0439 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433 \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0443\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0437\u0430 \u0442\u0430\u043a\u0442.<\/li>\n<li> \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Clip-Space \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u041f\u0440\u043e\u0448\u043b\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f \u0440\u0438\u0441\u043e\u0432\u0430\u043b \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u044d\u043a\u0440\u0430\u043d\u0430, \u0430 \u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0431\u044b\u043b\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430.<\/li>\n<li> \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SLI \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430\u0434 \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u043e\u0432 \u2014 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f \u043c\u043e\u0433 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u0442\u043d\u044b\u0435.<\/li>\n<\/ul>\n<p>  \u041d\u043e \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, 3dfx Voodoo \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0438\u0434\u0435\u043e-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 \u043d\u0435 \u043c\u043e\u0433\u043b\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0438\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u043b\u043e\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 2D-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 (\u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u043e\u0444\u0442\u0432\u0430\u0440\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 VESA-\u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 BitBLT, \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0438.\u0442.\u043f). \u041f\u043e \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0438\u0433\u0440\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Glide \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Alt-Tab (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0445\u0430\u043a\u043e\u043c) \u0438 \u043e\u043d\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0432 \u043e\u043a\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e \u0441\u0443\u0442\u0438, 3dfx Voodoo \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 2D-\u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 (\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0438 ATI Rage, \u0438 S3 ViRGE, \u0438 ISA-\u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0441 VGA) \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043b \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e RAMDAC \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0433\u0440\u044b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0438\u0433\u0440\u044b \u043d\u0430 Glide \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u043e\u043d!<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/3f8\/38a\/c5b\/3f838ac5b9fdceb9b36a9c289e5f93e2.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3f8\/38a\/c5b\/3f838ac5b9fdceb9b36a9c289e5f93e2.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435, 3dfx \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043c\u043e\u0434\u0443\u043b\u044c 2D \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0441\u0434\u0435\u043b\u0430\u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0433\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443. \u0412 1999 \u0433\u043e\u0434\u0443, \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043b\u0438\u0437\u0430 3dfx Voodoo 2, \u0432\u044b\u0448\u043b\u0430 Voodoo 3, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043b\u0430 FBI \u0438 \u0434\u0432\u0430 TMU \u0432 \u043e\u0434\u0438\u043d \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b. \u0412\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0441\u0442\u0430\u043b\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043e\u0431\u0437\u0430\u0432\u0435\u043b\u0430\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c AGP (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043e\u043a \u043a PCI \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/04d\/57d\/f2d\/04d57df2d9ef9e59348da92e5fa36701.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/04d\/57d\/f2d\/04d57df2d9ef9e59348da92e5fa36701.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u044b \u0443 3dfx Voodoo \u0431\u044b\u043b\u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u044b\u043c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c \u0431\u044b\u043b ATI Rage: \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u0438\u043c\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u043b\u0430 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u043e\u043c \u0432\u0438\u0434\u0435\u043e DVD-\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 (\u0432 \u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0432 480p \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441 \u0441\u043e\u0444\u0442\u0432\u0430\u0440\u043d\u044b\u043c \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u043e\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, 486 \u0438 Pentium 1 \u0441\u0440\u0430\u0437\u0443 \u0432 \u043f\u0440\u043e\u043b\u0435\u0442\u0435), \u0443\u043c\u0435\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 (\u0441\u0430\u043c \u0441\u0435\u0431\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0438\u0433\u0440\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c!) \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e D3D \u0438 OpenGL (\u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, OpenGL \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u043b\u043e\u0445\u043e \u0438 \u0442\u0430\u043a\u0430\u044f \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0430\u0441\u044c \u0434\u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0438 ATI \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 AMD), \u043d\u043e \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e GAPI ATI CIF (C Interface), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u043b\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0448\u0438\u0440\u043e\u043a\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0431\u044b\u043b\u043e\u2026 \u043d\u0443 \u043e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 DirectDraw, \u0430\u0442\u0442\u0430\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043a 3D-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u0435\u043b\u0430\u0442\u044c backface-\u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438 \u0442. \u043f.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/b05\/0f9\/e5a\/b050f9e5a1dad9d6c3aa2083242eb3c7.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b05\/0f9\/e5a\/b050f9e5a1dad9d6c3aa2083242eb3c7.jpg\" data-blurred=\"true\"\/><\/div>\n<p>\\<\/p>\n<p>  \u041d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438 \u0437\u0430 Riva TNT: \u043e\u0447\u0435\u043d\u044c \u0448\u0443\u0441\u0442\u0440\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043b\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u043b\u0430 \u0422\u0412-\u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 OpenGL. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, Riva TNT \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u043b\u0430 \u043f\u0440\u0438 24-\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u0446\u0432\u0435\u0442\u0435: 3dfx Voodoo \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u0432\u0441\u0451 \u0432 16-\u0431\u0438\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0412\u043e\u043d, \u043b\u044e\u0434\u0438 \u043d\u0430 Riva TNT \u043a\u0430\u043a-\u0442\u043e \u0434\u0430\u0436\u0435 \u0432 \u041c\u043e\u0440\u0440\u043e\u0432\u0438\u043d\u0434 \u0438\u0433\u0440\u0430\u043b\u0438!<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/6f8\/9c9\/9d4\/6f89c99d4b55c57bf285b913bc44377a.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6f8\/9c9\/9d4\/6f89c99d4b55c57bf285b913bc44377a.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0431\u044b\u043b\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0432 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0440\u044b\u043d\u043a\u0430. 3dfx \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 OEM-\u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u0432 \u041f\u041a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u0438\u0435. \u0422\u0443\u0442 \u0443\u0436 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0435\u0435: \u0438 PowerVR \u0441 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439, \u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/743934\/\">Intel<\/a> \u0441 i740 (\u044d\u0434\u0430\u043a\u0438\u0439 \u043f\u0440\u0435\u0434\u043e\u043a GMA), \u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043e\u0442 SiS, \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 S3 Graphics!<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/a45\/e3a\/894\/a45e3a89445581000cbe081988cc0ad5.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a45\/e3a\/894\/a45e3a89445581000cbe081988cc0ad5.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0412 \u043f\u043e\u0441\u0442-\u0441\u043e\u0432\u0435\u0442\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, 3dfx Voodoo \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0438 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043c\u0435\u0447\u0442\u043e\u0439. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0431\u043b\u0438\u0436\u0435 \u043a 1999-2001 \u0433\u043e\u0434\u0430\u043c, \u043a\u043e\u0433\u0434\u0430 3dfx \u0441 Voodoo 4 \u0438 Voodoo 5 \u0431\u044b\u043b\u0430 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u0431\u0430\u043d\u043a\u0440\u043e\u0442\u0441\u0442\u0432\u0430 \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f T&amp;L \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432, \u0430 NV \u0438 AMD \u0432\u0437\u044f\u043b\u0438 \u0432\u0435\u0440\u0445, \u0442\u043e \u0438 Voodoo \u043d\u0430\u0447\u0430\u043b\u0438 \u0441\u0442\u043e\u0438\u0442\u044c \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0435\u043d\u0435\u0433 \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043a\u0435: \u0442\u0443\u0442 \u0443\u0436\u0435 \u0438 GeForce 3 \u0441 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u043f\u043e\u0434\u043e\u0441\u043f\u0435\u0432\u0430\u043b, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0434\u043d\u044b\u0435 \u0433\u0435\u0439\u043c\u0435\u0440\u044b \u0432\u0441\u0435 \u0435\u0449\u0435 \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 Quake 3 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0433\u0440\u044b \u0441 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u043c FPS!<\/p>\n<p>  \u041d\u0430\u0448 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0433\u0435\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 3 \u0433\u043e\u0434\u0430 \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u0440\u0448\u0435 \u2014 \u043c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 3dfx Voodoo 3 \u043d\u0430 8\u041c\u0431 \u0432 AGP-\u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0440\u0435\u0434\u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 3dfx \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u00ab\u043d\u0435 \u0442\u0440\u0443\u0448\u043d\u043e\u0439\u00bb \u0438 \u043f\u043e\u0441\u0435\u043c\u0443, \u0441\u0430\u043c\u043e\u0439 \u0434\u0435\u0448\u0435\u0432\u043e\u0439. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u0430 Voodoo 3 \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0438\u0437\u043a\u0430\u044f \u0446\u0435\u043d\u0430 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435\u0439 \u2014 \u044f \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u043b 3.400 \u0440\u0443\u0431\u043b\u0435\u0439. 1 \u0438 2 Voodoo \u0441\u0442\u043e\u044f\u0442 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043e\u0442 4-5 \u0442\u044b\u0441\u044f\u0447 \u0440\u0443\u0431\u043b\u0435\u0439, \u0430 \u0446\u0435\u043d\u044b Voodoo 4 \u0443\u043b\u0435\u0442\u0430\u044e\u0442 \u0432 \u043a\u043e\u0441\u043c\u043e\u0441. \u0422\u0430\u043a \u0447\u0442\u043e \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u043d\u044c\u043a\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \ud83d\ude42<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/6eb\/0db\/89d\/6eb0db89d91bb61d9abf68545a8ef393.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6eb\/0db\/89d\/6eb0db89d91bb61d9abf68545a8ef393.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041f\u0440\u0438\u0434\u044f \u0434\u043e\u043c\u043e\u0439 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0432 \u043f\u043e\u0441\u044b\u043b\u043a\u0443, \u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b <a href=\"http:\/\/falconfly.3dfx.pl\/reference.htm\">Glide SDK<\/a> \u0438 \u043f\u0440\u0438\u043d\u044f\u043b\u0441\u044f \u0438\u0437\u0443\u0447\u0430\u0442\u044c Programmers Manual, \u0434\u0430\u0431\u044b \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435\u2026<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb<\/font><\/h2>\n<p>  \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 3dfx Voodoo \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0434\u0430\u0431\u044b \u0431\u044b\u043b\u043e \u043e\u0431\u0449\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e, \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b GAPI \u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c FBI, TMU \u0438 RAMDAC \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e33\/2a2\/24b\/e332a224bde3c640e7cc374c36df9612.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e33\/2a2\/24b\/e332a224bde3c640e7cc374c36df9612.png\"\/><\/div>\n<p>  <b>FBI<\/b> \u2014 FrameBuffer Interface. \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u044d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f: \u0432 \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 PCI\/AGP, \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432, \u043a\u043b\u0438\u043f\u043f\u0438\u043d\u0433, \u0440\u0430\u0441\u0447\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043a \u0437\u0430\u043b\u0438\u0432\u043a\u0435 \u043d\u0430 TMU, \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f, \u0430\u043b\u044c\u0444\u0430-\u0431\u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 Z-\u0431\u0443\u0444\u0435\u0440\u043e\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u043e\u0439\u043d\u0430\u044f\/\u0442\u0440\u043e\u0439\u043d\u0430\u044f \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u043e\u043c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/295\/111\/7ba\/2951117bae2568e89f0a7e6980b36658.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/295\/111\/7ba\/2951117bae2568e89f0a7e6980b36658.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0412 Voodoo 3, \u043f\u043e\u0434 \u0440\u0430\u0434\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u0433\u0434\u0435 FBI \u0438 TMU \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0447\u0438\u043f\u0435.<\/p>\n<p>  FBI \u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u2014 SST-1 (3dfx Voodoo 1), SST-96 (3dfx Voodoo 2) \u0438.\u0442. \u043f. \u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0443 \u043e\u0434\u043d\u043e\u0433\u043e FBI \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0432\u0438\u0437\u0438\u0439, \u043d\u043e \u0432 \u0447\u0435\u043c \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u2014 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/947\/fb1\/af4\/947fb1af46adc3d9138bf5632c3e0907.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/947\/fb1\/af4\/947fb1af46adc3d9138bf5632c3e0907.png\"\/><\/div>\n<p>  \u0414\u043b\u044f \u043d\u0443\u0436\u0434 FBI \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e \u0441\u0442\u0440\u043e\u0433\u043e 2\u041c\u0431 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f 3 \u0431\u0443\u0444\u0435\u0440\u043e\u0432, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f Front \u0438 Back \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f aux-\u0431\u0443\u0444\u0435\u0440\u043e\u043c \u0441 16-\u0431\u0438\u0442\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0446\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u043b\u044c\u0444\u0430-\u0431\u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430, \u043b\u0438\u0431\u043e \u043a\u0430\u043a Z-\u0431\u0443\u0444\u0435\u0440. \u0412\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0432\u0441\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0432 16-\u0431\u0438\u0442\u043d\u043e\u043c RGB565 \u2014 \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438 \u0441\u0442\u0430\u043b\u043e \u00ab\u0432\u0438\u0437\u0438\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u043e\u0439\u00bb \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 3dfx. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e lfb-\u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0430\u043d\u0430\u043b\u043e\u0433 \u0432 OpenGL \u2014 glCopyPixels\/glReadPixels).<\/p>\n<pre><code class=\"cpp\">#define GR_COLORFORMAT_ARGB     0x0 #define GR_COLORFORMAT_ABGR     0x1  #define GR_COLORFORMAT_RGBA     0x2 #define GR_COLORFORMAT_BGRA     0x3<\/code><\/pre>\n<p>  \u0414\u043b\u044f FBI \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 2\u041c\u0431 \u0438\u043b\u0438 4\u041c\u0431. \u041f\u0440\u0438 2\u041c\u0431, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 Aux-\u0431\u0443\u0444\u0435\u0440\u043e\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e 640&#215;480, \u0431\u0435\u0437 Aux-\u0431\u0443\u0444\u0435\u0440\u0430 \u2014 800&#215;600, \u043f\u0440\u0438 4\u041c\u0431 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 800&#215;600, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 Aux-\u0431\u0443\u0444\u0435\u0440\u043e\u043c.<\/p>\n<p>  \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u0430 FBI \u0432 SST-1 \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445. \u0412 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u0442. \u043d. Clip-Space \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (NDC) \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 -1..1. \u0422\u043e \u0435\u0441\u0442\u044c, \u0442\u043e\u0447\u043a\u0430 0 \u2014 \u0446\u0435\u043d\u0442\u0440 \u044d\u043a\u0440\u0430\u043d\u0430, -1 \u2014 \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430, 1 \u2014 \u043f\u0440\u0430\u0432\u0430\u044f. \u0412 SST-1 \u0436\u0435 \u0432\u0441\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\"> Vertex v, v2, v3;  v.Position = Vector3(0, 0, 0); v2.Position = Vector3(15, 0, 0); v3.Position = Vector3(15, 15, 0);  grDrawTriangle(&amp;v, &amp;v2, &amp;v3); <\/code><\/pre>\n<p>  \u0412 3dfx Voodoo 2 \u0432\u0432\u0435\u043b\u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u0432 Clip-Space, \u043f\u043e\u044f\u0441\u043d\u0438\u0432 \u0447\u0442\u043e \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442. \u041f\u043e \u0438\u0442\u043e\u0433\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0445\u043e\u0442\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0438\u0433\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 3dfx Voodoo 1, \u0438\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u00ab\u0441\u0442\u0430\u0440\u044b\u0439\u00bb \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c Clip-Space \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 \u043e\u043a\u043e\u043d\u043d\u044b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/4e1\/4e2\/0de\/4e14e20de8b47bcf1837c67fb6ef27ad.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4e1\/4e2\/0de\/4e14e20de8b47bcf1837c67fb6ef27ad.png\"\/><\/div>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u044f\u043b\u0430\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c TMU \u0438 FBI. \u041d\u043e \u0433\u0434\u0435-\u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0430\u0441\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f? \u041e\u043f\u044b\u0442\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043c\u043d\u0438\u0442 \u043f\u0440\u043e \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a glBegin\/glEnd. \u0412 \u0442\u0435 \u0433\u043e\u0434\u044b, \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u043e\u0439, \u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u2014 \u043f\u0440\u0438\u0447\u0451\u043c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0435 \u0431\u044b\u043b \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0446\u0432\u0435\u0442 \u0438 UV \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0447\u0442\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0438\u0431\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d, \u0447\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Glide.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d7c\/dc3\/895\/d7cdc38959bffede5cd697e04041851d.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d7c\/dc3\/895\/d7cdc38959bffede5cd697e04041851d.png\"\/><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043f\u0440\u043e\u0441\u0442\u043e, \u0442\u043e 3dfx Voodoo \u0431\u044b\u043b \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0447\u0435\u043c\u0443 \u0443\u043c\u0435\u043b Backface-\u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0431\u044b\u043b\u043e Near-clipping&#8217;\u0430 \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432, \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0443\u0445\u043e\u0434\u044f\u0442 \u0437\u0430 \u043a\u0430\u043c\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0443\u0439\u0434\u0435\u0442 \u0437\u0430 \u043a\u0430\u043c\u0435\u0440\u0443, \u043c\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0430 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043e\u0442\u0441\u0435\u043a\u0430\u044f \u0446\u0435\u043b\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u2014 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u043a\u0430\u043c\u0435\u0440\u0435. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0437\u043d\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0439, \u043a\u0430\u043a \u0441 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 GAPI, \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>  <b>TMU<\/b> \u2014 Texture Mapping Unit. \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435, \u044d\u0442\u043e\u0442 \u0447\u0438\u043f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u0437\u0430 \u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433 \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u0430\u043d\u043a\u0430\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e FBI.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/6eb\/0db\/89d\/6eb0db89d91bb61d9abf68545a8ef393.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6eb\/0db\/89d\/6eb0db89d91bb61d9abf68545a8ef393.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  EDO-\u0447\u0438\u043f\u044b EliteMT<\/p>\n<p>  \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e TMU \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u2014 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u0445 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043c\u043e\u0433 \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e TMU, \u0434\u0430\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0430 \u0446\u0432\u0435\u0442, \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u043a\u0430\u043a \u043c\u0430\u0441\u043a\u0443, \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0430\u043b\u044c\u0444\u0430\u043a\u0430\u043d\u0430\u043b\u043e\u043c \u0438 \u0441\u044d\u043c\u043f\u043b\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434! \u0412 \u0442\u0435 \u0433\u043e\u0434\u044b \u0441\u0430\u043c\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u043c\u0438 \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434 (\u0442.\u0435 \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 DrawTriangle) \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0440\u044b\u0432\u043e\u043c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0432\u0443\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u043d \u0432 \u043a\u0432\u0435\u0439\u043a\u0435 (\u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0435\u043d\u044b, \u0432\u0442\u043e\u0440\u043e\u0439, \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u0431\u043b\u0435\u043d\u0434\u0438\u043d\u0433\u043e\u043c, \u0434\u043b\u044f \u043b\u0430\u0439\u0442\u043c\u0430\u043f\u044b) \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/b27\/8d1\/e9a\/b278d1e9ae9864f1868b07cd7c666638.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b27\/8d1\/e9a\/b278d1e9ae9864f1868b07cd7c666638.png\"\/><\/div>\n<p>  \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u2014 256&#215;256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d \u0438 \u043c\u0438\u043f\u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430 (\u0442\u0435\u0445\u043d\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u0440\u044f\u0431\u044c \u043d\u0430 \u0434\u0430\u043b\u044c\u043d\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f). \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Non Power Of Two (\u043d\u0435 \u043a\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438) \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u043e\u0431\u0449\u0435. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0431\u0438\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438 Point-\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f. \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435, 3dfx \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0447\u0435\u043c 256\u0445256, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u0430\u044f Riva TNT \u0443\u0436\u0435 \u0443\u043c\u0435\u043b\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b 1024\u04451024.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/e99\/100\/3f2\/e991003f29334e61cefb7f21c8929df8.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e99\/100\/3f2\/e991003f29334e61cefb7f21c8929df8.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041f\u0430\u043c\u044f\u0442\u044c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e TMU \u0431\u044b\u043b\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439, \u0430 Glide \u043a\u0430\u043a GAPI \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0430\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 TMU \u043c\u043e\u0436\u0435\u0442 \u0441\u044d\u043c\u043f\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/>  \u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0438\u043f\u043c\u0430\u043f, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u0430\u043c \u0441\u0435\u0442 \u043c\u0438\u043f\u043e\u0432 \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u043c \u0438 \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445 \u043f\u0430\u043c\u044f\u0442\u0438 \u00ab\u0432\u0440\u0430\u0437\u0431\u0440\u043e\u0441\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0447\u0430\u0441\u0442\u043e\u0435 \u044f\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u043e\u043c. <\/p>\n<p>  <b>DAC<\/b> \u2014 RAMDAC \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ICS. \u0414\u0430\u043d\u043d\u044b\u0439 \u0447\u0438\u043f \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0442.\u0435 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0435 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/756430\/\">VGA-\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b<\/a> \u0441 \u042d\u041b\u0422, \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u044b\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c\u0438: \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0431\u044b\u043b\u043e \u0442\u0440\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u2014 \u043a\u0440\u0430\u0441\u043d\u044b\u0439, \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0438 \u0441\u0438\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043d\u0435 \u0438\u043c\u0435\u043b\u0438 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0426\u0410\u041f&#8217;\u0430, \u0432 90-\u0445 \u0438 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 RAMDAC&#8217;\u0438 \u0434\u043b\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0422\u0412 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab\u0442\u044e\u043b\u044c\u043f\u0430\u043d\u043e\u0432\u00bb \u043c\u043e\u0433 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0438\u043c RAMDAC&#8217;\u043e\u043c \u2014 \u0443\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0422\u0412.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/cc1\/2cd\/90a\/cc12cd90a786ba0c11f3527977bcccfc.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cc1\/2cd\/90a\/cc12cd90a786ba0c11f3527977bcccfc.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0421\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u042d\u041b\u0422-\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u00ab\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043a\u043b\u043e\u043a\u043e\u0432\u00bb \u2014 \u0447\u0430\u0441\u0442\u043e\u0442 \u0441\u0442\u0440\u043e\u0431\u043e\u0432 HSYNC \u0438 VSYNC, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u044f. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 RAMDAC, FBI \u043c\u043e\u0433 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0433\u0430\u043c\u043c\u044b. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e RAMDAC \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u042d\u041b\u0422-\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0441 \u043f\u043b\u043e\u0445\u0438\u043c RAMDAC \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043a\u0430\u043a-\u0431\u044b \u00ab\u043f\u043b\u044b\u043b\u0430\u00bb.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0414\u0430\u0431\u044b \u043f\u0438\u043b\u0438\u0442\u044c \u0438\u0433\u0440\u044b \u043f\u043e\u0434 3dfx Voodoo, \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u041f\u041a \u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/683262\/\">WinXP<\/a> \u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u0443\u0440\u043e\u0432\u043d\u044f VC98. \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 Glide, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0437\u043e\u0432\u044b \u0438\u0433\u0440 \u043a GAPI \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0438\u0445 \u0432 \u0432\u044b\u0437\u043e\u0432\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 D3D \u0438\u043b\u0438 Vulkan, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0438\u0433\u0440\u044b \u0432 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d6c\/2b2\/841\/d6c2b284131c42a1b625ccfc2aafc019.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d6c\/2b2\/841\/d6c2b284131c42a1b625ccfc2aafc019.png\"\/><\/div>\n<p>  Glide \u0432 \u0435\u0433\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 Windows XP. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u044d\u0442\u043e VC2015 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Windows XP. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u00ab\u0442\u0440\u0443\u0448\u043d\u043e\u0441\u0442\u0438\u00bb \u0438 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043e\u0444\u0442 \u043d\u0430 Win98\/Win95 \u2014 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Visual Studio 2005. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043b\u044e\u0448\u0435\u043a \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 IDE: Visual Studio \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/2e7\/800\/006\/2e78000063831a9d1e42bb86f9360fd2.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2e7\/800\/006\/2e78000063831a9d1e42bb86f9360fd2.png\"\/><\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u0438\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043b\u0438\u043d\u043a\u0443\u044e\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/80a\/82b\/2ee\/80a82b2ee3ab165e522ac755f0f04ebb.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/80a\/82b\/2ee\/80a82b2ee3ab165e522ac755f0f04ebb.png\"\/><\/div>\n<p>  \u041d\u0443 \u0447\u0442\u043e \u0436, \u043d\u0430 \u044d\u0442\u043e\u043c \u0438\u043d\u0442\u0440\u043e-\u0447\u0430\u0441\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430. \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435!<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/font><\/h2>\n<p>  \u041a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e Glide \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043e\u043a \u043a OpenGL, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u043c \u043b\u044e\u0434\u044f\u043c, \u043a\u0442\u043e \u0438\u043c\u0435\u043b \u043e\u043f\u044b\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0442\u0435\u0439\u0442\u043e\u0432 \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e Glide \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u043d\u043e\u0433\u043e GAPI, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0438\u0441\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u044e\u043d\u0438\u0442\u0430\u043c\u0438, \u043c\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043c \u0437\u0434\u0435\u0441\u044c utility-\u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0432 Glide 2.x \u043e\u043d\u0438 \u0431\u044b\u043b\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435, \u043d\u043e \u0432 3.x gu \u0443\u0431\u0440\u0430\u043b\u0438), \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u2014 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0449\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441 \u043d\u0443\u043b\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0432\u0441\u0451 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c, \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u0435 \u043c\u0430\u043d\u0435\u0440\u0435!<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a85\/13a\/1c6\/a8513a1c62a168ed6935991298113da6.gif\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a85\/13a\/1c6\/a8513a1c62a168ed6935991298113da6.gif\"\/><\/div>\n<p>  \u041d\u0430\u0448\u0430 \u0438\u0433\u0440\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 Glide, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0421\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0412\u0421\u0415 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u0430 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u043d\u0435\u0442. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430: \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 640&#215;480 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RGBA \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f 60\u0413\u0446, \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0434\u0438\u043d aux-\u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f Z-\u0431\u0443\u0444\u0435\u0440\u0430.<\/p>\n<pre><code class=\"cpp\">         int numBoards = 0; grGet(GR_NUM_BOARDS, sizeof(numBoards), (FxI32*)&amp;numBoards);  if (numBoards &lt; 1) { printf(\"No Glide GPU is present\\n\");                 return -1; }  printf(\"Initializing glide renderer\\n\"); grGlideInit(); grSstSelect(0);  gContext = grSstWinOpen(0, GR_RESOLUTION_640x480, GR_REFRESH_60Hz, GR_COLORFORMAT_RGBA, GR_ORIGIN_UPPER_LEFT, 2, 1); \/\/ RGBA, double buffered, 1 depth-buffer <\/code><\/pre>\n<p>  \u0412\u0441\u0451! \u041d\u0438 \u043e\u043a\u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043d\u0438 \u043b\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0447\u0435\u0440\u0435\u0437 WndProc. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u2014 \u0438 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c <b>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/b> \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0435\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0435\u0439\u0442\u043e\u0432: \u0446\u0432\u0435\u0442 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u0448\u0438\u0440\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0439, Z-\u0431\u0443\u0444\u0435\u0440 \u0438 Color-\u0431\u0443\u0444\u0435\u0440.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0430 \u0438\u0433\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f\u0445 3dfx, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Depth-\u0431\u0443\u0444\u0435\u0440 \u0438 Cull-mode. Cull-mode, \u0438\u043b\u0438 Backface culling \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u0435\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u043a \u043a\u0430\u043c\u0435\u0440\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u0437\u0430\u043b\u0435\u0442\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0439!<\/p>\n<pre><code class=\"cpp\">         grCoordinateSpace(GR_WINDOW_COORDS); grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER); grDepthBufferFunction(GR_CMP_GREATER); grDepthMask(FXTRUE);         grCullMode(GR_CULL_POSITIVE); <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Depth-\u0431\u0443\u0444\u0435\u0440?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0411\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u2014 \u044d\u0442\u043e \u0434\u0435\u0448\u0435\u0432\u0430\u044f screen-space \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u043e\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0431\u0435\u0437 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u043f\u043e \u043e\u0442\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u043e\u0442 \u043a\u0430\u043c\u0435\u0440\u044b. \u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 <b>Z<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u0442 \u043a\u0430\u043c\u0435\u0440\u044b. \u041f\u0440\u0438 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430, Z-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0445-\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043a\u0430\u043a \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 Z-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432, \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 Z-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0440\u0438\u0441\u0443\u0435\u043c\u044b\u0445 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432 \u0441 Z-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0438 \u0435\u0441\u043b\u0438 Z-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 (\u0442.\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c), \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0438\u0441\u0443\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044c.  <\/div>\n<\/p><\/div>\n<p>  \u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 GAPI \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f LEQUAL \u0438 LESS, \u043e\u0434\u043d\u0430\u043a\u043e \u0441 \u0431\u0443\u0444\u0435\u0440\u043e\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0432 Glide \u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438: \u0432 \u0441\u0430\u043c\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e 16-\u0431\u0438\u0442\u043d\u043e\u0433\u043e short (\u0442.\u0435 \u0434\u043e 65535 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439), \u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e (1 \/ z). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0447\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u043a\u0430\u043c\u0435\u0440\u044b, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0435\u0433\u043e Z-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0430 \u043f\u043e\u0441\u0435\u043c\u0443 \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f GREATER. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435 \u2014 \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u0439\u0434\u0435\u043c \u0434\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u044b.<\/p>\n<pre><code class=\"cpp\"> #define GR_VERTEX_X_OFFSET              0 #define GR_VERTEX_Y_OFFSET              1 #define GR_VERTEX_OOZ_OFFSET            2 #define GR_VERTEX_OOW_OFFSET            3 #define GR_VERTEX_R_OFFSET              4 #define GR_VERTEX_G_OFFSET              5 #define GR_VERTEX_B_OFFSET              6 #define GR_VERTEX_A_OFFSET              7 #define GR_VERTEX_Z_OFFSET              8 #define GR_VERTEX_SOW_TMU0_OFFSET       9 #define GR_VERTEX_TOW_TMU0_OFFSET       10 #define GR_VERTEX_OOW_TMU0_OFFSET       11 #define GR_VERTEX_SOW_TMU1_OFFSET       12 #define GR_VERTEX_TOW_TMU1_OFFSET       13 #define GR_VERTEX_OOW_TMU1_OFFSET       14 #if (GLIDE_NUM_TMU > 2) #define GR_VERTEX_SOW_TMU2_OFFSET       15 #define GR_VERTEX_TOW_TMU2_OFFSET       16 #define GR_VERTEX_OOW_TMU2_OFFSET       17 #endif  typedef struct { float  U;                   \/* s texture ordinate (s over w) *\/ float  V;                   \/* t texture ordinate (t over w) *\/ }  GrTmuVertex;  typedef struct { float X, Y;         \/* X and Y in screen space *\/ float Z;          \/* 65535\/Z (used for Z-buffering) *\/ float Q;          \/* 1\/W (used for W-buffering, texturing) *\/ float r, g, b, a;   \/* R, G, B, A [0..255.0] *\/ GrTmuVertex  tmuvtx[GLIDE_NUM_TMU]; } Vertex;                 grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_RGB, GR_VERTEX_R_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_A, GR_VERTEX_A_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET &lt;&lt; 2, GR_PARAM_ENABLE); <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0440\u0430\u043d\u0435\u0435, 3dfx Voodoo \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u043f\u0440\u043e 3D \u043e\u043d \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. X \u0438 Y \u2014 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, Z-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, Q \u2014 \u0442. \u043d\/ W-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e-\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043f\u0440\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0436\u0435). R, G, B, A \u2014 \u0446\u0432\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u044b. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440\u0430 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0443 \u043b\u044e\u0431\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430, \u0430 TmuVertex \u2014 UV-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u044b, \u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u044b \u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u0441 \u0437\u0430\u0434\u043d\u0438\u043c, \u0434\u0430\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u0448\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n<p>  \u042d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Glide \u0434\u043b\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u0438\u043d\u0438\u0439 \u044d\u043a\u0440\u0430\u043d. \u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0438\u0439 \u044d\u043a\u0440\u0430\u043d\/ \ud83d\ude42<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/a89\/1b1\/4cc\/a891b14cc7cbf77446e50032f5e60166.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a89\/1b1\/4cc\/a891b14cc7cbf77446e50032f5e60166.png\"\/><\/div>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0420\u0438\u0441\u0443\u0435\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b<\/font><\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443 \u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432! \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u0440\u0430\u043d\u043e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u043e\u0442\u044f-\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.<br \/>  \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c (\u0442. \u0435. \u0437\u0430\u043b\u0438\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c) \u0431\u044d\u043a\u0431\u0443\u0444\u0435\u0440 \u0438 Depth-\u0431\u0443\u0444\u0435\u0440. \u0411\u044d\u043a\u0431\u0443\u0444\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0441\u0446\u0435\u043d\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u2014 \u0442. \u0435. \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043d\u0435 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438. \u041d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u0445 \u044d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u0445 90\u0445 \u043e\u0442 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0432\u0435\u0440\u0445\u0435\u0434. \u0415\u0441\u043b\u0438 \u0431\u044d\u043a\u0431\u0443\u0444\u0435\u0440 \u043d\u0435 \u0447\u0438\u0441\u0442\u0438\u0442\u044c, \u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0442.\u043d \u00ab\u044d\u0444\u0444\u0435\u043a\u0442 \u0437\u0435\u0440\u043a\u0430\u043b\u00bb \u2014 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u043e\u0432\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0442\u0430\u0440\u043e\u0439, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u043d\u0430\u0445\u043b\u0435\u0441\u0442 \u0441 \u043d\u043e\u0432\u044b\u043c:<\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6580fc64ff7a7276961516ed\" data-style=\"\" id=\"6580fc64ff7a7276961516ed\" width=\"\"><\/div>\n<\/div>\n<pre><code class=\"cpp\"> \/\/ Buffer clear operations aren't free on Voodoo. When scene will have skybox, comment this line grBufferClear(RGB(0, 128, 0), 0, 0); <\/code><\/pre>\n<p>  \u0422\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: grDrawTriangle, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u0435\u0440\u0448\u0438\u043d\u044b. \u0424\u043e\u0440\u043c\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043c\u044b \u0443\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:<\/p>\n<pre><code class=\"cpp\"> Vertex v0; v0.X = 0; v0.Y = 0;  Vertex v1; v1.X = 15; v1.Y = 0;  Vertex v2; v1.X = 15; v1.Y = 15;  grDrawTriangle(&amp;v0, &amp;v1, &amp;v2); <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/a89\/1b1\/4cc\/a891b14cc7cbf77446e50032f5e60166.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a89\/1b1\/4cc\/a891b14cc7cbf77446e50032f5e60166.png\"\/><\/div>\n<p>  \u041e\u0442\u043a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043e\u043a\u0440\u0430\u0441\u043a\u0430 \u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435, \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b? \u041c\u043e\u0436\u0435\u0442, \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043a\u0430\u043a \u0432 Unity\/UE? \u0414\u043e\u0439\u0434\u0435\u043c \u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u043a\u043e\u0440\u043e!<\/p>\n<p>  \u0423\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0446\u0435\u043d\u044b, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u044d\u043a\u0431\u0443\u0444\u0435\u0440 \u0438 \u0444\u0440\u043e\u043d\u0442\u0431\u0443\u0444\u0435\u0440 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u2014 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0438\u0437\u0431\u0435\u0436\u0438\u043c \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430.<\/p>\n<pre><code class=\"cpp\">grBufferSwap(1);<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 3dfx Voodoo! \u0423\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e, \u043d\u043e\u2026 \u0433\u0434\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u043d\u043e\u0435 3D!? \u041e\u0431 \u044d\u0442\u043e\u043c \u2014 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435!<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/font><\/h2>\n<p>  \u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c, \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0431\u0443\u0434\u0435\u0442 \u0437\u0432\u0443\u0447\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u043c\u0430\u0442\u0430\u043d\u0443 \u2014 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435 \ud83d\ude42 \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0432\u0430\u0442\u043e \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u043a\u043e\u0434\u0443, \u043f\u043e\u043d\u044f\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435. \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u0432\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446 \u0438 \u0441\u0430\u043c\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (glm \u0438 DXMath, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440).<\/p>\n<p>  \u0412\u0430\u0436\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0432 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u2014 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b (\u0432 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c 4\u04454), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0435\u0439 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0438 \u043a\u043e\u0440\u0430\u0431\u043b\u0438\u043a\u0430 \u0438\u043b\u0438 \u0433\u0435\u0440\u043e\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u043c\u043d\u043e\u0436\u0438\u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\"> Matrix.RotationY(Math.DegToRad(90)) * Matrix.Translation(0, 0, 10); <\/code><\/pre>\n<p>  \u041c\u044b \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u043d\u0430 10 \u044e\u043d\u0438\u0442\u043e\u0432 \u0438 \u043f\u043e\u0432\u0435\u0440\u043d\u0435\u043c \u0435\u0433\u043e \u043d\u0430 90 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u043f\u043e \u043e\u0441\u0438 Y. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Transform \u0432 Unity \u0441\u0442\u0440\u043e\u0438\u0442 \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0437\u0430\u0434\u0430\u0435\u0442\u0435 \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435\/\u043a\u043e\u0434\u0435. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/8c7\/946\/98e\/8c794698e548abe4b1328842ce5b49a8.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8c7\/946\/98e\/8c794698e548abe4b1328842ce5b49a8.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0412 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043c\u0438\u0440\u0435 \u0438 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u0433\u043b\u0430\u0437 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f:<\/p>\n<ul>\n<li> \u041c\u0438\u0440\u043e\u0432\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430\/\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 (OpenGL) \u2014 \u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u0435\u043c\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0438\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445. \u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043a \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435.<\/li>\n<li> \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0432\u0438\u0434\u0430 \u2014 \u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043c\u0438\u0440\u0435. \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u043c\u0438\u0440\u0435 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u2014 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0433\u043b\u0430\u0437\u0430\u0445 \u0438\u0433\u0440\u043e\u043a\u0430 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a-\u0431\u044b \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0432\u0441\u0435 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c (-x, -y, -z). \u0423\u043c\u043d\u043e\u0436\u0438\u0432 \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432\u0438\u0434\u0430 \u2014 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 <b>\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f<\/b>.<\/li>\n<li> \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u2014 \u0421\u0430\u043c\u0430\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0432 Clip-Space (\u0442.\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043e\u043a\u043d\u0430) \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c W-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438!<\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 \u0442\u0440\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u2014 World\/Model, View, Projection. \u0417\u0430\u0442\u0435\u043c, \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b (\u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 3D-\u043c\u043e\u0434\u0435\u043b\u0438).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d8d\/856\/986\/d8d856986bf8f0e3ee0ad50f8f63419b.svg\" alt=\"$v * (model * view * projection)$\" data-tex=\"display\"\/><\/p>\n<p>  \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0442\u043e\u0439-\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438. 4\u0445-\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043c\u0430\u0442\u0440\u0438\u0446\u043e\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u043e \u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0432 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443 \u2014 \u044d\u0442\u043e \u0437\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u0440\u0430\u0431\u043e\u0442\u044b 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 3dfx Voodoo, \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0432\u0441\u0451 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0435\u0439\u0448\u0430\u044f, \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0438 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u00ab\u043c\u0430\u0442\u043b\u0438\u0431\u0430\u00bb. \u041d\u0443 \u0430 \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438, \u0443 \u043d\u0430\u0441 \u0442\u0430\u0440\u0433\u0435\u0442 \u2014 Pentium MMX, \u0442\u0430\u043c \u0434\u0430\u0436\u0435 SIMD \u043d\u0435 \u0431\u044b\u043b\u043e. \ud83d\ude42 \u0417\u0430\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">  #define MATRIX_SET(matrix, row, column, val) matrix[row * 4 + column] = val #define MATRIX_GET(matrix, row, column) matrix[row * 4 + column]  void MatrixIdentity(float* matrix) { memset(matrix, 0, sizeof(float) * 16); MATRIX_SET(matrix, 0, 0, 1); MATRIX_SET(matrix, 1, 1, 1); MATRIX_SET(matrix, 2, 2, 1); MATRIX_SET(matrix, 3, 3, 1); }  void MatrixTranslation(float* matrix, float x, float y, float z) { float m2[16]; MatrixIdentity((float*)&amp;m2);  MATRIX_SET(m2, 3, 0, x); MATRIX_SET(m2, 3, 1, y); MATRIX_SET(m2, 3, 2, z);  MatrixMultiply(matrix, (float*)&amp;m2); }  void MatrixRotationX(float* matrix, float rot) { float m2[16]; MatrixIdentity((float*)&amp;m2);  \/\/ TODO: Optimize it MATRIX_SET(m2, 1, 1, (float)cos(rot)); MATRIX_SET(m2, 1, 2, (float)sin(rot)); MATRIX_SET(m2, 2, 1, -(float)sin(rot)); MATRIX_SET(m2, 2, 2, (float)cos(rot));  MatrixMultiply(matrix, (float*)&amp;m2); }  void MatrixRotationY(float* matrix, float rot) { float m2[16]; MatrixIdentity((float*)&amp;m2);  \/\/ TODO: Optimize it MATRIX_SET(m2, 0, 0, (float)cos(rot)); MATRIX_SET(m2, 0, 2, -(float)sin(rot)); MATRIX_SET(m2, 2, 0, (float)sin(rot)); MATRIX_SET(m2, 2, 2, (float)cos(rot));  MatrixMultiply(matrix, (float*)&amp;m2); }  void MatrixRotationZ(float* matrix, float rot) { float m2[16]; MatrixIdentity((float*)&amp;m2);  \/\/ TODO: Optimize it MATRIX_SET(m2, 1, 1, (float)cos(rot)); MATRIX_SET(m2, 1, 2, (float)sin(rot)); MATRIX_SET(m2, 2, 1, -(float)sin(rot)); MATRIX_SET(m2, 2, 2, (float)cos(rot));  MatrixMultiply(matrix, (float*)&amp;m2); }  void MatrixRotationAngle(float* matrix, float x, float y, float z) { MatrixRotationY(matrix, y * DEGTORAD); }  void MatrixPrint(float* matrix) { for (int i = 0; i &lt; 4; i++) { for (int j = 0; j &lt; 4; j++) printf(\"%f \", matrix[i * 4 + j]);  printf(\"\\n\"); } }  \/\/ FOV - \u0432 \u0440\u0430\u0434\u0438\u0430\u043d\u0430\u0445 void MatrixPerspective(float* matrix, float fov, float aspect, float _near, float _far) { float m2[16]; MatrixIdentity((float*)&amp;m2);  float yScale = 1.0f \/ (float)tan(fov \/ 2); float xScale = yScale \/ aspect;  MATRIX_SET(m2, 0, 0, xScale); MATRIX_SET(m2, 1, 1, yScale); MATRIX_SET(m2, 2, 2, _far \/ (_far - _near)); MATRIX_SET(m2, 3, 2, -_near * _far \/ (_far - _near)); MATRIX_SET(m2, 3, 3, 0); MATRIX_SET(m2, 2, 3, 1); \/\/ Perspective FOV left-handed matrix  MatrixMultiply(matrix, (float*)&amp;m2); }  void MatrixMultiply(float* matrix1, float* matrix2) { float mat1[16]; memcpy((float*)&amp;mat1, matrix1, sizeof(float) * 16);         \/\/ \u041f\u0435\u0440\u0432\u0430\u044f \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f - \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0446\u0438\u043a\u043b. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c, \u043d\u043e \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435. \u0423\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SIMD-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. for (int j = 0; j &lt; 4; j++) { for (int i = 0; i &lt; 4; i++) { MATRIX_SET(matrix1, j, i, MATRIX_GET(mat1, j, 0) * MATRIX_GET(matrix2, 0, i) + MATRIX_GET(mat1, j, 1) * MATRIX_GET(matrix2, 1, i) + MATRIX_GET(mat1, j, 2) * MATRIX_GET(matrix2, 2, i) + MATRIX_GET(mat1, j, 3) * MATRIX_GET(matrix2, 3, i)); } } }  <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u0441\u0430\u043c\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438!<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0420\u0438\u0441\u0443\u0435\u043c 3D-\u043c\u043e\u0434\u0435\u043b\u044c!<\/font><\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432? \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 ModelViewProjection \u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0437 Clip space \u0432 \u043e\u043a\u043e\u043d\u043d\u044b\u0435. \u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e!<\/p>\n<p>  \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0443. \u042f \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u0441\u043e\u0441\u0442\u0440\u044f\u043f\u0430\u043b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0438\u0437 SMD (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u0441\u043a\u0430\u044e \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442) \u0432 \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u043e\u0434\u0435\u043b\u0435\u0439. <\/p>\n<pre><code class=\"cs\">string fileName = args[0];                 SmdMesh model = new SmdMesh(File.OpenRead(fileName));                  Stream output = File.Create(Path.GetFileNameWithoutExtension(fileName) + \".msh\");                 BinaryWriter writer = new BinaryWriter(output);                  writer.Write((ushort)Version);                 writer.Write((ushort)(model.Triangles.Count * 3));                  foreach(SmdTriangle tri in model.Triangles)                 {                     for(int i = 0; i &lt; 3; i++)                     {                         writer.Write(tri.Verts[i].Position.X * 0.1f);                         writer.Write(tri.Verts[i].Position.Y * 0.1f);                         writer.Write(tri.Verts[i].Position.Z * 0.1f);                          writer.Write(tri.Verts[i].UV.X);                         writer.Write(tri.Verts[i].UV.Y);                     }                 }                  Console.WriteLine(\"Total {0} vertices\", model.Triangles.Count * 3);                  output.Close(); <\/code><\/pre>\n<p>  \u0418 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u0434\u043b\u044f Glide \u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f!<\/p>\n<pre><code class=\"cpp\"> MeshHeader header; memset(&amp;header, 0, sizeof(header)); FILE* f = fopen(fileName, \"rb\"); fread(&amp;header, sizeof(header), 1, f);  if (header.Version != MESH_VERSION) { printf(\"Mesh version mismatch for %s\\n\", fileName);  return 0; }  Mesh* ret = new Mesh(); ret->NumVertices = header.NumVertices; ret->Vertices = new MeshVertex[header.NumVertices]; fread(ret->Vertices, sizeof(MeshVertex), ret->NumVertices, f); fclose(f);  return ret; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u044c, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 Clip-space, \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u2014 ModelViewProj. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435, \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u043f\u043f\u0438\u043d\u0433 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u0423 \u043d\u0430\u0441 \u0435\u0433\u043e \u043d\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0435\u0451 \u0432\u0435\u0440\u0448\u0438\u043d \u0443\u0445\u043e\u0434\u044f\u0442 \u00ab\u043d\u0430\u0437\u0430\u0434\u00bb \u0437\u0430 \u043a\u0430\u043c\u0435\u0440\u0443. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043b\u0438\u043f\u043f\u0438\u043d\u0433 <b>\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e<\/b>:<\/p>\n<pre><code class=\"cpp\"> \/\/ Project vertex from world space to clip space. matrix - MVP matrix. __inline bool GraphicsProjectVertex(Vertex* vert, float* matrix) { float m[4][4]; memcpy(&amp;m, matrix, sizeof(m)); \/\/ Temporary Vertex ret;  \/\/ We treat vertex as float4(pos, 1) ret.X = vert->X  * m[0][0] + vert->Y  * m[1][0] + vert->Z * m[2][0] + (1 * m[3][0]); ret.Y = vert->X  * m[0][1] + vert->Y * m[1][1] + vert->Z * m[2][1] + (1 * m[3][1]); ret.Z = vert->X  * m[0][2] + vert->Y * m[1][2] + vert->Z * m[2][2] + (1 * m[3][2]); ret.Q = vert->X  * m[0][3] + vert->Y * m[1][3] + vert->Z * m[2][3] + (1 * m[3][3]);  *vert = ret;  return ret.Q >= 0; } <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0438\u0437 Clip-Space \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u043a\u043d\u0430 \u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 UV \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 3dfx Voodoo:<\/p>\n<pre><code class=\"cpp\"> __inline bool GraphicsConvertToWindowSpace(Vertex* inV, Vertex* outV, float* matrix) { Vertex v = *inV; if (!GraphicsProjectVertex(&amp;v, (float*)matrix)) \/\/ \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043b\u0438\u043f\u043f\u0438\u043d\u0433 - \u043c\u044b \u043d\u0435 \u0440\u0438\u0441\u0443\u0435\u043c \u0432\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 return false;  outV->X = XVALUE_TO_WINDOW_SPACE(v.X \/ v.Q, 640); outV->Y = YVALUE_TO_WINDOW_SPACE(v.Y \/ v.Q, 480); outV->Z = 65535.0f \/ absF(v.Z); outV->Q = 1 \/ v.Q;  outV->tmuvtx[0].U = v.tmuvtx[0].U \/ v.Q; outV->tmuvtx[0].V = v.tmuvtx[0].V \/ v.Q;  return true; } <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0432 Clip-Space \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 W \u2014 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <b>\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c<\/b>, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u0442\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043b\u0430\u0437 \u0438\u0433\u0440\u043e\u043a\u0430! \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Z \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438\u0437 Clip-Space \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b:<\/p>\n<pre><code class=\"cpp\"> #define XVALUE_TO_WINDOW_SPACE(srcX, width) (width \/ 2) + (srcX * width); #define YVALUE_TO_WINDOW_SPACE(srcY, width) width - ((width \/ 2) + (srcY * width)); <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0441\u044f \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u043e\u0442 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438\u0437 Clip-space, \u0433\u0434\u0435 -1 \u2014 \u043b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u043a\u043d\u0430, 0 \u2014 \u0446\u0435\u043d\u0442\u0440, 1 \u2014 \u043f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/2dc\/ebd\/6cd\/2dcebd6cdca28cbe8f1129b339bc7532.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2dc\/ebd\/6cd\/2dcebd6cdca28cbe8f1129b339bc7532.png\"\/><\/div>\n<p>  \u0418 \u0442\u0435\u043f\u0435\u0440\u044c, \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u0433\u043e\u0442\u043e\u0432\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u044c! \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e UV-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0438\u0437 0..1 \u0432 0..255 \u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 TMU.<\/p>\n<pre><code class=\"cpp\"> void GraphicsDrawTriangle(MeshVertex* verts, float* matrix) { if (verts) { \/\/ Convert generic vertex format to Glide format first Vertex v[3]; memset(&amp;v, 0, sizeof(v));  for (int i = 0; i &lt; 3; i++) { v[i].X = verts[i].Position.X; v[i].Y = verts[i].Position.Y; v[i].Z = verts[i].Position.Z; v[i].tmuvtx[0].U = verts[i].UV.X * 255.0f; v[i].tmuvtx[0].V = verts[i].UV.Y * 255.0f; }  Vertex v1, v2, v3; if (!GraphicsConvertToWindowSpace(&amp;v[0], &amp;v1, matrix)) return;  if (!GraphicsConvertToWindowSpace(&amp;v[1], &amp;v2, matrix)) return;  if (!GraphicsConvertToWindowSpace(&amp;v[2], &amp;v3, matrix)) return;  grDrawTriangle(&amp;v1, &amp;v2, &amp;v3); } }  void GraphicsDrawMeshEx(Mesh* mesh, Material* material, float* matrix) { if (mesh &amp;&amp; mesh->NumVertices > 0) { \/\/ Setup render state GraphicsSetupTextureStage(material);  for (int i = 0; i &lt; mesh->NumVertices \/ 3; i++) { GraphicsDrawTriangle(&amp;mesh->Vertices[i * 3], matrix); } } }  ...  float matrix[16]; MatrixIdentity((float*)&amp;matrix); MatrixRotationAngle((float*)&amp;matrix, 0, rot, 0); MatrixTranslation((float*)&amp;matrix, rot, 0, 15); MatrixPerspective((float*)&amp;matrix, 90 * 0.0174533f, 640.0f \/ 480, 1, 100);  GraphicsDrawMeshEx(mesh, &amp;mat, (float*)&amp;matrix); <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/0ad\/a99\/3d6\/0ada993d69a08a2a8aef414572b1bffd.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0ad\/a99\/3d6\/0ada993d69a08a2a8aef414572b1bffd.png\"\/><\/div>\n<p>  \u0421\u043a\u0440\u0438\u043d \u0441 \u043a\u0440\u0438\u0432\u043e-\u043d\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043e\u0439: \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0431\u044b\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u044d\u043c\u043f\u043b\u0435\u0440, \u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0410 \u0435\u0449\u0451 \u0442\u0443\u0442 \u0432\u0438\u0434\u043d\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f Z-\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u043d\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442, \u0434\u0430? \u0413\u0434\u0435 \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b? \u0410 \u043e\u0431 \u044d\u0442\u043e\u043c \u2014 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435!<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b<\/font><\/h2>\n<p>  \u041f\u043b\u043e\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0438 \u0431\u0435\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e. \u041d\u0443 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043c?<\/p>\n<p>  \u0422\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u044b\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 (\u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u2014 \u0442. \u0435. \u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442, \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0430 \u0438 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043d\u044f\u0442\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c). \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043b\u0438\u0448\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043c\u0438\u043f\u043e\u0432 \u0438 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0451 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 \u2014 \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u0430\u0436\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0438\u043f\u043e\u0432 \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0438 \u0441\u0430\u043c\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>  \u041d\u043e \u0432 Glide \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0438\u043d\u0430\u0447\u0435 \u2014 \u0432\u0435\u0434\u044c \u0442\u0430\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430! \u041a\u0430\u043a-\u0442\u0430\u043a? Glide \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0438 \u043d\u0438\u0436\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e TMU \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432\u043e\u043b\u0435\u043d \u0431\u044b\u043b \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e! \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0435\u0451\u2026 \u0432 \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440, \u0434\u0430\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u043f\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e! \u041f\u0440\u0438 \u044d\u0442\u043e\u043c TMU \u0434\u0430\u0436\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043d\u0435 \u0437\u043d\u0430\u043b \u2014 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442\u0441\u044b\u043b\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.<\/p>\n<p>  TMU \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432: RGB332 (8 \u0431\u0438\u0442 \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c), RGB565 (16 \u0431\u0438\u0442 \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c), \u043f\u0430\u043b\u0438\u0442\u0440\u043e\u0432\u044b\u0439 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0436\u0430\u0442\u0438\u044f \u0441 NCC-\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0435\u0439. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, 565 \u0443 3dfx \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0438\u043d\u0430\u0447\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0448\u0443. \u0411\u043b\u0430\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0441 \u0434\u0438\u0441\u043a\u0430, \u0432 Glide \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u0443\u043b\u0437\u0430 <b>texUS<\/b> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0438 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0438\u043f\u043e\u0432 \u0434\u043b\u044f \u043d\u0438\u0445 \u2014 gu3dfGetInfo \u0438 gu3dfLoad. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f grTexCalcMemRequired \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043c\u0438\u043f\u043e\u0432, \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u042f \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0433\u0440\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u00ab\u043f\u0430\u0447\u043a\u043e\u0439\u00bb, \u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<pre><code class=\"cpp\">         gTextureHeapMin = grTexMinAddress(GR_TMU0); gTextureHeapMax = grTexMaxAddress(GR_TMU0);          Gu3dfInfo info; gu3dfGetInfo(fileName, &amp;info);  FxU32 required = grTexCalcMemRequired(info.header.small_lod, info.header.large_lod, info.header.aspect_ratio, info.header.format);  if (gTextureHeapMin + gTextureHeapUsage + required > gTextureHeapMax) { printf(\"Failed to allocate texture %s: VRAM exhausted\\n\", fileName); exit(-1); }  FxU32 linearAddr = gTextureHeapMin + gTextureHeapUsage;  info.data = malloc(info.mem_required); gu3dfLoad(fileName, &amp;info); <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u044e\u043d\u0438\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e grTexDownloadMipMap.<\/p>\n<pre><code class=\"cpp\">         GrTexInfo tInfo; tInfo.aspectRatioLog2 = info.header.aspect_ratio; tInfo.smallLodLog2 = info.header.small_lod; tInfo.largeLodLog2 = info.header.large_lod; tInfo.format = info.header.format; tInfo.data = info.data;  grTexDownloadMipMap(0, linearAddr, GR_MIPMAPLEVELMASK_BOTH, &amp;tInfo); <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0436\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u0430, \u0432\u0435\u0434\u044c glBindTexture \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442? \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f glTexSource, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0438\u043f\u0430 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u2014 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0426\u041f\u0423!<\/p>\n<pre><code class=\"cpp\">grTexSource(0, linearAddr, GR_MIPMAPLEVELMASK_BOTH, &amp;tInfo);  NativeTextureHandle* tex = new NativeTextureHandle(); tex->TexInfo = tInfo; tex->LinearAddr = linearAddr;  Texture* ret = new Texture(); ret->Width = 0; ret->Height = 0; ret->NativeHandle = tex;<\/code><\/pre>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043c\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u044d\u043c\u043f\u043b\u0435\u0440 \u0438 \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440\u044b!<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440\u044b \u043d\u0430 \u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0431\u0435\u0437 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0446\u0432\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u044b. \u0410\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b \u043c\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u2014 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0430\u043b\u044c\u0444\u0430-\u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"cpp\">grColorCombine(GR_COMBINE_FUNCTION_SCALE_OTHER, GR_COMBINE_FACTOR_ONE, GR_COMBINE_LOCAL_NONE, GR_COMBINE_OTHER_TEXTURE, FXFALSE); grAlphaCombine(GR_COMBINE_FUNCTION_SCALE_OTHER, GR_COMBINE_FACTOR_ONE, GR_COMBINE_LOCAL_NONE, GR_COMBINE_OTHER_TEXTURE, FXFALSE); grAlphaBlendFunction(GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA, GR_BLEND_ZERO, GR_BLEND_ZERO);<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u0432\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e96\/c22\/7df\/e96c227df50676afd3d2882ba58e13d9.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e96\/c22\/7df\/e96c227df50676afd3d2882ba58e13d9.png\"\/><\/div>\n<p>  \u0414\u0430, \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f 3D-\u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043e\u0439! \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e \u043a\u043e\u043d\u0446\u043e\u0432\u043a\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u043e! \u0418\u0433\u0440\u044b \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043d\u0435\u0442 \u2014 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u044b\u0448\u0435\u043b \u0431\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0410 \u0433\u0434\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430?<\/font><\/h2>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0435\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \ud83d\ude41 \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0434\u0443\u043c\u0430\u043b \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0451 \u0441\u0445\u0432\u0430\u0447\u0435\u043d\u043e \u0438 \u043c\u043e\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043a\u0430 \u043d\u0430 478 \u0441 AGP-\u0441\u043b\u043e\u0442\u043e\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u043e\u043b\u044c\u044e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0434\u0435\u043c\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0435 \u0443\u0447\u0435\u043b \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u043a\u0442 \u2014 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 AGP \u0438 \u043d\u0430 478 \u0443\u0436\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 1.5\u0432\/0.8\u0432 \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438. <\/p>\n<p>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0431\u044b\u043b \u043e\u0431\u0435\u0449\u0430\u043d \u0432 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043d\u0430 11 \u0443\u0442\u0440\u0430, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0437\u0430\u043a\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0447\u0442\u0443 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e (\u043d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434, \u043f\u043e\u0441\u044b\u043b\u043a\u0438 1.5-2 \u043d\u0435\u0434\u0435\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435 \u0432 \u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440\u0435), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0447\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0438\u043a\u0430\u043c \u0443 \u0441\u0435\u0431\u044f \u0432 \u0433\u043e\u0440\u043e\u0434\u0435, \u0432 \u043d\u0430\u0434\u0435\u0436\u0434\u0435 \u0447\u0442\u043e \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043a\u0430 \u043d\u0430 PGA370\u2026 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>  \u0418 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043a\u0430 \u043d\u0430\u0448\u043b\u0430\u0441\u044c! \u0415\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0437\u0434\u043d\u044f\u044f ECS P6IPAT \u043d\u0430 815 \u0447\u0438\u043f\u0441\u0435\u0442\u0435 \u0441 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c AGP-\u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b AGP \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041f\u0440\u043e\u0434\u0430\u0432\u0430\u043b \u0435\u0451 \u043c\u0443\u0436\u0438\u0447\u043e\u043a \u0432\u0441\u0435\u0433\u043e \u0437\u0430 100 \u0440\u0443\u0431\u043b\u0435\u0439, \u0441\u0440\u0430\u0437\u0443 \u0441 \u043f\u0440\u043e\u0446\u043e\u043c \u0438 \u043e\u0445\u043b\u0430\u0434\u043e\u043c \ud83d\ude42 \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u0435\u043c \u043f\u043b\u0430\u0442\u044b (\u0432\u0441\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043b\u0438\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u00ab\u0432\u043a\u0440\u0443\u0433\u00bb, \u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043f\u043b\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u0430 \u0440\u0430\u0437\u0430 \u0441 3\u0433\u043e) \u0438 \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0438\u043d\u0434\u044b (\u043f\u043e\u043c\u0435\u0440 IDE-\u043f\u0440\u0438\u0432\u043e\u0434), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u2026<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/afa\/a58\/6c3\/afaa586c3b99edcb5e1453f8315512f5.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/afa\/a58\/6c3\/afaa586c3b99edcb5e1453f8315512f5.jpg\" data-blurred=\"true\"\/><\/div>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0418 \u043c\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f 3D-\u0438\u0433\u0440\u044b, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 90-\u0445 \u0433\u043e\u0434\u0430\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c:<\/p>\n<ol>\n<li>\u0418\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b (\u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u043c\u0430\u0442\u0440\u0438\u0446, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e).<\/li>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u0442\u0435\u0439\u0442\u044b, \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0435\u0440\u044b, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430 \u0438 Depth-\u0431\u0443\u0444\u0435\u0440\u0430.<\/li>\n<li>\u0418\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u0438\u043a\u0430\u0445 \u0432 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435, Z-\u0431\u0443\u0444\u0435\u0440, \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u043c\u0438\u043f\u043c\u0430\u043f\u043f\u0438\u043d\u0433, \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0413\u0443\u0440\u043e, \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0442. \u043f.<\/li>\n<\/ol>\n<p>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043e\u0431\u044a\u0451\u043c\u043d\u044b\u043c, \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434. \u042f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e 3dfx Voodoo, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0437\u0443\u0447\u0438\u043b \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442, \u043d\u043e \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 API \u043d\u0430 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0436\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0438 \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>  \u041a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0435\u043a \u043d\u0430\u0441\u0447\u0435\u0442 3dfx \u0432 \u0421\u041d\u0413: \u044f \u043b\u0438\u0447\u043d\u043e \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0432 2001 \u0433\u043e\u0434\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0433\u0443 \u0441\u0443\u0434\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437 \u0443\u0441\u043b\u044b\u0448\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0439 \u0431\u0430\u0435\u043a \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0439. \u0410 \u043a\u0430\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0441 3dfx Voodoo \u0431\u044b\u043b\u0430 \u0443 \u0432\u0430\u0441? \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445!<br \/>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0431\u044b\u043b \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d. \ud83d\ude42 \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0438\u0441\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0445 \u043d\u043e\u0447\u0435\u0439, \u0434\u0430\u0431\u044b \u0443\u0441\u043f\u0435\u0442\u044c \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434! \u0411\u043e\u043b\u044c\u0448\u0435 \u0431\u044d\u043a\u0441\u0442\u0435\u0439\u0434\u0436\u0430, \u043c\u044b\u0441\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0432 <a href=\"https:\/\/t.me\/monobogdann\">Telegram<\/a>.<\/p>\n<hr\/>\n<p>  <\/p>\n<h4><font color=\"#454cee\">\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435:<\/font><\/p>\n<ul>\n<li>\u27a4<a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/770724\/\"> 3D \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430-\u00ab\u0434\u0435\u043a\u0441\u0435\u043b\u0435\u0440\u0430\u0442\u043e\u0440\u00bb \u0438\u0437 90-\u0445. \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 S3 ViRGE \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb?<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/781376\/\">\u0417\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c: \u043f\u0430\u0441\u0445\u0430\u043b\u043a\u0438 \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/778508\/\">\u041a\u0430\u043a \u00ab\u043e\u0437\u043e\u043b\u043e\u0442\u0438\u0442\u044c\u0441\u044f\u00bb \u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/779254\/\">\u041b\u0430\u0439\u0444\u0445\u0430\u043a: \u043a\u0430\u043a \u0437\u0438\u043c\u043e\u0439 \u0441\u043f\u0430\u0441\u0442\u0438 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0441\u0432\u043e\u0438\u0445 \u0433\u0430\u0434\u0436\u0435\u0442\u043e\u0432<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/768924\/\">\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0412\u0435\u0434\u044c\u043c\u0430\u043a\u0430: \u043e\u0442 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u043e\u0439 \u0441\u0430\u0433\u0438 \u0434\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0444\u0440\u0430\u043d\u0448\u0438\u0437\u044b<\/a><\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/timeweb.cloud\/?i=106909\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\"\/><\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/timeweb\/articles\/781078\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u0430\u0448\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u0442\u0430\u0442\u044c\u0438?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">60.36% <\/span><span class=\"tm-article-poll__answer-label\">\u041e\u0433\u043e\u0433\u043e\u0433\u043e! \u0425\u0430\u0431\u0440 \u0435\u0449\u0451 \u0442\u043e\u0440\u0442!<\/span><span class=\"tm-article-poll__answer-votes\">67<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 60.36%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">\u041c\u0434\u0430, \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u0425\u0430\u0431\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0442\u043e\u0440\u0442 \ud83d\ude41<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.6% <\/span><span class=\"tm-article-poll__answer-label\">AGP-\u0432\u0435\u0440\u0441\u0438\u044f Voodoo? \u041d\u0435 \u0442\u0440\u0443\u0448\u043d\u043e!!!<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.6%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">32.43% <\/span><span class=\"tm-article-poll__answer-label\">\u0410\u0444\u0444\u0444\u0442\u0430\u0440 \u043f\u0435\u0448\u0438 \u0438\u0449\u0451<\/span><span class=\"tm-article-poll__answer-votes\">36<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 32.43%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.6% <\/span><span class=\"tm-article-poll__answer-label\">\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u0440\u0438\u0441\u043d\u044f!<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.6%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 111 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 15 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/timeweb\/articles\/781078\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u0441\u0451 \u043b\u0438 \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">48.6% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041e\u043f\u044b\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e.<\/span><span class=\"tm-article-poll__answer-votes\">52<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 48.6%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">28.04% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043e\u043f\u044b\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438.<\/span><span class=\"tm-article-poll__answer-votes\">30<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 28.04%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0.93% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u043d\u0435\u0441\u0435\u043d.<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0.93%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">22.43% <\/span><span class=\"tm-article-poll__answer-label\">\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432 \u0441\u0442\u0438\u043b\u0435 \u043d\u0430\u0443\u0447\u043f\u043e\u043f\u0430. \u041f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c!<\/span><span class=\"tm-article-poll__answer-votes\">24<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 22.43%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 107 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 9 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/timeweb\/articles\/781078\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u043c \u0440\u0443\u0431\u0440\u0438\u043a\u0430 \u0441 \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u0430\u043c\u0438 \u0438\u0437 90\u0445 \u0438 \u043d\u0443\u043b\u0435\u0432\u044b\u0445?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">89.66% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u0440\u0443\u0431\u0440\u0438\u043a\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c.<\/span><span class=\"tm-article-poll__answer-votes\">104<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 89.66%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">1.72% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u0440\u0443\u0431\u0440\u0438\u043a\u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f.<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 1.72%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">8.62% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0449\u0430\u044e. \u041d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u0432\u043b\u0435\u043f\u043b\u044e \u043c\u0438\u043d\u0443\u0441!<\/span><span class=\"tm-article-poll__answer-votes\">10<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 8.62%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 116 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 9 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/781078\/\"> https:\/\/habr.com\/ru\/articles\/781078\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/a39\/392\/f20\/a39392f203f55e6caebf3da856842eca.jpg\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a39\/392\/f20\/a39392f203f55e6caebf3da856842eca.jpg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c\u0438, \u043a\u0430\u043a 3dfx Voodoo. \u042d\u0442\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438 \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b\\\u043a\u043e\u043d\u0446\u0430 90-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0431\u044b\u043b \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u0434\u043b\u044f \u0438\u0433\u0440, \u0430 \u043e \u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0430\u0433\u0430\u043b\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u044b. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0435\u0441\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u043d\u0430\u0442\u043e\u0432 \u0440\u0435\u0442\u0440\u043e-\u0438\u0433\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442, \u043b\u044e\u0431\u044f\u0442 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0441 \u0446\u0432\u0435\u0442\u043c\u0435\u0442\u0430 \u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043e\u0442 3dfx, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0421\u041d\u0413. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0431\u0437\u043e\u0440\u043e\u0432 \u043d\u0430 3dfx Voodoo \u043c\u043d\u043e\u0433\u043e, \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0433\u0440 \u2014 \u0442\u043e\u0436\u0435, \u0430 \u0432\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u00ab\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438\u00bb \u043e \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c 3D-\u0438\u0433\u0440\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442! \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0440\u0438\u043a\u0443\u043f\u0438\u043b \u0441\u0435\u0431\u0435 Voodoo 3, \u0438 \u043d\u0430\u0447\u0430\u043b \u0437\u0443\u0431\u0440\u0438\u0442\u044c Programmer&#8217;s Manual \u0441 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0434\u0430\u043a\u043e\u0435\u2026 \u0421\u0442\u0430\u0442\u044c\u044e \u044f \u0434\u043e\u043b\u0433\u043e \u0438 \u0443\u043f\u043e\u0440\u043d\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u0430\u0431\u044b \u0443\u0441\u043f\u0435\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0441 \u0432\u0430\u043c\u0438: \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 3dfx, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u043e\u0432 3dfx \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 90\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 3D-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Glide \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441 \u043d\u0443\u043b\u044f. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0422\u043e\u0433\u0434\u0430 \u0436\u0434\u0443 \u0432\u0430\u0441 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435!<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-363131","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=363131"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363131\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=363131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=363131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=363131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}