{"id":3814,"date":"2018-02-25T23:18:04","date_gmt":"2018-02-25T15:18:04","guid":{"rendered":"http:\/\/www.bookcard.net\/wordpress\/?p=3814"},"modified":"2018-10-14T21:25:45","modified_gmt":"2018-10-14T13:25:45","slug":"opengl_read_targa_file_rle","status":"publish","type":"post","link":"https:\/\/www.bookcard.net\/wordpress\/opengl_read_targa_file_rle\/","title":{"rendered":"OpenGL\u4e4b\u8b80\u53d6Targa\u5716\u6a94-RLE\u89e3\u78bc"},"content":{"rendered":"<figure id=\"attachment_3815\" aria-describedby=\"caption-attachment-3815\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/02\/OpenGL_Read_Targa_file_RLE.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3815\" src=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/02\/OpenGL_Read_Targa_file_RLE.jpg\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/02\/OpenGL_Read_Targa_file_RLE.jpg 1024w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/02\/OpenGL_Read_Targa_file_RLE-300x225.jpg 300w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/02\/OpenGL_Read_Targa_file_RLE-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-3815\" class=\"wp-caption-text\">OpenGL\u4e4b\u8b80\u53d6Targa\u5716\u6a94-RLE\u89e3\u78bc<\/figcaption><\/figure>\n<p>\u300eTarga\u300f\u8207\u300eBitmap\u300f\u540c\u6a23\u652f\u6301RLE\u7de8\u78bc,\u55ae\u7de8\u78bc\u65b9\u5f0f\u6709\u9ede\u4e0d\u540c.\u800c\u4e14\u300e\u7d22\u5f15\u3001RGB\u3001\u7070\u5ea6\u300f\u5747\u652f\u6301RLE\u7de8\u78bc.RLE\u7de8\u78bc\u7121\u975e\u5169\u7a2e\u65b9\u5f0f\u300e\u91cd\u8907\u300f\u8207\u300e\u4e0d\u91cd\u8907\u300f\u7684\u50cf\u7d20.\u6e32\u67d3\u6f14\u793a\u7a0b\u5f0f<a href=\"https:\/\/www.bookcard.net\/wordpress\/opengl_image\/\">\u4e0b\u8f09<\/a>:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"277\">\u8b80\u53d6ID<\/td>\n<td width=\"277\">\u7c21\u4ecb<\/td>\n<\/tr>\n<tr>\n<td width=\"277\">if(ID&gt;=128)<\/p>\n<p>Len = (BYTE)(ID &#8211; 127);<\/td>\n<td width=\"277\">\u91cd\u8907\u50cf\u7d20<\/p>\n<p>LEN\u50cf\u7d20\u91cf<\/td>\n<\/tr>\n<tr>\n<td width=\"277\">if(ID&lt;128)<\/p>\n<p>Len = BYTE(ID + 1);<\/td>\n<td width=\"277\">\u4e0d\u91cd\u8907\u7684\u50cf\u7d20<\/p>\n<p>LEN=\u50cf\u7d20\u91cf<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>RLE\u89e3\u78bc\u7684C\u4ee3\u78bc<\/p>\n<p>image:\u8f38\u51fa<\/p>\n<p>data:\u8f38\u5165RLE\u5716\u50cf\u6578\u64da<\/p>\n<p>image_size:image\u5716\u50cf\u6578\u64da\u9577\u5ea6<\/p>\n<p>pixel_size:\u50cf\u7d20\u5927\u7d30<\/p>\n<p>void Load_RLE_Targa(PBYTE image, PBYTE data, int image_size,int pixel_size)<\/p>\n<p>{<\/p>\n<p>BYTE id;\/\/\u91cd\u8907\u50cf\u7d20ID&gt;=128,\u4e0d\u91cd\u8907\u7684\u50cf\u7d20ID&lt;128<\/p>\n<p>BYTE length; \/\/\u50cf\u7d20\u500b\u6578<\/p>\n<p>BYTE pixel[4] = {0,0,0,0};\/\/ \u50cf\u7d20<\/p>\n<p>int image_index = 0;\/\/\u5716\u50cf\u7d22\u5f15<\/p>\n<p>int data_index = 0;\/\/RLE\u7d22\u5f15<\/p>\n<p>while (image_index &lt; image_size)<\/p>\n<p>{<\/p>\n<p>id = data[data_index++];\/\/ \u8b80\u53d6ID<\/p>\n<p>if (id &gt;= 128)\/\/ \u91cd\u8907\u7684\u50cf\u7d20<\/p>\n<p>{\u00a0\u00a0 \/\/ \u50cf\u7d20\u500b\u6578<\/p>\n<p>length = (BYTE)(id &#8211; 127);\/\/\u50cf\u7d20\u500b\u6578<\/p>\n<p>memcpy(pixel, &amp;data[data_index], pixel_size); \/\/ \u8b80\u91cd\u8907\u50cf\u7d20<\/p>\n<p>data_index = data_index + pixel_size;\/\/\u79fb\u52d5RLE\u7d22\u5f15<\/p>\n<p>while (length &gt; 0)\/\/\u00a0 \u91cd\u8907\u5beb\u5165\u6578\u64da<\/p>\n<p>{<\/p>\n<p>memcpy(image+image_index, pixel, pixel_size);\/\/\u91cd\u8907\u5beb\u5165\u6578\u64da<\/p>\n<p>image_index = image_index + pixel_size;\/\/\u79fb\u52d5\u5716\u50cf\u7d22\u5f15<\/p>\n<p>&#8211;length;\/\/ \u500b\u6578\u6e1b\u4e00<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else<\/p>\n<p>{\u00a0 \/\/ \u4e0d\u91cd\u8907\u7684\u50cf\u7d20<\/p>\n<p>length = BYTE(id + 1); \/\/ \u50cf\u7d20\u500b\u6578<\/p>\n<p>\/\/ \u62f7\u8c9d\u50cf\u7d20<\/p>\n<p>memcpy(image+image_index, data+data_index, length*pixel_size);<\/p>\n<p>image_index = image_index + length * pixel_size;\/\/ \u79fb\u52d5\u5716\u50cf\u7d22\u5f15<\/p>\n<p>data_index = data_index + length * pixel_size; \/\/\u79fb\u52d5RLE\u7d22\u5f15<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300eTarga\u300f\u8207\u300eBitmap\u300f\u540c\u6a23\u652f\u6301RLE\u7de8\u78bc,\u55ae\u7de8\u78bc\u65b9\u5f0f\u6709\u9ede\u4e0d\u540c.\u800c\u4e14\u300e\u7d22\u5f15\u3001RGB\u3001\u7070\u5ea6\u300f\u5747\u652f\u6301RLE &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/opengl_read_targa_file_rle\/\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">OpenGL\u4e4b\u8b80\u53d6Targa\u5716\u6a94-RLE\u89e3\u78bc<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[50],"class_list":["post-3814","post","type-post","status-publish","format-standard","hentry","category-opengl","tag-opengl","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/3814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/comments?post=3814"}],"version-history":[{"count":5,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/3814\/revisions"}],"predecessor-version":[{"id":3996,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/3814\/revisions\/3996"}],"wp:attachment":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/media?parent=3814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/categories?post=3814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/tags?post=3814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}