2011-12-03 82 views
0

簡單的任務:畫一個帶紋理的全屏四邊形,僅此而已,所以我們可以確定紋理將填充整個屏幕空間。 (我們稍後會做更多的着色器魔術)。如何使用SDL在OpenGL 2.0中製作紋理全屏四邊形?

使用簡單的片段着色器繪製全屏四連桿很容易,但現在我們被困在一整天試圖使其紋理。我們閱讀了大量的教程,但他們都沒有幫助我們。大約主要使用 1.x,那些關於OpenGL 2.0的不是關於紋理或SDL。 :(

代碼爲here,一切都在colorLUT.c,和片段着色器是colorLUT.fs,結果是一樣大小的圖像的窗口,如果你對此有何評論着色器的最後一行,你會得到漂亮的紅/綠梯度,所以着色器是好的。

回答

3
  1. 紋理初始化相比的OpenGL 1.4並沒有改變。教程將正常工作。
  2. 如果片段着色器的作品,但你看不到紋理(並獲得黑屏),紋理加載被破壞或紋理未被正確設置。禁用着色器,並嘗試顯示具有固定功能功能的紋理多邊形。
  3. 在嘗試初始紋理之前,您可能需要調用glPixelStorei(GL_UNPACK_ALIGNMENT, 1)。默認值爲4.
  4. 將紋理對齊到屏幕的更簡單的方法是添加頂點着色器並傳遞紋理座標 - 而不是嘗試使用gl_FragCoord來計算它們。
  5. 您將表面大小傳遞到「分辨率」統一。這是一個錯誤。您應該傳遞視口大小。
  6. 您可能想要生成mipmap。要麼自己生成它們,要麼使用GL_GENERATE_MIPMAPS,因爲它在OpenGL 2中可用(但在更高版本中已被棄用)
  7. OpenGL.org具有OpenGL 2.0和GLSL 1.5的規範。下載它們並將其用作參考,如有疑問。
  8. NVIdia OpenGL SDK提供了您可能需要檢查的示例 - 它們覆蓋着色器。
  9. 還有「OpenGL橙色書」(OpenGL着色語言),專門處理着色器。
  10. 下一次將代碼添加到問題中。
+0

'glGenerateMipmap(GL_TEXTURE_2D);'做了詭計! – Pitel

相關問題