2012-07-06 52 views
6

OpenGL ES 2.0的OpenGL ES 2.0的紋理變形與紋理採樣精度嚴重的問題 - 我見過的主題與similar problem, 但我還沒有看到一個真正的解決這個「扭曲的OpenGL ES 2.0紋理「問題呢。大型幾何GL_REPEAT

這與紋理的圖像格式或OpenGL顏色緩衝區無關,它看起來像是一個精度錯誤。我不知道是什麼原因導致精度失敗 - 看起來好像只是導致這種失真的幾何尺寸,因爲簡單地縮放傳遞給頂點着色器的頂點位置並不能解決問題。


下面是紋理失真的一些例子:

紋理問題僅限於OpenGL ES 2.0上的小尺寸幾何,否則紋理採樣顯得正常,但顆粒效果逐漸惡化,頂點數據距XYZ原點越遠(0,0,0)

這些紋理問題會不會出現在桌面OpenGL(在Windows XP,Windows 7和Mac OS X下工作正常)

我只看到Android,iPhone或WebGL上發生的問題(類似於OpenGL ES 2。0)


所有紋理的2功率,但問題仍然存在

  • 縮放頂點數據 - 頂點的XYZ位置的值是在的範圍: -65536到+65536浮點數

    • 我意識到這是很大的,所以我試圖分割垂直1024前位置收縮的幾何形狀,並希望得到更準確的浮點精確度,但這並沒有解決或減少紋理失真問題
  • 縮放模型視圖或縮放投影矩陣沒有幫助

  • 改變紋理過濾選項不利於

    • 禁用紋理映射,或使用GL_NEAREST/GL_LINEAR什麼都不做
    • 啓用/禁用各向異性什麼也不做
    • 的條紋效果使用GL_CLAMP
  • 當分割傳遞到頂點着色器紋理COORDS,然後乘以他們回到在正確的值仍然出現甚至片段着色器,也不起作用

  • 精密highp sampler2D,highp浮動,highp詮釋 - 在片段或頂點着色器沒有任何改變(lowp/mediump沒有WO RK要麼)

我想這個問題已經在一個點已經得到解決 - 眼見的OpenGL ES 2.0爲基礎的遊戲已經能夠呈現大規模,非常詳細的幾何

回答

1

這是通常的紋理地圖集問題。沒有設置限制中間紋理中的線性插值。這就是硬件的工作原理。

可以解決此問題通過它計算出紋理查找片段程序中使用最近過濾紋理查找您的模紋理磚的大小和位置,並手動做它的線性濾波。

+0

我已經就這個問題試圖理清我認爲這是類似這樣的錯誤,併發生了機會......就太排序這個問題的技術工作? http://stackoverflow.com/questions/13915531/repeating-opengl-es-texture-bound-to-hills-in-cocos2d-2-0 任何幫助將大規模感激! – simonthumper 2012-12-22 15:43:18