這是使用Android平臺上OpenGLES2.0(對API 8,如果這有什麼差別)開發的移動應用程序。
我試圖在我目前的工作渲染系統添加一個UI層,但它不工作,我不知道爲什麼。任何幫助將不勝感激。
以下是我在做什麼:
1)當初始化時,我加載了一堆整個網格物體來顯示,這些網格物體使用各種程序進行渲染。其中一個網格顯示一個紋理,這是工作。
2)I已經加載全部網格後,我加載「按鈕」,其爲基本上與已經在被上述(1)通過它拉伸中使用的相同的紋理的正方形。
3)我的主渲染循環使得深度掩模可寫,並且對於依次在每個程序,使得任何其是不透明的,則使得所述深度掩模只讀,並且對於依次在每個程序,使得任何具有任何程度透明度,然後清除深度緩衝位並依次渲染每個UI組件。
我做一兩件事,但這可能不是做事的正確方法 - 這是我的渲染UI組件不執行任何模型 - 視圖 - 投影變換程序 - 我通過標準化設備座標進去直接和它只是一個通過。據我所知,這應該起作用 - 我只是提到它,因爲我懷疑它。是用於頂點和片段着色器用於UI組件程序代碼,如下所示:
int vShader = compileShader(GLES20.GL_VERTEX_SHADER,
"attribute vec4 aPosition;" +
"attribute vec2 aTexCoord;" +
"varying vec2 vTexCoord;" +
"void main() {" +
" vTexCoord = aTexCoord;" +
" gl_Position = aPosition;" +
"}");
int fShader = compileShader(GLES20.GL_FRAGMENT_SHADER,
"precision mediump float;" +
"uniform sampler2D uTexture;" +
"varying vec2 vTexCoord;" +
"void main() {" +
" gl_FragColor = texture2D(uTexture,vTexCoord);" +
"}");
OpenGLES2未能呈現位圖
這是我已經試過:
1)我已經試過防止不透明和透明的程序運行。在這種情況下我得到完全充滿垃圾的畫面(帶狀規則間隔開的橫條紋,純黑和看似隨機的東西之間交替 - 每個頻帶可能是約50個像素高)。
2)我已經檢查了float數組的內容上我FloatBuffer
基於(我不能工作,如何直接檢查FloatBuffer
。這一切對我來說很好。
我有點位難倒!任何人有什麼想法?