在OpenGL android中设置背景

发布于 2024-12-29 12:52:00 字数 71 浏览 2 评论 0原文

我是 OpenGL 编程的新手。我制作了一个旋转立方体,在立方体的不同面上有不同的图像。我想为屏幕设置背景。任何帮助将不胜感激。

I am new to OpenGL programming.I have made a rotating cube with different images on different faces of the cube..i want to set background for the Screen..Any help will be appreciated..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷爱 2025-01-05 12:52:00

绘制一个覆盖整个视口的纹理四边形。为此,请将投影和模型视图切换为标识并禁用深度测试。由于投影和模型视图是同一顶点坐标 [-1 … 1] 将覆盖整个视口。在代码中:

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

GLfloat tex_quad[16] = {
/* x, y, s, t */
-1, -1, 0, 0,
 1, -1, 1, 0,
 1,  1, 1, 1,
-1,  1, 0, 1
};    

glVertexPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[0]);
glTexCoordPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[2]);

glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, background_image_texture_ID);

glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDisable(GL_TEXTURE_2D);

Draw a textured quad covering the whole viewport. To do this, switch the projection and modelview to identity and disable depth testing. With projection and modelview being identity vertex coordinates [-1 … 1] will cover the whole viewport. In code:

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

GLfloat tex_quad[16] = {
/* x, y, s, t */
-1, -1, 0, 0,
 1, -1, 1, 0,
 1,  1, 1, 1,
-1,  1, 0, 1
};    

glVertexPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[0]);
glTexCoordPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[2]);

glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, background_image_texture_ID);

glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDisable(GL_TEXTURE_2D);
剑心龙吟 2025-01-05 12:52:00

在我的项目中,创建 GLSurfaceView 的所有代码如下所示:

glSurfaceView = ...

glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glSurfaceView.setBackgroundResource(R.drawable.my_background);
glSurfaceView.setZOrderOnTop(true);

glSurfaceView.setRenderer(...);
glSurfaceView.setRenderMode(...);

注意:不要使用

_glSurfaceView.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.my_background));

我在上面浪费了几天时间。

并且不要打电话

gl.glClearColor(...)

进来

Renderer.onDrawFrame

In my project all code of creation GLSurfaceView looks like:

glSurfaceView = ...

glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glSurfaceView.setBackgroundResource(R.drawable.my_background);
glSurfaceView.setZOrderOnTop(true);

glSurfaceView.setRenderer(...);
glSurfaceView.setRenderMode(...);

NOTE: Do not use

_glSurfaceView.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.my_background));

I wasted a few days on it.

And do not call

gl.glClearColor(...)

in

Renderer.onDrawFrame
丢了幸福的猪 2025-01-05 12:52:00

我认为OP想把他的代码变成Android动态壁纸。

@Sumit:如果我是对的,你应该尽职尽责: http:// developer.android.com/resources/articles/live-wallpapers.html

如果我错了,那么请更准确地提出您的问题。

I think the OP wants to turn his code into an android live wallpaper.

@Sumit : if I'm right you should do your due dilligence: http://developer.android.com/resources/articles/live-wallpapers.html

If I'm wrong, then please be more precise in your question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文