gpt4 book ai didi

Android OpenGL ES 纹理在某些三星设备的黑屏上显示

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:41 25 4
gpt4 key购买 nike

我最近在开发一个动态壁纸应用程序。在那里我发现我的 Android 动态壁纸有一个奇怪的问题。我使用我的 HTC Wildfire S、三星 Galaxy tab、摩托罗拉 Droid Millstone、三星 galaxy pop 来测试我的墙纸和模拟器,一切正常,但在三星手机上(三星 Galaxy S II 和三星 Galaxy Player 有这个症状)屏幕在初始启动时保持黑色。但是一旦我们转到设置屏幕并返回预览它的工作正常。在对这些手机进行一些调试后,我发现墙纸加载正确,但纹理不只是显示出来。我尝试搜索问题,但没有找到任何有用的信息。

我从 native 代码绑定(bind)纹理。在那里我使用 OPEN GL 库来绑定(bind)墙纸。我的 opengl 库初始化如下

 glEnable(GL_TEXTURE_2D);
glGenTextures(1, &textureConverted);
glBindTexture(GL_TEXTURE_2D,textureConverted);
//...and bind it to our array
__android_log_print(ANDROID_LOG_DEBUG,
"NDK initOpenGL()",
"binded texture"
);
glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
//Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE
glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S,
GL_CLAMP_TO_EDGE);
//GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T,
GL_CLAMP_TO_EDGE);
//GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, /* target */
0, /* level */
GL_RGBA, /* internal format */
textureWidth, /* width */
textureHeight, /* height */
0, /* border */
GL_RGBA, /* format */
GL_UNSIGNED_BYTE,/* type */
NULL);
//setup simple shading
glShadeModel(GL_FLAT);
//check_gl_error("glShademo_comdel");
glColor4x(0x10000, 0x10000, 0x10000, 0x10000);

在我的 drawFunction 中

 glClear(GL_COLOR_BUFFER_BIT);
int max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);
__android_log_print(ANDROID_LOG_DEBUG,
"NDK drawFrame()",
"GL_MAX_TEXTURE_SIZE: %d",
max);
glBindTexture(GL_TEXTURE_2D,textureConverted);
int rect[4] = {0, textureHeight, textureWidth, nTextureHeight};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, rect);

glTexSubImage2D(GL_TEXTURE_2D, /* target */
0, /* level */
0, /* xoffset */
0, /* yoffset */
textureWidth,
textureHeight,
GL_RGBA, /* format */
GL_UNSIGNED_BYTE, /* type */
pFrameConverted->data[0]);
glDrawTexiOES(0, 0, 0, drawWidth, drawHeight); //drawWidth is th screenwidth and drawheight is the screenheight

为什么这在三星手机上不起作用?

最佳答案

我解决了这个问题。都是在opengl库中发起的。当我添加 glViewport(0, 0, screenWidth, screenHeight); 这行代码时,错误被修复了。现在我的 opengl 应用程序呈现所有设备。谢谢你们。

关于Android OpenGL ES 纹理在某些三星设备的黑屏上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310098/

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