[程式] DX9中的Texture資料另存方法 (已解決)

看板GameDesign (遊戲設計)作者 (小豬頭)時間15年前 (2010/07/28 15:14), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
各位前輩好,小弟我最近在研究一個png圖檔的裁切 我把一張png圖我要的範圍取出來後,想把那個範圍內的顏色資訊給存下來 可是目前怎麼存都有點問題,所以想來請教一下,我存方式是不是有問題 下面是我的程式碼 D3DLOCKED_RECT locked_rect; g_pTexture->LockRect(0, &locked_rect, NULL, 0); //鎖定 BYTE *target = (BYTE *)locked_rect.pBits; RECT rect; GetRect(.....); //取得我所需的範圍矩形 int i_NewWidth = rect.right - rect.left; //取出的範圍寬 int i_NewHeight= rect.bottom- rect.top; //取出的範圍高 int iCount = 0; BYTE* by_rectImageData = new BYTE[i_NewWidth*i_NewHeight*4];//建立空間存資料 for(int y = rect.top; y<rect.bottom; y++) { for(int x = rect.left; x<rect.right; x++) { i_index = y*(locked_rect.Pitch/4)+x; by_rectImageData[iCount++] = target[i_index]; } } g_pTexture->UnlockRect(0); //解除鎖定 請問我這樣做有什麼地方不對嗎?? 我取得的值不是255就是0,麻煩各位幫幫忙,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.154.171

07/28 17:29, , 1F
原來i_index算出來後要再乘4才是正確的 orz
07/28 17:29, 1F
文章代碼(AID): #1CJzZD6m (GameDesign)
文章代碼(AID): #1CJzZD6m (GameDesign)