我在opengl中创建了简单的界面(它的左边是一个按下按钮) 我把它们放在屏幕的底部
他们用opengl(jsut来自两个三角形的方框)制作了我想将屏幕移到左侧或右侧。 所以在onDraw方法即时使用此代码
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glClearColor(0, 0.5f, 0.5f, 0);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0, glWidth, glHeight, 0, 0, 1);
// ==================================================================================================
gameField.drawGameField(gl);
drawInterface(gl);
}
来自界面的绘图对象或使用此代码的gameField im
public void draw(GL10 gl)
{ gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0 , 0 , 0); //
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glFrontFace(GL10.GL_CW);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glVertexPointer( 2, GL10.GL_FLOAT, 0, vertices);
gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 6, GL10.GL_UNSIGNED_SHORT, indices);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
我如何创建项目。接口leftButton = new Interface(); 比onDrawFrame我只需要调用leftButton.draw(gl);
对于背景我做了其他类我从游戏中绘制所有对象(不是界面)
简单代码
public void drawGameField(GL10 gl) {
gl.glTranslatef(moveWidth, moveHeight, -1);
background.draw(gl);
yama.draw(gl);
}
所以问题,正如我们在上一个函数(drawGameField)中看到的那样,我设置gl.glTranslatef(moveWidth,moveHeight,-1);
在onDrawFrame中我称之为func,它的工作非常完美。我的游戏画面向左或向右移动(它就像一张我要滚动的大二维地图)但问题是:我的界面按钮也向左或向右移动,我无法理解如何解决这个问题。也许有人知道如何解决这个问题?:(请
UPD 如果在gameField.draw
之前设置了glTranslatefgl.glTranslatef(moveWidth,moveHeight,0);
gameField.drawGameField(gl);
drawInterface(gl);
比所有屏幕移动
如果在
之后设置gameField.drawGameField(gl);
gl.glTranslatef(moveWidth,moveHeight,0);
drawInterface(gl);
比翻译不起作用,如果我改变位置(第一个drawInterface而不是gameField),而不是翻译也不起作用(
答案 0 :(得分:0)
可能在绘制UI之前没有重置/更新MODELVIEW矩阵。尝试调用gl.glLoadIdentity();在drawInterface(gl)之前;