gpt4 book ai didi

java - 在 Android GLES 1.0 中渲染期间,对象会晃动。

转载 作者:行者123 更新时间:2023-12-01 14:10:20 25 4
gpt4 key购买 nike

我在修复游戏引擎中的错误时遇到了一些麻烦。

我的问题是,当我在场景中移动相机时,我看到平视显示器的元素在晃动。仅当我的相机通过手指滑动移动时才会出现错误。当我在更新方法中更改它的位置时,一切似乎都很好。

渲染方法(从主 Activity 中的 onDrawFrame() 调用):

public void drawScene(GL10 gl)
{
// Clear scene
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Move left top corner of camera to specified point
gl.glTranslatef(-camera.getX(), screenManager.getScreenHeight() - camera.getY(), 0f);
// Render all objects from the scene
root.renderObjects(gl);
// Fixed position for HUD elements
gl.glTranslatef(camera.getX(), -screenManager.getScreenHeight() + camera.getY(), 0.0f);
// Render hud to the screen
hud.renderObjects(gl);
// Get back to camera position
gl.glTranslatef(-camera.getX(), screenManager.getScreenHeight() - camera.getY(), 0.0f);
// Reset the matrix
gl.glLoadIdentity();
}

移动方法(从主 Activity 中的onTouchEvent调用):

public void onPointerMove(TouchPointer pointer, TouchPointer historicalPointer)
{
Point p = new Point(pointer.getRawTouchPoint());
p.subtract(historicalPointer.getRawTouchPoint());
camera.moveBy(p);
}

我认为这才是重要的代码。但我看不出有什么可以改变的。如果有人有任何想法请分享;)

最佳答案

我个人会将drawScene更改为

public void drawScene(GL10 gl)
{
// Clear scene
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Move left top corner of camera to specified point
gl.glTranslatef(-camera.getX(), screenManager.getScreenHeight() - camera.getY(), 0f);
// Render all objects from the scene
root.renderObjects(gl);
// Fixed position for HUD elements
gl.glLoadIdentity();
// Render hud to the screen
hud.renderObjects(gl);
gl.glLoadIdentity();
}

看看是否有帮助。问题可能是在渲染对象期间改变相机位置(例如从外部线程),甚至 float 不够精确。

关于java - 在 Android GLES 1.0 中渲染期间,对象会晃动。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564209/

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