我试图像时尚一样在网格中制作一系列点,但有一个点只出现在中间:I
private Point[][] sq = new Point[10][10];
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
for(int x = 0; x< 10 ; x++){
for(int y = 0; y< 10 ; y++){
sq[x][y] = new Point(x/10,y/10);
gl.glTranslatef(0.0f, x/10,-5.0f);
sq[x][y].draw(gl, 0, 1, 0);
}
}
最佳答案
假设 openGL ES 与标准 openGL 相同,您每次转换时都需要推送和弹出矩阵。否则,您将第一次平移 0,然后平移 0.1,然后平移 0.3,然后平移 0.6 等等...
但我假设你想翻译 0、0.1、0.2、0.3、0.4 等...
我也不确定为什么你只用 x 值沿 y 轴平移?我认为:
gl.glTranslatef(0.0f, x/10,-5.0f);
应该是这样的:
gl.glTranslatef(x/10.0f, y/10.0f, -5.0f);
我想你想要这样的东西:
for(int x = 0; x< 10 ; x++){
for(int y = 0; y< 10 ; y++){
sq[x][y] = new Point(x/10.0f, y/10.0f);
gl.glPushMatrix();
gl.glTranslatef(x/10.0f, y/10.0f, -5.0f);
sq[x][y].draw(gl, 0, 1, 0);
gl.glPopMatrix();
}
}
关于java - Android OpenGL 点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949800/