我正在使用GL 2.0(爲了顯示不是2的冪的圖片),我試圖簡單地渲染一個網格(顯示一些三角形)。爲了渲染網格而使用哪種着色器?
當使用GL 1.0時,我沒有任何問題,但現在,我必須傳遞一個ShaderProgram對象作爲參數。
我該如何讓它在GL 1.0中工作?
我應該做一個着色器,什麼都不做?
我正在使用GL 2.0(爲了顯示不是2的冪的圖片),我試圖簡單地渲染一個網格(顯示一些三角形)。爲了渲染網格而使用哪種着色器?
當使用GL 1.0時,我沒有任何問題,但現在,我必須傳遞一個ShaderProgram對象作爲參數。
我該如何讓它在GL 1.0中工作?
我應該做一個着色器,什麼都不做?
您必須使用頂點着色器將世界空間座標轉換爲屏幕空間座標。你需要一個像素着色器來爲你的四邊形的每個渲染像素查找紋理座標。
看看着色器Libgdx uses for its SpriteBatch
,它們是非常小的紋理四色着色器。你可以從字面上使用SpriteBatch.createDefaultShader()
來獲得它們,或者只是將它們用作你自己着色器的靈感。
上着色的libgdx維基頁面已經包含了一個簡單的着色器示例代碼:
https://github.com/libgdx/libgdx/wiki/Shaders
我認爲它基本上是一樣的createDefaultShader()
在PT的答案...
希望它有幫助...
它仍然不顯示三角形,因爲它曾經。 GL 1.0:http://i.imgur.com/6cdwbiR.png(三角形正朝着屏幕的邊緣移動)GL 2.0:http://i.imgur.com/SEFcOrA.png(此圖像是靜態的) 。我不改變GL 2.0和GL 1.0之間的任何其他內容,而不是將'SpriteBatch.createDefaultShader()'作爲參數傳遞給Mesh.render()。另一方面,如果我爲默認的'ShaderProgram'創建一個私有變量,並且我調用'begin()'和'end()',它只是顯示粉紅色的背景。 – hakermania
@hakermania如果您的網格佈局不遵循SpriteBatch使用的網格佈局,您可能需要調整着色器? –
任何鏈接要關注我應該調整什麼的更多信息? – hakermania