这是使用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
。这一切对我来说很好。
我有点位难倒!任何人有什么想法?