精華區beta GameDesign 關於我們 聯絡資訊
我剛剛在看 NEHE 的Open GL教學.... 我就一直在想...他幾行我覺得可有可無... 然後,當我去掉的時候,果然還能執行...但是速度馬上變慢, 為本來的1/5 像是這個 http://nehe.gamedev.net/data/lessons/vs_net/lesson08.zip 我把lesson8.cpp 改 第166行: glBindTexture(GL_TEXTURE_2D, texture[filter]); 把它除掉加上註解...馬上變超慢的 不然就是把fileter改成 1或2...也會變慢一些... 但是,只有執行的效率改變了,執行的結果卻都一樣.... 不知道這個是做什麼用的... -- 出處 http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.107.212 > -------------------------------------------------------------------------- < 作者: littleshan (我要加入劍道社!) 看板: GameDesign 標題: Re: [程式] 關於Open GL裡面, Blending 執行速度的 … 時間: Wed Aug 9 19:30:18 2006 ※ 引述《elfria (elfria)》之銘言: : 我剛剛在看 NEHE 的Open GL教學.... : 我就一直在想...他幾行我覺得可有可無... : 然後,當我去掉的時候,果然還能執行...但是速度馬上變慢, 為本來的1/5 : 像是這個 : http://nehe.gamedev.net/data/lessons/vs_net/lesson08.zip : 我把lesson8.cpp 改 : 第166行: : glBindTexture(GL_TEXTURE_2D, texture[filter]); : 把它除掉加上註解...馬上變超慢的 : 不然就是把fileter改成 1或2...也會變慢一些... : 但是,只有執行的效率改變了,執行的結果卻都一樣.... : 不知道這個是做什麼用的... glBindTexture 是讓你選擇目前要使用的 texture 你可以把許多 texture 放進 texture memory 中並在其中切換使用 這樣要使用不同的 texture 時就不須要再傳一次 (在 PCI-E 出現之前 把資料傳到顯示卡上的速度並不快) 這個 demo 只是在顯示不同的 texture filter 會有怎樣的影響 不同的 filter 結果應該是不一樣的 不過也可能因為 texture 本身就很 smooth 所以你看不出差異 filter 使用 1 時是 bilinear interpolation 使用 2 時是選最接近的 mipmap 做 bilinear interpolation 兩者都會比 nearest 還要慢 如果你直接把那一行 glBindTexture 註解掉 那麼它用的 texture 就是最後一次使用 glBindTexture 所選的那張 也就是第 92 行 glBindTexture(GL_TEXTURE_2D, texture[2]); 所選用的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.3.35
elfria:good job..簡單易懂 08/09 19:35
StubbornLin:OpenGL應該是狀態機器,沒記錯的話 XD 08/09 22:59
> -------------------------------------------------------------------------- < 作者: elfria (elfria) 看板: GameDesign 標題: Re: [程式] 關於Open GL裡面, Blending 執行速度的 … 時間: Sat Aug 12 16:30:54 2006 ※ 引述《littleshan (我要加入劍道社!)》之銘言: : ※ 引述《elfria (elfria)》之銘言: : : 我剛剛在看 NEHE 的Open GL教學.... : : 我就一直在想...他幾行我覺得可有可無... : : 然後,當我去掉的時候,果然還能執行...但是速度馬上變慢, 為本來的1/5 : : 像是這個 : : http://nehe.gamedev.net/data/lessons/vs_net/lesson08.zip : : 我把lesson8.cpp 改 : : 第166行: : : glBindTexture(GL_TEXTURE_2D, texture[filter]); : : 把它除掉加上註解...馬上變超慢的 : : 不然就是把fileter改成 1或2...也會變慢一些... : : 但是,只有執行的效率改變了,執行的結果卻都一樣.... : : 不知道這個是做什麼用的... : glBindTexture 是讓你選擇目前要使用的 texture : 你可以把許多 texture 放進 texture memory 中並在其中切換使用 喔.... 我可以把許多texture放到 texture memory... 我想知道,到底可以放多少的texture進texture memory? 有多少就放多少也可以囉? 主要是我寫的程式 讀入BMP之後,就載入到 char* Bits 等到用到其中之一個texture就 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, Bits); 之後就可以show出這張圖片了.... 這樣子不知道會不會比較慢? : 這樣要使用不同的 texture 時就不須要再傳一次 : (在 PCI-E 出現之前 把資料傳到顯示卡上的速度並不快) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.107.212 > -------------------------------------------------------------------------- < 作者: littleshan (我要加入劍道社!) 看板: GameDesign 標題: Re: [程式] 關於Open GL裡面, Blending 執行速度的 … 時間: Sun Aug 13 00:35:58 2006 ※ 引述《elfria (elfria)》之銘言: : ※ 引述《littleshan (我要加入劍道社!)》之銘言: : : glBindTexture 是讓你選擇目前要使用的 texture : : 你可以把許多 texture 放進 texture memory 中並在其中切換使用 : 喔.... : 我可以把許多texture放到 texture memory... : 我想知道,到底可以放多少的texture進texture memory? : 有多少就放多少也可以囉? 從 OpenGL API 的設計來看 比較像是你想放多少就可以放多少 而顯示卡的 driver 應該在 texture memory 不足時 自動把最久沒用到的 texture 砍掉以清出空間 類似 OS 中 paging 的原理... 不過老實說 我不知道現在 driver 實作的情況是怎樣 也許自己管理 texture 並且避免 texture memory 爆炸是比較保險的作法 : 主要是我寫的程式 : 讀入BMP之後,就載入到 char* Bits : 等到用到其中之一個texture就 : glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_BGRA_EXT, : GL_UNSIGNED_BYTE, Bits); : 之後就可以show出這張圖片了.... : 這樣子不知道會不會比較慢? 會 這樣表示每次使用時都必需從 main memory 傳到顯示卡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.3.35 ※ 編輯: littleshan 來自: 61.62.3.35 (08/13 00:39)
StubbornLin:OpenGL有提供texture memory記憶體剩於大小的函數嗎? 08/13 00:53
StubbornLin:我想知道一下@@" 我也想自己實作 08/13 00:53
elfria:不知道.... >__< 08/14 02:16
> -------------------------------------------------------------------------- < 作者: barroslee (很久沒寫Hspice 我早忘了) 看板: GameDesign 標題: Re: [程式] 關於Open GL裡面, Blending 執行速度的 … 時間: Sat Aug 19 20:06:39 2006 ※ 引述《littleshan (我要加入劍道社!)》之銘言: : ※ 引述《elfria (elfria)》之銘言: : : 喔.... : : 我可以把許多texture放到 texture memory... : : 我想知道,到底可以放多少的texture進texture memory? : : 有多少就放多少也可以囉? : 從 OpenGL API 的設計來看 : 比較像是你想放多少就可以放多少 : 而顯示卡的 driver 應該在 texture memory 不足時 : 自動把最久沒用到的 texture 砍掉以清出空間 : 類似 OS 中 paging 的原理... : 不過老實說 我不知道現在 driver 實作的情況是怎樣 : 也許自己管理 texture 並且避免 texture memory 爆炸是比較保險的作法 補充一下 可以使用 glPrioritizeTextures() 去設定 priority : : 主要是我寫的程式 : : 讀入BMP之後,就載入到 char* Bits : : 等到用到其中之一個texture就 : : glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_BGRA_EXT, : : GL_UNSIGNED_BYTE, Bits); : : 之後就可以show出這張圖片了.... : : 這樣子不知道會不會比較慢? : 會 這樣表示每次使用時都必需從 main memory 傳到顯示卡 -- 我的遊戲引擎圖 http://www.wretch.cc/album/album.php?id=barroslee&book=1 我的 blog http://barroslee.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.20.103