gpt4 book ai didi

java - 使用 OpenGL 替换 Canvas - Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:52 25 4
gpt4 key购买 nike

我正在尝试用更快的 opengl-es 表面替换我已经拥有的基于 Canvas 的渲染系统,但是,我似乎无法让 openGL 渲染器以充当 2d 场的方式符合,而不是透视图。

我当前的渲染器代码如下所示:

     @Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, width, 0.0f, height, 0.0f, 1.0f);

gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
gl.glEnable(GL10.GL_TEXTURE_2D);
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);

gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
gl.glShadeModel(GL10.GL_FLAT);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_TEXTURE_2D);

gl.glDisable(GL10.GL_DITHER);
gl.glDisable(GL10.GL_LIGHTING);

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
}

我应该如何设置渲染器以使平移变换与屏幕上的像素相匹配? (因此将 5 向右平移会将其移动 5 个像素)

最佳答案

请注意,在 openGL 中,Y 坐标是倒置的。否则一切都是一样的。
至于正确的标志,我建议您查看开源安卓游戏副本岛:http://code.google.com/p/replicaisland/

这是我在自己的代码中使用的内容:

public void onSurfaceChanged(GL10 gl, int width, int height) 
{
mViewWidth = width;
mViewHeight = height;

gl.glViewport(0, 0, mViewWidth, mViewHeight);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0);
}

public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
gl.glShadeModel(GL10.GL_FLAT);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

gl.glViewport(0, 0, mViewWidth, mViewHeight);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_TEXTURE_2D);

GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0);
}

其中 mViewWidthmViewHeight 是显示的大小。

关于java - 使用 OpenGL 替换 Canvas - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597323/

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