2012-06-17 62 views
28

在我的iOS應用程序(針對iPad)中,我想使用兩個非功率(NPT)紋理。我的GL_VERSION查詢返回「OpenGL ES 2.0 APPLE」。根據規範,它應該支持NPT紋理,但是一個簡單的測試表明我需要在紋理出現之前將紋理調整到2^N。iOS中兩個紋理的非功率

Apple不支持完整的ES 2.0規範嗎?我在哪裏可以找到不支持的文檔?

我正在使用Xcode 4.3.2和iOS 5.1。

編輯:

在ES 2.0.25規範(第3.8.2節),仔細一看,發現,有要滿足NPOT工作的幾個條件。從本質上講,如果我使用下面的設置,我能夠加載NPOT紋理:

// use linear filetring 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
// clamp to edge 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

我應該關閉這個或回答我的問題?

+3

無需關閉問題,您可以撰寫答案並接受它。有一天它可能會對別人有所幫助。 – Tim

+0

我幾天前還記得同樣的問題和答案。這是一個經常性的話題。 – Luca

回答

24

正如我在編輯中提到的,我找到了解決方案。 NP 2.0上的NPOT要求您使用線性濾波和鉗制邊緣。另外,沒有mipmap。

+0

同時檢查'GL_APPLE_texture_2D_limited_npot'擴展名以確保它被支持。 –

+1

它適用於GL_NEAREST作爲ios7上的min/mag過濾器。 GL_CLAMP_TO_EDGE是問題。 – Martin

+0

@Martin你可以分享一個關於如何在iOS下繪製兩個紋理的非力量的片段嗎?我正在嘗試這樣做,但我只能顯示一張白色圖片:https://gist.github.com/anonymous/53307d146d3d1a750554 – amb