2008-10-10 105 views
3

我正在爲iPhone製作一個簡單的2D遊戲。它基於CrashLanding。所以它基本上是一個背景紋理和幾個矩形紋理。在iPhone應用程序中出現奇怪的OpenGL ES行爲

我有這個奇怪的小圖形問題:一些小2d項目(可以假設只是矩形)四處移動得到這個閃爍的黑色小條在他們之上(背景紋理幾乎全白,所以小條是顯而易見的)。

我使用的紋理很小(〜1Kb)PNG。

有沒有其他人遇到過這個問題?這是一個常見的OpenGL問題嗎?

順便說一下,這在模擬器和實際設備上都會發生。

+0

您是否在模擬器和實際設備上看到問題? – 2008-10-13 18:02:18

回答

5

你有沒有像你的紋理中的小黑條吧?

我遇到了類似的問題,當我做錯了什麼。這裏有一個小的清單:

  • 你有沒有mmapmap你的紋理或沒有,並檢查它有什麼參數。
  • glTexParameters。 (WRAP_S,WRAP_T,MAG_FILTER,MIN_FILTER ...)
  • 紋理的尺寸。 (如果允許使用非雙電源功能,則可能會導致圖形故障,具體取決於您如何加載紋理)
  • 您是否正在矩形頂部繪製閃爍條?
  • 在你的紋理中是否存在導致黑條的東西。
  • 動畫幀的對齊。
  • 混合和alpha混合。

如果列表中的某些內容對您而言很模糊,那麼閱讀這些內容很好。

我也做了一個很好的猜測:我相信你沒有在任何方向上包裝你的紋理,並且動畫幀有點偏移,所以你的應用程序有一些錯誤的紋理座標/四邊形高度正在繪製。

我希望我的建議合理。我只有平常的opengl的經驗,而不是OpenGL ES,圖形管道已經被修剪,使它更加緊湊,更乾淨,更優雅。

0

由於這是一款2D遊戲,這些小矩形精靈是否包含在相同的紋理表單中?另一個可能的罪魁禍首可能是紋理過濾。

如果您試圖操縱紋理座標來繪製紋理的子區域,則可以檢查是否以大於1:1的比率繪製精靈。如果您啓用了線性紋理過濾(而不是最近),則如果您嘗試將sprite超出1:1的範圍,OpenGL可能會從相鄰sprite中獲取一些像素。

如果是這種情況,可以嘗試在精靈之間的紋理表中放置1像素緩衝區。

相關問題