gpt4 book ai didi

java - Android OpenGL ES 正交奇怪的长宽比

转载 作者:行者123 更新时间:2023-12-01 19:04:17 24 4
gpt4 key购买 nike

我对 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/

亲切的问候,大安

最佳答案

为什么要将宽度和高度硬编码为 glOrthof?您不应该使用传入的宽度和高度吗?

gl.glOrthof(0f, 宽度, 0f, 高度, -1f, 1f);

关于java - Android OpenGL ES 正交奇怪的长宽比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com