0
我正在爲Android(api 3)寫一個小程序,在黑屏上顯示一個白色的三角形。但是當我注意到將glTranslatef調用改爲glTranslatex(在onDrawFrame()方法中)時,我感到非常驚訝,這使我的三角形看不見!有人能解釋我發生了什麼嗎?如果我使用glTranslatex代替glTranslatef,我什麼都看不到!
這裏我呈示
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLU;
public class TheRenderer implements Renderer {
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0, 0, -6); // Here my problem
triangle.draw(gl);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
if (height == 0)
height = 1;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluPerspective(gl, 60.0f, (float) width/(float) height, 1, 10);
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
private GLSimple2DTriangle triangle = new GLSimple2DTriangle();
}
下面的代碼,三角
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.ShortBuffer;
import javax.microedition.khronos.opengles.GL10;
public class GLSimple2DTriangle {
public GLSimple2DTriangle(){
buildVerticesBuffer();
}
public void draw(GL10 gl){
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(COORDS_PER_VERTEX, GL10.GL_SHORT, 0, verticesBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, VERTICES_NUMBER);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
private void buildVerticesBuffer(){
final short vertices [] = {
+0, +1,
+1, -1,
-1, -1
};
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * SHORTS_SIZE_BYTES);
byteBuffer.order(ByteOrder.nativeOrder());
verticesBuffer = byteBuffer.asShortBuffer();
verticesBuffer.put(vertices);
verticesBuffer.rewind();
}
private ShortBuffer verticesBuffer;
private static final byte SHORTS_SIZE_BYTES = 2;
private static final byte COORDS_PER_VERTEX = 2;
private static final byte VERTICES_NUMBER = 3;
}
問候
非常感謝:)你認爲我應該使用浮點版本或定點版本,如果我想優化? – loloof64 2011-03-25 19:31:22