看板 GameDesign 關於我們 聯絡資訊
我剛剛終於實驗出來了 看起來我的基礎還真是不行 要多多加強 (汗顏) ※ 引述《pleaselouis (LOUIS￾N)》之銘言: : 今天有試過以 UpdateTexture 來作測試 : 不過我想我在基礎的部分還不是很了解 所以再來這邊請教大家 : 1.請問UpdateTexture是直接取代LockRect與UnlockRect之間所做的動作嗎?? : 還是兩者皆要存在?? 兩者皆要存在 因為 UpdateTexture 的第一個參數為 Resource 第二個為 Destination 所以做為Resource的第一個參數 便要使用LockRect與UnlockRect之間做的動作載入圖片 再利用 UpdateTexture 把圖片載入至 Destination : 2.我的系統在Texture的宣告是使用 LPDIRECT3DTEXTURE9 : 而UpdateTexture的Texture參數是以 IDirect3DBaseTexture9 做宣告 : 就算我使用強制轉型 Complier也一樣不過 DirectX有其他可取代的Function嗎? 這邊真的是很汗顏了 代表我連C都有問題了 囧rz MSDN對於 UpdateTexture 的記載如下: HRESULT UpdateTexture( IDirect3DBaseTexture9 * pSourceTexture, IDirect3DBaseTexture9 * pDestinationTexture ); 而我兩個準備要載入的變數宣告如下: LPDIRECT3DTEXTURE9* pOutTexture; LPDIRECT3DTEXTURE9 pTexture; 所以我當時是以如下方式使用: UpdateTexture( &pTexture , pOutTexture ); 發現不行 就改以強制轉型宣告: UpdateTexture( &(IDirect3DBaseTexture9 )pTexture , (IDirect3DBaseTexture9 )pOutTexture ); 結果當然還是不行...然後改為: pDevice->UpdateTexture( pTexture , *pOutTexture ); 就可以了...看起來我真的還未夠班啊...不過我還是有點不太懂 可以說是硬測試出來的 可否有前輩 針對這一點解釋一下 拜託 謝謝 : 3.我有在MSDN上看到 若POOL設定為 D3DPOOL_SYSTEMMEM : 則DevCaps要設定為 D3DDEVCAPS_TEXTURESYSTEMMEMORY : 但網路上有提 並非所有顯卡都支援 D3DDEVCAPS_TEXTURESYSTEMMEMORY : 而且我之前的文章有提到 我沒有發現可以設定 DevCaps 的方式 : 請問真的沒有設定DevCaps的方式嗎?? 因為問題解決了 所以我就沒繼續探討了 <囧 : 4.我研究到現在 我想問題關鍵點應該是在 在POOL設定為 D3DPOOL_SYSTEMMEM 時 : 想要載入的圖片並沒有貼上去 所以才以系統預設的白色填滿 : 因此問題的成因 是因為POOL設定為D3DPOOL_SYSTEMMEM : 所以LockRect與UnlockRect之間的動作 才無法發揮功用 : 這是因為圖片目前Loading在 主記憶體上 而非顯示卡記憶體上 : 只要我能夠把主記憶體上的資料 搬移到顯示記憶體上 就能夠正常運作?? : 請問我以上的推論是正確的嗎?? : 麻煩大家非常不好意思 但是還是拜託大家給予我指導 謝謝大家 非常謝謝 moremusic 的指導 以後有問題 希望你也可以一起參予討論 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.76.190.21
darkflier:你多看點code就懂了 你是指標錯誤 11/26 19:35
darkflier:LPDIRECT3DTEXTURE9 = IDIRECT3DTEXTURE9* 11/26 19:36
darkflier:還有你為什麼要用cpu不用gpu速度差很多 11/26 19:36
pleaselouis:因為這是上司的命令啊 <囧/ 11/27 09:25