android opengl es 纹理 不同设备 白色,Android OpenGL ES纹理在一些三星设备的黑色屏幕上显示...

我最近在一个动态壁纸应用程序工作。在这我发现我的Android动态壁纸有一个奇怪的问题。我使用我的HTC野火S,三星银河标签,摩托罗拉Droid磨石,三星银河流行音乐测试我的壁纸与模拟器一起工作正常,但在三星手机(三星Galaxy S II和三星Galaxy播放器有症状)屏幕在初始发射时保持黑色。但是,一旦我们转到设置屏幕并返回预览其工作正常。经过一些调试与这些手机后,我能够发现壁纸加载正确,但纹理不只是显示。我试图寻找这个问题,但没有发现任何有用的东西。

我从本地代码绑定纹理。在那里我使用OPEN GL库来绑定壁纸。我的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为什么不在三星手机上工作?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值