我对 OpenGL ES 很陌生,我正在尝试绘制一些带纹理的四边形。我想保持它是二维的,所以我决定使用正交投影。我真正想要的是绘制一个平面,它在每个设备上占用相同的相对屏幕空间,而不管屏幕分辨率如何。
我遇到的问题是正交投影的设置。纵横比是不正确的。一个正方形在高度上被绘制为一个矩形。到目前为止,这是我的代码:
渲染器:
// automatically looped by android
public void onDrawFrame(GL10 gl) {
// clear screen and buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Draw elements
for (GameObject object : level.getGameObjects()) {
gl.glScalef(0.2f, 0.2f, 0.0f);
object.draw(gl);
gl.glLoadIdentity();
}
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glOrthof(0f, 480f, 0f, 800f, -1f, 1f);
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Load all textures
for (GameObject object : level.getGameObjects()) {
object.bindTexture(gl);
}
// Initialize game canvas
gl.glEnable(GL10.GL_TEXTURE_2D); // Enable Texture Mapping
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black background
// enable texture transparency
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}
绘制方法与本教程完全相同:http: //obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/
亲切的问候,大安