引用:
|
作者scottchang
沒錯,這是我認為公平的方式,但並不是絕對公平,我也提過能誤差的話是能誤差到哪?當然在同一個設定之下
您也提出您的專業,認為我的方式不可行,也提出業界怎麼做,我不是質疑你或是業界的作法,而是我認為,就我一個很單純的player來看,我是不會用這種方法去論斷遊戲表現,當然您有您的基準,不過就可以避開錯誤嗎?作弊嗎?這裡面很多彈性的討論空間
|
避開錯誤、作弊,所以全業界都用Benchmark啊(或自已錄),因為這樣可以複製平台、環境,載入遊戲的log檔,直接跑一次就可以判斷了。微軟也是這樣是在複製bug啊,不然os怎麼老是問你要不要回報資訊,它就是把你的所有軟、硬體資訊都記錄起來,HQ的QA或FAE試驗一次,再找相關廠商來一同解決問題。
回到正題。在遊戲狀態裡,程式就已經寫好「觸發事件」,但是除了觸發事件之外,還有其他許多元素在變化,就算是載入記錄點,就我個人認為只要是使用DirectX 10的API,都會有不一樣的細節產生,尤其有內建物理引擎的遊戲。
我再說仔細一次好了。像在寫遊戲的時候, 有可能讓每一個進去的紀錄點都有一模一樣的畫面嗎?不可能!因為顯示卡如果不一樣的話,要讓畫面上每個點一樣是有困難的,除非是同樣的顯示卡才有辦法保證。
因為DirectX和OpenGL都沒有規定Pixel accurate,就算是載入遊戲預設的記錄點也一樣。就算寫一個最簡單的程式,3D只畫一個最簡單的東西,也不見得會完全一樣,假如你有開啟AA,其畫面結果也更完全不同,如果像是bilinear這種比較老舊的規格,可能ATI/NV作法會一樣,但是就算可以一樣,也不表示GPU計算時的精確度會相同,例如,8bit與10bit等,其它map或是AF也是一樣。
但是會有一樣的,那麼就是一個三角在螢幕上會佔據那一個點,這就有嚴格規定,可是每個點的顏色就沒有了。
所以你說要做到每個Pixel完全相同是不可能的,主要原因是DirectX或OpenGL都沒有這樣規定,所以,就算遊戲丟進去是完全一樣的資料,兩個不同的顯示卡也不見得會產生同樣的結果,這與CPU是不同的。
只你是X86相容CPU,那麼一樣的程式,丟入一樣的資料,給完全不同的兩個X86 CPU,那麼也要得到相同的結果。
但是GPU沒有這種規定,所以,有些地方有規定要一樣,有些則不行規定,因為一旦規定了,就會限制GPU的發展,例如你要兩個不同的顯示卡,盡量截到一樣的畫面,那麼得要DirectX或OpenGL「嚴格規定」每一個AA、AF、Texture的處理方法才有可能辦到,但是這樣會阻礙GPU的進步。
除非,AA、AF、Texture的處理方法已經被研究得很深入,地球表面上的廠商都同意「這是最好的做法,沒有更好的了」那麼就可以讓你看到一樣的畫面在兩張不同的顯示卡上出現,但是這在3D裡面是很少的。